Blame patches/jamvm-2.0.0_pre.local.patch

Lucio Andrés Illanes Albornoz 79c663
diff -Nru jamvm-2.0.0.orig/configure.ac jamvm-2.0.0/configure.ac
Lucio Andrés Illanes Albornoz 79c663
--- jamvm-2.0.0.orig/configure.ac       2014-06-10 22:33:37.000000000 +0200
Lucio Andrés Illanes Albornoz 79c663
+++ jamvm-2.0.0/configure.ac    2018-06-03 17:23:55.719602871 +0200
Lucio Andrés Illanes Albornoz 79c663
@@ -32,6 +32,7 @@
Lucio Andrés Illanes Albornoz 79c663
Lucio Andrés Illanes Albornoz 79c663
 case "$host" in
Lucio Andrés Illanes Albornoz 79c663
 i[[3456]]86-*-linux*) host_cpu=i386 host_os=linux ;;
Lucio Andrés Illanes Albornoz 79c663
+i[[3456]]86-*-midipix*) host_cpu=i386 host_os=midipix ;;
Lucio Andrés Illanes Albornoz 79c663
 i[[3456]]86-*-kfreebsd*) host_cpu=i386 host_os=linux ;;
Lucio Andrés Illanes Albornoz 79c663
 i[[3456]]86-*-darwin*) host_cpu=i386 host_os=darwin ;;
Lucio Andrés Illanes Albornoz 79c663
 arm*-*-darwin*) host_cpu=arm host_os=darwin libdl_needed=no ;;
Lucio Andrés Illanes Albornoz 79c663
@@ -39,6 +40,7 @@
Lucio Andrés Illanes Albornoz 79c663
 i386-*-freebsd*) host_os=bsd libdl_needed=no ;;
Lucio Andrés Illanes Albornoz 79c663
 i386-*-solaris*) host_cpu=x86 host_os=solaris ;;
Lucio Andrés Illanes Albornoz 79c663
 x86_64-*-linux*) host_os=linux ;;
Lucio Andrés Illanes Albornoz 79c663
+x86_64-*-midipix*) host_os=midipix ;;
Lucio Andrés Illanes Albornoz 79c663
 hppa*-*-linux*) host_cpu=parisc host_os=linux ;;
Lucio Andrés Illanes Albornoz 79c663
 mips*-*-linux*) host_cpu=mips host_os=linux ;;
Lucio Andrés Illanes Albornoz 79c663
 x86_64-*-openbsd*) host_os=bsd libdl_needed=no ;;
Lucio Andrés Illanes Albornoz 79c663
@@ -397,6 +399,7 @@
Lucio Andrés Illanes Albornoz 79c663
     src/arch/Makefile \
Lucio Andrés Illanes Albornoz 79c663
     src/os/Makefile \
Lucio Andrés Illanes Albornoz 79c663
     src/os/linux/Makefile \
Lucio Andrés Illanes Albornoz 79c663
+    src/os/midipix/Makefile \
Lucio Andrés Illanes Albornoz 79c663
     src/os/darwin/Makefile \
Lucio Andrés Illanes Albornoz 79c663
     src/os/bsd/Makefile \
Lucio Andrés Illanes Albornoz 79c663
     src/os/solaris/Makefile \
Lucio Andrés Illanes Albornoz 79c663
@@ -407,6 +410,8 @@
Lucio Andrés Illanes Albornoz 79c663
     src/os/linux/x86_64/Makefile \
Lucio Andrés Illanes Albornoz 79c663
     src/os/linux/parisc/Makefile \
Lucio Andrés Illanes Albornoz 79c663
     src/os/linux/mips/Makefile \
Lucio Andrés Illanes Albornoz 79c663
+    src/os/midipix/x86_64/Makefile \
Lucio Andrés Illanes Albornoz 79c663
+    src/os/midipix/i386/Makefile \
Lucio Andrés Illanes Albornoz 79c663
     src/os/darwin/i386/Makefile \
Lucio Andrés Illanes Albornoz 79c663
     src/os/darwin/arm/Makefile \
Lucio Andrés Illanes Albornoz 79c663
     src/os/darwin/powerpc/Makefile \
Lucio Andrés Illanes Albornoz 79c663
diff -Nru jamvm-2.0.0.orig/src/os/Makefile.am jamvm-2.0.0/src/os/Makefile.am
Lucio Andrés Illanes Albornoz 79c663
--- jamvm-2.0.0.orig/src/os/Makefile.am	2012-05-17 23:01:47.000000000 +0200
Lucio Andrés Illanes Albornoz 79c663
+++ jamvm-2.0.0/src/os/Makefile.am	2018-06-03 17:01:50.560924958 +0200
Lucio Andrés Illanes Albornoz 79c663
@@ -20,5 +20,5 @@
Lucio Andrés Illanes Albornoz 79c663
 ##
Lucio Andrés Illanes Albornoz 79c663
 
Lucio Andrés Illanes Albornoz 79c663
 SUBDIRS = @os@
Lucio Andrés Illanes Albornoz 79c663
-DIST_SUBDIRS = linux darwin bsd solaris
Lucio Andrés Illanes Albornoz 79c663
+DIST_SUBDIRS = linux darwin bsd solaris midipix
Lucio Andrés Illanes Albornoz 79c663
 
Lucio Andrés Illanes Albornoz 79c663
diff -Nru jamvm-2.0.0.orig/src/os/midipix/i386/dll_md.c jamvm-2.0.0/src/os/midipix/i386/dll_md.c
Lucio Andrés Illanes Albornoz 79c663
--- jamvm-2.0.0.orig/src/os/midipix/i386/dll_md.c	1970-01-01 01:00:00.000000000 +0100
Lucio Andrés Illanes Albornoz 79c663
+++ jamvm-2.0.0/src/os/midipix/i386/dll_md.c	2012-05-17 23:01:47.000000000 +0200
Lucio Andrés Illanes Albornoz 79c663
@@ -0,0 +1,117 @@
Lucio Andrés Illanes Albornoz 79c663
+/*
Lucio Andrés Illanes Albornoz 79c663
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
Lucio Andrés Illanes Albornoz 79c663
+ * Robert Lougher <rob@jamvm.org.uk>.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This file is part of JamVM.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This program is free software; you can redistribute it and/or
Lucio Andrés Illanes Albornoz 79c663
+ * modify it under the terms of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+ * as published by the Free Software Foundation; either version 2,
Lucio Andrés Illanes Albornoz 79c663
+ * or (at your option) any later version.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This program is distributed in the hope that it will be useful,
Lucio Andrés Illanes Albornoz 79c663
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
Lucio Andrés Illanes Albornoz 79c663
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Lucio Andrés Illanes Albornoz 79c663
+ * GNU General Public License for more details.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * You should have received a copy of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+ * along with this program; if not, write to the Free Software
Lucio Andrés Illanes Albornoz 79c663
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Lucio Andrés Illanes Albornoz 79c663
+ */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#include "jam.h"
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#ifndef USE_FFI
Lucio Andrés Illanes Albornoz 79c663
+#include <string.h>
Lucio Andrés Illanes Albornoz 79c663
+#include "sig.h"
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#define RET_VOID    0
Lucio Andrés Illanes Albornoz 79c663
+#define RET_DOUBLE  1
Lucio Andrés Illanes Albornoz 79c663
+#define RET_LONG    2
Lucio Andrés Illanes Albornoz 79c663
+#define RET_FLOAT   3
Lucio Andrés Illanes Albornoz 79c663
+#define RET_BYTE    4
Lucio Andrés Illanes Albornoz 79c663
+#define RET_CHAR    5
Lucio Andrés Illanes Albornoz 79c663
+#define RET_SHORT   6
Lucio Andrés Illanes Albornoz 79c663
+#define RET_DFLT    7
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+int nativeExtraArg(MethodBlock *mb) {
Lucio Andrés Illanes Albornoz 79c663
+    int len = strlen(mb->type);
Lucio Andrés Illanes Albornoz 79c663
+    if(mb->type[len-2] == ')')
Lucio Andrés Illanes Albornoz 79c663
+        switch(mb->type[len-1]) {
Lucio Andrés Illanes Albornoz 79c663
+            case 'V':
Lucio Andrés Illanes Albornoz 79c663
+                return RET_VOID;
Lucio Andrés Illanes Albornoz 79c663
+            case 'D':
Lucio Andrés Illanes Albornoz 79c663
+                return RET_DOUBLE;
Lucio Andrés Illanes Albornoz 79c663
+            case 'J':
Lucio Andrés Illanes Albornoz 79c663
+                return RET_LONG;
Lucio Andrés Illanes Albornoz 79c663
+            case 'F':
Lucio Andrés Illanes Albornoz 79c663
+                return RET_FLOAT;
Lucio Andrés Illanes Albornoz 79c663
+            case 'B':
Lucio Andrés Illanes Albornoz 79c663
+            case 'Z':
Lucio Andrés Illanes Albornoz 79c663
+                return RET_BYTE;
Lucio Andrés Illanes Albornoz 79c663
+            case 'C':
Lucio Andrés Illanes Albornoz 79c663
+                return RET_CHAR;
Lucio Andrés Illanes Albornoz 79c663
+            case 'S':
Lucio Andrés Illanes Albornoz 79c663
+                return RET_SHORT;
Lucio Andrés Illanes Albornoz 79c663
+        }
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return RET_DFLT;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+u4 *callJNIMethod(void *env, Class *class, char *sig, int ret_type,
Lucio Andrés Illanes Albornoz 79c663
+                  u4 *ostack, unsigned char *f, int args) {
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    int i;
Lucio Andrés Illanes Albornoz 79c663
+    u4 *sp;
Lucio Andrés Illanes Albornoz 79c663
+    u4 method_args[args + (class ? 2 : 1)];
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    asm volatile ("movl %%esp,%0" : "=m" (sp) :);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *sp++ = (u4)env;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    if(class)
Lucio Andrés Illanes Albornoz 79c663
+        *sp++ = (u4)class;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    for(i = 0; i < args; i++)
Lucio Andrés Illanes Albornoz 79c663
+        sp[i] = ostack[i];
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    switch(ret_type) {
Lucio Andrés Illanes Albornoz 79c663
+        case RET_VOID:
Lucio Andrés Illanes Albornoz 79c663
+            (*(void (*)())f)();
Lucio Andrés Illanes Albornoz 79c663
+            break;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+        case RET_DOUBLE:
Lucio Andrés Illanes Albornoz 79c663
+            *(double*)ostack = (*(double (*)())f)();
Lucio Andrés Illanes Albornoz 79c663
+            ostack += 2;
Lucio Andrés Illanes Albornoz 79c663
+            break;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+        case RET_LONG:
Lucio Andrés Illanes Albornoz 79c663
+            *(long long*)ostack = (*(long long (*)())f)();
Lucio Andrés Illanes Albornoz 79c663
+            ostack += 2;
Lucio Andrés Illanes Albornoz 79c663
+            break;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+        case RET_FLOAT:
Lucio Andrés Illanes Albornoz 79c663
+            *(float*)ostack = (*(float (*)())f)();
Lucio Andrés Illanes Albornoz 79c663
+            ostack++;
Lucio Andrés Illanes Albornoz 79c663
+            break;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+        case RET_BYTE:
Lucio Andrés Illanes Albornoz 79c663
+            *ostack++ = (*(signed char (*)())f)();
Lucio Andrés Illanes Albornoz 79c663
+            break;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+        case RET_CHAR:
Lucio Andrés Illanes Albornoz 79c663
+            *ostack++ = (*(unsigned short (*)())f)();
Lucio Andrés Illanes Albornoz 79c663
+            break;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+        case RET_SHORT:
Lucio Andrés Illanes Albornoz 79c663
+            *ostack++ = (*(signed short (*)())f)();
Lucio Andrés Illanes Albornoz 79c663
+            break;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+        default:
Lucio Andrés Illanes Albornoz 79c663
+            *ostack++ = (*(u4 (*)())f)();
Lucio Andrés Illanes Albornoz 79c663
+            break;
Lucio Andrés Illanes Albornoz 79c663
+    }
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+#endif
Lucio Andrés Illanes Albornoz 79c663
diff -Nru jamvm-2.0.0.orig/src/os/midipix/i386/init.c jamvm-2.0.0/src/os/midipix/i386/init.c
Lucio Andrés Illanes Albornoz 79c663
--- jamvm-2.0.0.orig/src/os/midipix/i386/init.c	1970-01-01 01:00:00.000000000 +0100
Lucio Andrés Illanes Albornoz 79c663
+++ jamvm-2.0.0/src/os/midipix/i386/init.c	2012-05-17 23:01:47.000000000 +0200
Lucio Andrés Illanes Albornoz 79c663
@@ -0,0 +1,38 @@
Lucio Andrés Illanes Albornoz 79c663
+/*
Lucio Andrés Illanes Albornoz 79c663
+ * Copyright (C) 2003, 2004, 2006, 2007
Lucio Andrés Illanes Albornoz 79c663
+ * Robert Lougher <rob@jamvm.org.uk>.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This file is part of JamVM.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This program is free software; you can redistribute it and/or
Lucio Andrés Illanes Albornoz 79c663
+ * modify it under the terms of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+ * as published by the Free Software Foundation; either version 2,
Lucio Andrés Illanes Albornoz 79c663
+ * or (at your option) any later version.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This program is distributed in the hope that it will be useful,
Lucio Andrés Illanes Albornoz 79c663
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
Lucio Andrés Illanes Albornoz 79c663
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Lucio Andrés Illanes Albornoz 79c663
+ * GNU General Public License for more details.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * You should have received a copy of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+ * along with this program; if not, write to the Free Software
Lucio Andrés Illanes Albornoz 79c663
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Lucio Andrés Illanes Albornoz 79c663
+ */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#include <fpu_control.h>
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* Change floating point precision to double (64-bit) from
Lucio Andrés Illanes Albornoz 79c663
+ * the extended (80-bit) Linux default. */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+void setDoublePrecision() {
Lucio Andrés Illanes Albornoz 79c663
+    fpu_control_t cw;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    _FPU_GETCW(cw);
Lucio Andrés Illanes Albornoz 79c663
+    cw &= ~_FPU_EXTENDED;
Lucio Andrés Illanes Albornoz 79c663
+    cw |= _FPU_DOUBLE;
Lucio Andrés Illanes Albornoz 79c663
+    _FPU_SETCW(cw);
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+void initialisePlatform() {
Lucio Andrés Illanes Albornoz 79c663
+    setDoublePrecision();
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
diff -Nru jamvm-2.0.0.orig/src/os/midipix/i386/jni-stubs.c jamvm-2.0.0/src/os/midipix/i386/jni-stubs.c
Lucio Andrés Illanes Albornoz 79c663
--- jamvm-2.0.0.orig/src/os/midipix/i386/jni-stubs.c	1970-01-01 01:00:00.000000000 +0100
Lucio Andrés Illanes Albornoz 79c663
+++ jamvm-2.0.0/src/os/midipix/i386/jni-stubs.c	2012-06-27 02:35:00.000000000 +0200
Lucio Andrés Illanes Albornoz 79c663
@@ -0,0 +1,927 @@
Lucio Andrés Illanes Albornoz 79c663
+/* Generated by gen-stubs.c from signature file sigs (profiling off) */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#include "jam.h"
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#ifdef USE_MD_STUBS
Lucio Andrés Illanes Albornoz 79c663
+#include "stubs.h"
Lucio Andrés Illanes Albornoz 79c663
+#include "properties.h"
Lucio Andrés Illanes Albornoz 79c663
+#include "jni-internal.h"
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+extern void *jni_env;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* Static signatures */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* ()I */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static__I(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(uintptr_t (*)(void*, void*))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* ()J */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static__J(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *(int64_t*)ostack = (*(int64_t (*)(void*, void*))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 2;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* ()L */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static__L(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (uintptr_t)REF_TO_OBJ((*(uintptr_t (*)(void*, void*))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class));
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* ()V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static__V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (I)B */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_I_B(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(int8_t (*)(void*, void*, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[0]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (I)F */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_I_F(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *((float*)ostack + IS_BE64) = (*(float (*)(void*, void*, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[0]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (I)I */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_I_I(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(uintptr_t (*)(void*, void*, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[0]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (I)L */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_I_L(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (uintptr_t)REF_TO_OBJ((*(uintptr_t (*)(void*, void*, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[0]));
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (J)D */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_J_D(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *(double*)ostack = (*(double (*)(void*, void*, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 2;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (J)I */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_J_I(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(uintptr_t (*)(void*, void*, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (J)J */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_J_J(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *(int64_t*)ostack = (*(int64_t (*)(void*, void*, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 2;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (J)L */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_J_L(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (uintptr_t)REF_TO_OBJ((*(uintptr_t (*)(void*, void*, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0]));
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (J)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_J_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JI)I */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JI_I(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(uintptr_t (*)(void*, void*, int64_t, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[2]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JI)J */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JI_J(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *(int64_t*)ostack = (*(int64_t (*)(void*, void*, int64_t, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[2]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 2;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JI)L */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JI_L(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (uintptr_t)REF_TO_OBJ((*(uintptr_t (*)(void*, void*, int64_t, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[2]));
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JI)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JI_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[2]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJ)B */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JJ_B(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(int8_t (*)(void*, void*, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[2]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJ)D */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JJ_D(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *(double*)ostack = (*(double (*)(void*, void*, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[2]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 2;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJ)I */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JJ_I(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(uintptr_t (*)(void*, void*, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[2]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJ)J */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JJ_J(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *(int64_t*)ostack = (*(int64_t (*)(void*, void*, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[2]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 2;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJ)L */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JJ_L(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (uintptr_t)REF_TO_OBJ((*(uintptr_t (*)(void*, void*, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[2]));
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJ)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JJ_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[2]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJI)L */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JJI_L(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (uintptr_t)REF_TO_OBJ((*(uintptr_t (*)(void*, void*, int64_t, int64_t, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[2],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[4]));
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJI)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JJI_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t, int64_t, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[2],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[4]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJJI)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JJJI_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t, int64_t, int64_t, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[2],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[4],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[6]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJJJ)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JJJJ_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t, int64_t, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[2],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[4],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[6]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJJJI)I */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JJJJI_I(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(uintptr_t (*)(void*, void*, int64_t, int64_t, int64_t, int64_t, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[2],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[4],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[6],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[8]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJJJJJ)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JJJJJJ_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[2],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[4],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[6],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[8],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[10]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJJJJJJJJI)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JJJJJJJJJI_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[2],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[4],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[6],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[8],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[10],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[12],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[14],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[16],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[18]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJJJJJJJJJJJ)I */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *static_JJJJJJJJJJJJ_I(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(uintptr_t (*)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	class,
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[2],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[4],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[6],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[8],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[10],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[12],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[14],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[16],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[18],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[20],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[22]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* Non-static signatures */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* ()B */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *__B(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(int8_t (*)(void*, void*))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* ()I */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *__I(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(uintptr_t (*)(void*, void*))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* ()J */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *__J(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *(int64_t*)ostack = (*(int64_t (*)(void*, void*))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 2;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* ()L */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *__L(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (uintptr_t)REF_TO_OBJ((*(uintptr_t (*)(void*, void*))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0]));
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* ()V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *__V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (I)B */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_I_B(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(int8_t (*)(void*, void*, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[1]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (I)I */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_I_I(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(uintptr_t (*)(void*, void*, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[1]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (I)J */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_I_J(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *(int64_t*)ostack = (*(int64_t (*)(void*, void*, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[1]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 2;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (I)L */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_I_L(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (uintptr_t)REF_TO_OBJ((*(uintptr_t (*)(void*, void*, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[1]));
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (I)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_I_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[1]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (J)B */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_J_B(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(int8_t (*)(void*, void*, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (J)J */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_J_J(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *(int64_t*)ostack = (*(int64_t (*)(void*, void*, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 2;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (J)L */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_J_L(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (uintptr_t)REF_TO_OBJ((*(uintptr_t (*)(void*, void*, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1]));
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (J)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_J_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JI)I */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_JI_I(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(uintptr_t (*)(void*, void*, int64_t, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[3]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JI)J */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_JI_J(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *(int64_t*)ostack = (*(int64_t (*)(void*, void*, int64_t, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[3]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 2;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JI)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_JI_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[3]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJ)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_JJ_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[3]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJI)I */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_JJI_I(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(uintptr_t (*)(void*, void*, int64_t, int64_t, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[3],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[5]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJI)L */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_JJI_L(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (uintptr_t)REF_TO_OBJ((*(uintptr_t (*)(void*, void*, int64_t, int64_t, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[3],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[5]));
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJJ)I */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_JJJ_I(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (*(uintptr_t (*)(void*, void*, int64_t, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[3],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[5]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJJ)J */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_JJJ_J(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *(int64_t*)ostack = (*(int64_t (*)(void*, void*, int64_t, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[3],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[5]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 2;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJJ)L */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_JJJ_L(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *ostack = (uintptr_t)REF_TO_OBJ((*(uintptr_t (*)(void*, void*, int64_t, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[3],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[5]));
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 1;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJJ)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_JJJ_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[3],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[5]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJJJ)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_JJJJ_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t, int64_t, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[3],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[5],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[7]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJJJJ)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_JJJJJ_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[3],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[5],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[7],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[9]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJJJJJI)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_JJJJJJI_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, uintptr_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[3],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[5],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[7],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[9],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[11],
Lucio Andrés Illanes Albornoz 79c663
+	*(uintptr_t *)&ostack[13]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* (JJJJJJJJJ)V */
Lucio Andrés Illanes Albornoz 79c663
+static uintptr_t *_JJJJJJJJJ_V(Class *class, MethodBlock *mb, uintptr_t *ostack) {
Lucio Andrés Illanes Albornoz 79c663
+    if(!initJNILrefs())
Lucio Andrés Illanes Albornoz 79c663
+        return NULL;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    (*(void (*)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t))mb->code) (
Lucio Andrés Illanes Albornoz 79c663
+	&jni_env,
Lucio Andrés Illanes Albornoz 79c663
+	(void*)ostack[0],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[1],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[3],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[5],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[7],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[9],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[11],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[13],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[15],
Lucio Andrés Illanes Albornoz 79c663
+	*(int64_t *)&ostack[17]);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return ostack + 0;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+JNIStub jni_static_stubs[] = {
Lucio Andrés Illanes Albornoz 79c663
+    {"()I", static__I},
Lucio Andrés Illanes Albornoz 79c663
+    {"()J", static__J},
Lucio Andrés Illanes Albornoz 79c663
+    {"()L", static__L},
Lucio Andrés Illanes Albornoz 79c663
+    {"()V", static__V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(I)B", static_I_B},
Lucio Andrés Illanes Albornoz 79c663
+    {"(I)F", static_I_F},
Lucio Andrés Illanes Albornoz 79c663
+    {"(I)I", static_I_I},
Lucio Andrés Illanes Albornoz 79c663
+    {"(I)L", static_I_L},
Lucio Andrés Illanes Albornoz 79c663
+    {"(J)D", static_J_D},
Lucio Andrés Illanes Albornoz 79c663
+    {"(J)I", static_J_I},
Lucio Andrés Illanes Albornoz 79c663
+    {"(J)J", static_J_J},
Lucio Andrés Illanes Albornoz 79c663
+    {"(J)L", static_J_L},
Lucio Andrés Illanes Albornoz 79c663
+    {"(J)V", static_J_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JI)I", static_JI_I},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JI)J", static_JI_J},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JI)L", static_JI_L},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JI)V", static_JI_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJ)B", static_JJ_B},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJ)D", static_JJ_D},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJ)I", static_JJ_I},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJ)J", static_JJ_J},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJ)L", static_JJ_L},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJ)V", static_JJ_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJI)L", static_JJI_L},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJI)V", static_JJI_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJJI)V", static_JJJI_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJJJ)V", static_JJJJ_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJJJI)I", static_JJJJI_I},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJJJJJ)V", static_JJJJJJ_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJJJJJJJJI)V", static_JJJJJJJJJI_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJJJJJJJJJJJ)I", static_JJJJJJJJJJJJ_I},
Lucio Andrés Illanes Albornoz 79c663
+    {NULL, NULL}
Lucio Andrés Illanes Albornoz 79c663
+};
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+JNIStub jni_stubs[] = {
Lucio Andrés Illanes Albornoz 79c663
+    {"()B", __B},
Lucio Andrés Illanes Albornoz 79c663
+    {"()I", __I},
Lucio Andrés Illanes Albornoz 79c663
+    {"()J", __J},
Lucio Andrés Illanes Albornoz 79c663
+    {"()L", __L},
Lucio Andrés Illanes Albornoz 79c663
+    {"()V", __V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(I)B", _I_B},
Lucio Andrés Illanes Albornoz 79c663
+    {"(I)I", _I_I},
Lucio Andrés Illanes Albornoz 79c663
+    {"(I)J", _I_J},
Lucio Andrés Illanes Albornoz 79c663
+    {"(I)L", _I_L},
Lucio Andrés Illanes Albornoz 79c663
+    {"(I)V", _I_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(J)B", _J_B},
Lucio Andrés Illanes Albornoz 79c663
+    {"(J)J", _J_J},
Lucio Andrés Illanes Albornoz 79c663
+    {"(J)L", _J_L},
Lucio Andrés Illanes Albornoz 79c663
+    {"(J)V", _J_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JI)I", _JI_I},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JI)J", _JI_J},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JI)V", _JI_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJ)V", _JJ_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJI)I", _JJI_I},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJI)L", _JJI_L},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJJ)I", _JJJ_I},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJJ)J", _JJJ_J},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJJ)L", _JJJ_L},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJJ)V", _JJJ_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJJJ)V", _JJJJ_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJJJJ)V", _JJJJJ_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJJJJJI)V", _JJJJJJI_V},
Lucio Andrés Illanes Albornoz 79c663
+    {"(JJJJJJJJJ)V", _JJJJJJJJJ_V},
Lucio Andrés Illanes Albornoz 79c663
+    {NULL, NULL}
Lucio Andrés Illanes Albornoz 79c663
+};
Lucio Andrés Illanes Albornoz 79c663
+#endif
Lucio Andrés Illanes Albornoz 79c663
diff -Nru jamvm-2.0.0.orig/src/os/midipix/i386/Makefile.am jamvm-2.0.0/src/os/midipix/i386/Makefile.am
Lucio Andrés Illanes Albornoz 79c663
--- jamvm-2.0.0.orig/src/os/midipix/i386/Makefile.am	1970-01-01 01:00:00.000000000 +0100
Lucio Andrés Illanes Albornoz 79c663
+++ jamvm-2.0.0/src/os/midipix/i386/Makefile.am	2012-05-17 23:01:47.000000000 +0200
Lucio Andrés Illanes Albornoz 79c663
@@ -0,0 +1,25 @@
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+## Copyright (C) 2003, 2004, 2005, 2006, 2007, 2010
Lucio Andrés Illanes Albornoz 79c663
+## Robert Lougher <rob@jamvm.org.uk>.
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+## This file is part of JamVM.
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+## This program is free software; you can redistribute it and/or
Lucio Andrés Illanes Albornoz 79c663
+## modify it under the terms of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+## as published by the Free Software Foundation; either version 2,
Lucio Andrés Illanes Albornoz 79c663
+## or (at your option) any later version.
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+## This program is distributed in the hope that it will be useful,
Lucio Andrés Illanes Albornoz 79c663
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
Lucio Andrés Illanes Albornoz 79c663
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Lucio Andrés Illanes Albornoz 79c663
+## GNU General Public License for more details.
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+## You should have received a copy of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+## along with this program; if not, write to the Free Software
Lucio Andrés Illanes Albornoz 79c663
+## Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+noinst_LTLIBRARIES = libnative.la
Lucio Andrés Illanes Albornoz 79c663
+libnative_la_SOURCES = init.c dll_md.c stubs_md.c jni-stubs.c
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src
Lucio Andrés Illanes Albornoz 79c663
diff -Nru jamvm-2.0.0.orig/src/os/midipix/i386/stubs_md.c jamvm-2.0.0/src/os/midipix/i386/stubs_md.c
Lucio Andrés Illanes Albornoz 79c663
--- jamvm-2.0.0.orig/src/os/midipix/i386/stubs_md.c	1970-01-01 01:00:00.000000000 +0100
Lucio Andrés Illanes Albornoz 79c663
+++ jamvm-2.0.0/src/os/midipix/i386/stubs_md.c	2012-06-27 02:35:00.000000000 +0200
Lucio Andrés Illanes Albornoz 79c663
@@ -0,0 +1,63 @@
Lucio Andrés Illanes Albornoz 79c663
+/*
Lucio Andrés Illanes Albornoz 79c663
+ * Copyright (C) 2010, 2012 Robert Lougher <rob@jamvm.org.uk>.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This file is part of JamVM.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This program is free software; you can redistribute it and/or
Lucio Andrés Illanes Albornoz 79c663
+ * modify it under the terms of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+ * as published by the Free Software Foundation; either version 2,
Lucio Andrés Illanes Albornoz 79c663
+ * or (at your option) any later version.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This program is distributed in the hope that it will be useful,
Lucio Andrés Illanes Albornoz 79c663
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
Lucio Andrés Illanes Albornoz 79c663
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Lucio Andrés Illanes Albornoz 79c663
+ * GNU General Public License for more details.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * You should have received a copy of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+ * along with this program; if not, write to the Free Software
Lucio Andrés Illanes Albornoz 79c663
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Lucio Andrés Illanes Albornoz 79c663
+ */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#ifndef GEN_STUBS_INC
Lucio Andrés Illanes Albornoz 79c663
+#include "jam.h"
Lucio Andrés Illanes Albornoz 79c663
+#endif
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#if defined(GEN_STUBS_INC) || defined(USE_MD_STUBS)
Lucio Andrés Illanes Albornoz 79c663
+#include <string.h>
Lucio Andrés Illanes Albornoz 79c663
+#include "sig.h"
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+char *convertSig2Simple(char *sig) {
Lucio Andrés Illanes Albornoz 79c663
+    char *simple_sig, *simple_pntr;
Lucio Andrés Illanes Albornoz 79c663
+    int count = 0;
Lucio Andrés Illanes Albornoz 79c663
+    int i;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    SCAN_SIG(sig, count+=2, count++);
Lucio Andrés Illanes Albornoz 79c663
+    simple_sig = simple_pntr = sysMalloc((count + 1)/2 + 4);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *simple_pntr++ = '(';
Lucio Andrés Illanes Albornoz 79c663
+    for(i = 0; i < count/2; i++)
Lucio Andrés Illanes Albornoz 79c663
+        *simple_pntr++ = 'J';
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    if(count&0x1)
Lucio Andrés Illanes Albornoz 79c663
+        *simple_pntr++ = 'I';
Lucio Andrés Illanes Albornoz 79c663
+    *simple_pntr++ = ')';
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    switch(*sig) {
Lucio Andrés Illanes Albornoz 79c663
+        case 'Z':
Lucio Andrés Illanes Albornoz 79c663
+            *simple_pntr++ = 'B';
Lucio Andrés Illanes Albornoz 79c663
+            break;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+        case '[':
Lucio Andrés Illanes Albornoz 79c663
+            *simple_pntr++ = 'L';
Lucio Andrés Illanes Albornoz 79c663
+            break;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+        default:
Lucio Andrés Illanes Albornoz 79c663
+            *simple_pntr++ = *sig;
Lucio Andrés Illanes Albornoz 79c663
+            break;
Lucio Andrés Illanes Albornoz 79c663
+    }
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    *simple_pntr = '\0';
Lucio Andrés Illanes Albornoz 79c663
+    return simple_sig;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+#endif
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
diff -Nru jamvm-2.0.0.orig/src/os/midipix/Makefile.am jamvm-2.0.0/src/os/midipix/Makefile.am
Lucio Andrés Illanes Albornoz 79c663
--- jamvm-2.0.0.orig/src/os/midipix/Makefile.am	1970-01-01 01:00:00.000000000 +0100
Lucio Andrés Illanes Albornoz 79c663
+++ jamvm-2.0.0/src/os/midipix/Makefile.am	2012-05-17 23:01:47.000000000 +0200
Lucio Andrés Illanes Albornoz 79c663
@@ -0,0 +1,28 @@
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+## Copyright (C) 2003, 2004, 2005, 2006, 2007
Lucio Andrés Illanes Albornoz 79c663
+## Robert Lougher <rob@jamvm.org.uk>.
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+## This file is part of JamVM.
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+## This program is free software; you can redistribute it and/or
Lucio Andrés Illanes Albornoz 79c663
+## modify it under the terms of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+## as published by the Free Software Foundation; either version 2,
Lucio Andrés Illanes Albornoz 79c663
+## or (at your option) any later version.
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+## This program is distributed in the hope that it will be useful,
Lucio Andrés Illanes Albornoz 79c663
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
Lucio Andrés Illanes Albornoz 79c663
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Lucio Andrés Illanes Albornoz 79c663
+## GNU General Public License for more details.
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+## You should have received a copy of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+## along with this program; if not, write to the Free Software
Lucio Andrés Illanes Albornoz 79c663
+## Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+SUBDIRS = @arch@
Lucio Andrés Illanes Albornoz 79c663
+DIST_SUBDIRS = i386 x86_64
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+noinst_LTLIBRARIES = libos.la
Lucio Andrés Illanes Albornoz 79c663
+libos_la_SOURCES = os.c
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+AM_CPPFLAGS = -I$(top_builddir)/src
Lucio Andrés Illanes Albornoz 79c663
diff -Nru jamvm-2.0.0.orig/src/os/midipix/os.c jamvm-2.0.0/src/os/midipix/os.c
Lucio Andrés Illanes Albornoz 79c663
--- jamvm-2.0.0.orig/src/os/midipix/os.c	1970-01-01 01:00:00.000000000 +0100
Lucio Andrés Illanes Albornoz 79c663
+++ jamvm-2.0.0/src/os/midipix/os.c	2014-02-03 20:37:36.000000000 +0100
Lucio Andrés Illanes Albornoz 79c663
@@ -0,0 +1,108 @@
Lucio Andrés Illanes Albornoz 79c663
+/*
Lucio Andrés Illanes Albornoz 79c663
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2014
Lucio Andrés Illanes Albornoz 79c663
+ * Robert Lougher <rob@jamvm.org.uk>.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This file is part of JamVM.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This program is free software; you can redistribute it and/or
Lucio Andrés Illanes Albornoz 79c663
+ * modify it under the terms of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+ * as published by the Free Software Foundation; either version 2,
Lucio Andrés Illanes Albornoz 79c663
+ * or (at your option) any later version.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This program is distributed in the hope that it will be useful,
Lucio Andrés Illanes Albornoz 79c663
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
Lucio Andrés Illanes Albornoz 79c663
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Lucio Andrés Illanes Albornoz 79c663
+ * GNU General Public License for more details.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * You should have received a copy of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+ * along with this program; if not, write to the Free Software
Lucio Andrés Illanes Albornoz 79c663
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Lucio Andrés Illanes Albornoz 79c663
+ */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#include <stdio.h>
Lucio Andrés Illanes Albornoz 79c663
+#include <string.h>
Lucio Andrés Illanes Albornoz 79c663
+#include <stdlib.h>
Lucio Andrés Illanes Albornoz 79c663
+#include <unistd.h>
Lucio Andrés Illanes Albornoz 79c663
+#include <sys/sysinfo.h>
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#define __USE_GNU
Lucio Andrés Illanes Albornoz 79c663
+#include <dlfcn.h>
Lucio Andrés Illanes Albornoz 79c663
+#include <pthread.h>
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#include "../../jam.h"
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+long long nativePhysicalMemory() {
Lucio Andrés Illanes Albornoz 79c663
+    /* Long longs are used here because with PAE, a 32-bit
Lucio Andrés Illanes Albornoz 79c663
+       machine can have more than 4GB of physical memory */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    long long num_pages = sysconf(_SC_PHYS_PAGES);
Lucio Andrés Illanes Albornoz 79c663
+    long long page_size = sysconf(_SC_PAGESIZE);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return num_pages * page_size;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+void *nativeStackBase() {
Lucio Andrés Illanes Albornoz 79c663
+#ifdef __UCLIBC__
Lucio Andrés Illanes Albornoz 79c663
+    return NULL;
Lucio Andrés Illanes Albornoz 79c663
+#else
Lucio Andrés Illanes Albornoz 79c663
+    pthread_attr_t attr;
Lucio Andrés Illanes Albornoz 79c663
+    void *addr;
Lucio Andrés Illanes Albornoz 79c663
+    size_t size;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    pthread_getattr_np(pthread_self(), &attr);
Lucio Andrés Illanes Albornoz 79c663
+    pthread_attr_getstack(&attr, &addr, &size);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return addr+size;
Lucio Andrés Illanes Albornoz 79c663
+#endif
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+int nativeAvailableProcessors() {
Lucio Andrés Illanes Albornoz 79c663
+#ifdef __UCLIBC__
Lucio Andrés Illanes Albornoz 79c663
+    return 1;
Lucio Andrés Illanes Albornoz 79c663
+#else
Lucio Andrés Illanes Albornoz 79c663
+    return get_nprocs();
Lucio Andrés Illanes Albornoz 79c663
+#endif
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+char *nativeLibError() {
Lucio Andrés Illanes Albornoz 79c663
+    return dlerror();
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+char *nativeLibPath() {
Lucio Andrés Illanes Albornoz 79c663
+    return getenv("LD_LIBRARY_PATH");
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+void *nativeLibOpen(char *path) {
Lucio Andrés Illanes Albornoz 79c663
+    return dlopen(path, RTLD_LAZY);
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+void nativeLibClose(void *handle) {
Lucio Andrés Illanes Albornoz 79c663
+    dlclose(handle);
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+void *nativeLibSym(void *handle, char *symbol) {
Lucio Andrés Illanes Albornoz 79c663
+    return dlsym(handle, symbol);
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+char *nativeLibMapName(char *name) {
Lucio Andrés Illanes Albornoz 79c663
+   char *buff = sysMalloc(strlen(name) + sizeof("lib.so") + 1);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+   sprintf(buff, "lib%s.so", name);
Lucio Andrés Illanes Albornoz 79c663
+   return buff;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+char *nativeJVMPath() {
Lucio Andrés Illanes Albornoz 79c663
+    Dl_info info;
Lucio Andrés Illanes Albornoz 79c663
+    char *path;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    if(dladdr(nativeJVMPath, &info) == 0) {
Lucio Andrés Illanes Albornoz 79c663
+        printf("Error: dladdr failed.  Aborting VM\n");
Lucio Andrés Illanes Albornoz 79c663
+        exitVM(1);
Lucio Andrés Illanes Albornoz 79c663
+    }
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    path = sysMalloc(strlen(info.dli_fname) + 1);
Lucio Andrés Illanes Albornoz 79c663
+    strcpy(path, info.dli_fname);
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    return path;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
diff -Nru jamvm-2.0.0.orig/src/os/midipix/x86_64/callNative.S jamvm-2.0.0/src/os/midipix/x86_64/callNative.S
Lucio Andrés Illanes Albornoz 79c663
--- jamvm-2.0.0.orig/src/os/midipix/x86_64/callNative.S	1970-01-01 01:00:00.000000000 +0100
Lucio Andrés Illanes Albornoz 79c663
+++ jamvm-2.0.0/src/os/midipix/x86_64/callNative.S	2018-06-03 16:40:48.062473407 +0200
Lucio Andrés Illanes Albornoz 79c663
@@ -0,0 +1,269 @@
Lucio Andrés Illanes Albornoz 79c663
+/*
Lucio Andrés Illanes Albornoz 79c663
+ * Copyright (C) 2008, 2009 Robert Lougher <rob@jamvm.org.uk>.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This file is part of JamVM.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This program is free software; you can redistribute it and/or
Lucio Andrés Illanes Albornoz 79c663
+ * modify it under the terms of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+ * as published by the Free Software Foundation; either version 2,
Lucio Andrés Illanes Albornoz 79c663
+ * or (at your option) any later version.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This program is distributed in the hope that it will be useful,
Lucio Andrés Illanes Albornoz 79c663
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
Lucio Andrés Illanes Albornoz 79c663
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Lucio Andrés Illanes Albornoz 79c663
+ * GNU General Public License for more details.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * You should have received a copy of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+ * along with this program; if not, write to the Free Software
Lucio Andrés Illanes Albornoz 79c663
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Lucio Andrés Illanes Albornoz 79c663
+ */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#include  "config.h"
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#ifndef USE_FFI
Lucio Andrés Illanes Albornoz 79c663
+.text
Lucio Andrés Illanes Albornoz 79c663
+.align  2
Lucio Andrés Illanes Albornoz 79c663
+.global callJNIMethod
Lucio Andrés Illanes Albornoz 79c663
+.type   callJNIMethod,function
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/*
Lucio Andrés Illanes Albornoz 79c663
+ * Arguments passed in:
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * %rdi JNIEnv
Lucio Andrés Illanes Albornoz 79c663
+ * %rsi class or NULL
Lucio Andrés Illanes Albornoz 79c663
+ * %rdx sig
Lucio Andrés Illanes Albornoz 79c663
+ * %rcx extra arg
Lucio Andrés Illanes Albornoz 79c663
+ * %r8  ostack
Lucio Andrés Illanes Albornoz 79c663
+ * %r9  function pntr
Lucio Andrés Illanes Albornoz 79c663
+ */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+callJNIMethod:
Lucio Andrés Illanes Albornoz 79c663
+    pushq   %rbp
Lucio Andrés Illanes Albornoz 79c663
+    movq    %rsp, %rbp
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    pushq   %r8
Lucio Andrés Illanes Albornoz 79c663
+    pushq   %r9
Lucio Andrés Illanes Albornoz 79c663
+    pushq   %rbx
Lucio Andrés Illanes Albornoz 79c663
+    pushq   %r12
Lucio Andrés Illanes Albornoz 79c663
+    pushq   %r14
Lucio Andrés Illanes Albornoz 79c663
+    pushq   %r15
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    testq   %rsi, %rsi
Lucio Andrés Illanes Albornoz 79c663
+    jne     alloc_space
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    movq    (%r8), %rsi
Lucio Andrés Illanes Albornoz 79c663
+    addq    $8, %r8
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+alloc_space:
Lucio Andrés Illanes Albornoz 79c663
+    subq    %rcx, %rsp
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* Setup argument registers:
Lucio Andrés Illanes Albornoz 79c663
+ * rdx, rcx, r8, r9
Lucio Andrés Illanes Albornoz 79c663
+ * xmm0 - xmm7
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * local register usage:
Lucio Andrés Illanes Albornoz 79c663
+ *  r10 = int reg count
Lucio Andrés Illanes Albornoz 79c663
+ *  r11 = double handler
Lucio Andrés Illanes Albornoz 79c663
+ *  r12 = float handler
Lucio Andrés Illanes Albornoz 79c663
+ *  r14 = sig pntr
Lucio Andrés Illanes Albornoz 79c663
+ *  r15 = stack pntr
Lucio Andrés Illanes Albornoz 79c663
+ *  rbx = ostack pntr
Lucio Andrés Illanes Albornoz 79c663
+ */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    leaq    double_regs-10(%rip), %r11
Lucio Andrés Illanes Albornoz 79c663
+    leaq    float_regs-10(%rip), %r12
Lucio Andrés Illanes Albornoz 79c663
+    leaq    1(%rdx), %r14
Lucio Andrés Illanes Albornoz 79c663
+    movq    %rsp, %r15
Lucio Andrés Illanes Albornoz 79c663
+    xorq    %r10, %r10
Lucio Andrés Illanes Albornoz 79c663
+    movq    %r8, %rbx
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+next:
Lucio Andrés Illanes Albornoz 79c663
+    movzbq  (%r14), %rax
Lucio Andrés Illanes Albornoz 79c663
+    incq    %r14
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $41, %rax                /* ')' */
Lucio Andrés Illanes Albornoz 79c663
+    je      done
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $68, %rax                /* 'D' */
Lucio Andrés Illanes Albornoz 79c663
+    je      double
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $70, %rax                /* 'F' */
Lucio Andrés Illanes Albornoz 79c663
+    je      float
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $74, %rax                /* 'J' */
Lucio Andrés Illanes Albornoz 79c663
+    je      long
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+skip_brackets:
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $91, %rax                /* '[' */
Lucio Andrés Illanes Albornoz 79c663
+    jne     check_ref
Lucio Andrés Illanes Albornoz 79c663
+    movzbq  (%r14), %rax
Lucio Andrés Illanes Albornoz 79c663
+    incq    %r14
Lucio Andrés Illanes Albornoz 79c663
+    jmp     skip_brackets
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+check_ref:
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $76, %rax                /* 'L' */
Lucio Andrés Illanes Albornoz 79c663
+    jne     int
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+skip_ref:
Lucio Andrés Illanes Albornoz 79c663
+    movzbq  (%r14), %rax
Lucio Andrés Illanes Albornoz 79c663
+    incq    %r14
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $59, %rax                /* ';' */
Lucio Andrés Illanes Albornoz 79c663
+    jne     skip_ref
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+int:
Lucio Andrés Illanes Albornoz 79c663
+    movq    (%rbx), %rax
Lucio Andrés Illanes Albornoz 79c663
+    addq    $8, %rbx
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+check_regs:
Lucio Andrés Illanes Albornoz 79c663
+    incq    %r10
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $2, %r10
Lucio Andrés Illanes Albornoz 79c663
+    jg      check_4
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    cmovneq %rax, %rdx
Lucio Andrés Illanes Albornoz 79c663
+    cmoveq  %rax, %rcx
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+check_4:
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $4, %r10
Lucio Andrés Illanes Albornoz 79c663
+    jg      stack_push
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    cmovneq %rax, %r8
Lucio Andrés Illanes Albornoz 79c663
+    cmoveq  %rax, %r9
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+stack_push:
Lucio Andrés Illanes Albornoz 79c663
+    movq    %rax, (%r15)
Lucio Andrés Illanes Albornoz 79c663
+    addq    $8, %r15
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+long:
Lucio Andrés Illanes Albornoz 79c663
+    movq    (%rbx), %rax
Lucio Andrés Illanes Albornoz 79c663
+    addq    $16, %rbx
Lucio Andrés Illanes Albornoz 79c663
+    jmp     check_regs
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+double:
Lucio Andrés Illanes Albornoz 79c663
+    addq    $10, %r11
Lucio Andrés Illanes Albornoz 79c663
+    addq    $10, %r12
Lucio Andrés Illanes Albornoz 79c663
+    addq    $16, %rbx
Lucio Andrés Illanes Albornoz 79c663
+    jmp     *%r11
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+double_regs:
Lucio Andrés Illanes Albornoz 79c663
+    movsd   -16(%rbx), %xmm0
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movsd   -16(%rbx), %xmm1
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movsd   -16(%rbx), %xmm2
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movsd   -16(%rbx), %xmm3
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movsd   -16(%rbx), %xmm4
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movsd   -16(%rbx), %xmm5
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movsd   -16(%rbx), %xmm6
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movsd   -16(%rbx), %xmm7
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movq    -16(%rbx), %rax
Lucio Andrés Illanes Albornoz 79c663
+    subq    $10, %r11
Lucio Andrés Illanes Albornoz 79c663
+    subq    $10, %r12
Lucio Andrés Illanes Albornoz 79c663
+    jmp     stack_push
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+float:
Lucio Andrés Illanes Albornoz 79c663
+    addq    $10, %r11
Lucio Andrés Illanes Albornoz 79c663
+    addq    $10, %r12
Lucio Andrés Illanes Albornoz 79c663
+    addq    $8, %rbx
Lucio Andrés Illanes Albornoz 79c663
+    jmp     *%r12
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+float_regs:
Lucio Andrés Illanes Albornoz 79c663
+    movss   -8(%rbx), %xmm0
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movss   -8(%rbx), %xmm1
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movss   -8(%rbx), %xmm2
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movss   -8(%rbx), %xmm3
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movss   -8(%rbx), %xmm4
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movss   -8(%rbx), %xmm5
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movss   -8(%rbx), %xmm6
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movss   -8(%rbx), %xmm7
Lucio Andrés Illanes Albornoz 79c663
+    jmp     next
Lucio Andrés Illanes Albornoz 79c663
+    movl    -8(%rbx), %eax
Lucio Andrés Illanes Albornoz 79c663
+    subq    $10, %r11
Lucio Andrés Illanes Albornoz 79c663
+    subq    $10, %r12
Lucio Andrés Illanes Albornoz 79c663
+    jmp     stack_push
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+done:
Lucio Andrés Illanes Albornoz 79c663
+    /* Arguments all setup --
Lucio Andrés Illanes Albornoz 79c663
+       call the native method */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    callq   *-16(%rbp)
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    /* Get back ostack for return value */
Lucio Andrés Illanes Albornoz 79c663
+    movq    -8(%rbp), %rcx
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    /* Handle return type */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    movzbq  (%r14), %rbx
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $86, %rbx                /* 'V' */
Lucio Andrés Illanes Albornoz 79c663
+    je      return
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $76, %rbx                /* 'L' */
Lucio Andrés Illanes Albornoz 79c663
+    je      int_ret
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $91, %rbx                /* '[' */
Lucio Andrés Illanes Albornoz 79c663
+    je      int_ret
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $73, %rbx                /* 'I' */
Lucio Andrés Illanes Albornoz 79c663
+    je      int_ret
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $68, %rbx                /* 'D' */
Lucio Andrés Illanes Albornoz 79c663
+    je      double_ret
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $70, %rbx                /* 'F' */
Lucio Andrés Illanes Albornoz 79c663
+    je      float_ret
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $74, %rbx                /* 'J' */
Lucio Andrés Illanes Albornoz 79c663
+    je      long_ret
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $67, %rbx                /* 'C' */
Lucio Andrés Illanes Albornoz 79c663
+    je      char_ret
Lucio Andrés Illanes Albornoz 79c663
+    cmpq    $83, %rbx                /* 'S' */
Lucio Andrés Illanes Albornoz 79c663
+    je      short_ret
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    /* remaining types Z and B */
Lucio Andrés Illanes Albornoz 79c663
+    movsbq  %al, %rax
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+int_ret:
Lucio Andrés Illanes Albornoz 79c663
+    movq    %rax, (%rcx)
Lucio Andrés Illanes Albornoz 79c663
+    addq    $8, %rcx
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+return:
Lucio Andrés Illanes Albornoz 79c663
+    movq    -24(%rbp), %rbx
Lucio Andrés Illanes Albornoz 79c663
+    movq    -32(%rbp), %r12
Lucio Andrés Illanes Albornoz 79c663
+    movq    -40(%rbp), %r14
Lucio Andrés Illanes Albornoz 79c663
+    movq    -48(%rbp), %r15
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    movq    %rbp, %rsp
Lucio Andrés Illanes Albornoz 79c663
+    popq    %rbp
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    movq    %rcx, %rax
Lucio Andrés Illanes Albornoz 79c663
+    retq
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+char_ret:
Lucio Andrés Illanes Albornoz 79c663
+    movzwq  %ax, %rax
Lucio Andrés Illanes Albornoz 79c663
+    jmp     int_ret
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+short_ret:
Lucio Andrés Illanes Albornoz 79c663
+    movswq  %ax, %rax
Lucio Andrés Illanes Albornoz 79c663
+    jmp     int_ret
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+long_ret:
Lucio Andrés Illanes Albornoz 79c663
+    movq    %rax, (%rcx)
Lucio Andrés Illanes Albornoz 79c663
+    addq    $16, %rcx
Lucio Andrés Illanes Albornoz 79c663
+    jmp     return
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+double_ret:
Lucio Andrés Illanes Albornoz 79c663
+    movsd   %xmm0, (%rcx)
Lucio Andrés Illanes Albornoz 79c663
+    addq    $16, %rcx
Lucio Andrés Illanes Albornoz 79c663
+    jmp     return
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+float_ret:
Lucio Andrés Illanes Albornoz 79c663
+    movss   %xmm0, (%rcx)
Lucio Andrés Illanes Albornoz 79c663
+    addq    $8, %rcx
Lucio Andrés Illanes Albornoz 79c663
+    jmp     return
Lucio Andrés Illanes Albornoz 79c663
+#endif
Lucio Andrés Illanes Albornoz 79c663
diff -Nru jamvm-2.0.0.orig/src/os/midipix/x86_64/dll_md.c jamvm-2.0.0/src/os/midipix/x86_64/dll_md.c
Lucio Andrés Illanes Albornoz 79c663
--- jamvm-2.0.0.orig/src/os/midipix/x86_64/dll_md.c	1970-01-01 01:00:00.000000000 +0100
Lucio Andrés Illanes Albornoz 79c663
+++ jamvm-2.0.0/src/os/midipix/x86_64/dll_md.c	2012-05-17 23:01:47.000000000 +0200
Lucio Andrés Illanes Albornoz 79c663
@@ -0,0 +1,57 @@
Lucio Andrés Illanes Albornoz 79c663
+/*
Lucio Andrés Illanes Albornoz 79c663
+ * Copyright (C) 2008, 2010 Robert Lougher <rob@jamvm.org.uk>.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This file is part of JamVM.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This program is free software; you can redistribute it and/or
Lucio Andrés Illanes Albornoz 79c663
+ * modify it under the terms of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+ * as published by the Free Software Foundation; either version 2,
Lucio Andrés Illanes Albornoz 79c663
+ * or (at your option) any later version.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This program is distributed in the hope that it will be useful,
Lucio Andrés Illanes Albornoz 79c663
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
Lucio Andrés Illanes Albornoz 79c663
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Lucio Andrés Illanes Albornoz 79c663
+ * GNU General Public License for more details.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * You should have received a copy of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+ * along with this program; if not, write to the Free Software
Lucio Andrés Illanes Albornoz 79c663
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Lucio Andrés Illanes Albornoz 79c663
+ */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#include "jam.h"
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#ifndef USE_FFI
Lucio Andrés Illanes Albornoz 79c663
+#include <stdio.h>
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+int nativeExtraArg(MethodBlock *mb) {
Lucio Andrés Illanes Albornoz 79c663
+    char *sig = mb->type;
Lucio Andrés Illanes Albornoz 79c663
+    int stack_space;
Lucio Andrés Illanes Albornoz 79c663
+    int iargs = 0;
Lucio Andrés Illanes Albornoz 79c663
+    int fargs = 0;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    while(*++sig != ')')
Lucio Andrés Illanes Albornoz 79c663
+        switch(*sig) {
Lucio Andrés Illanes Albornoz 79c663
+            case 'D':
Lucio Andrés Illanes Albornoz 79c663
+            case 'F':
Lucio Andrés Illanes Albornoz 79c663
+                fargs++;
Lucio Andrés Illanes Albornoz 79c663
+                break;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+            default:
Lucio Andrés Illanes Albornoz 79c663
+                iargs++;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+                if(*sig == '[')
Lucio Andrés Illanes Albornoz 79c663
+                    while(*++sig == '[');
Lucio Andrés Illanes Albornoz 79c663
+                if(*sig == 'L')
Lucio Andrés Illanes Albornoz 79c663
+                    while(*++sig != ';');
Lucio Andrés Illanes Albornoz 79c663
+                break;
Lucio Andrés Illanes Albornoz 79c663
+        }
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    stack_space = ((iargs > 4 ? iargs - 4 : 0) +
Lucio Andrés Illanes Albornoz 79c663
+                   (fargs > 8 ? fargs - 8 : 0)) << 3;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    /* Ensure the stack remains 16 byte aligned.  As
Lucio Andrés Illanes Albornoz 79c663
+       callJNIMethod pushes an even number of registers
Lucio Andrés Illanes Albornoz 79c663
+       the extra space must also be even. */
Lucio Andrés Illanes Albornoz 79c663
+    return (stack_space + 15) & ~15;
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+#endif
Lucio Andrés Illanes Albornoz 79c663
diff -Nru jamvm-2.0.0.orig/src/os/midipix/x86_64/init.c jamvm-2.0.0/src/os/midipix/x86_64/init.c
Lucio Andrés Illanes Albornoz 79c663
--- jamvm-2.0.0.orig/src/os/midipix/x86_64/init.c	1970-01-01 01:00:00.000000000 +0100
Lucio Andrés Illanes Albornoz 79c663
+++ jamvm-2.0.0/src/os/midipix/x86_64/init.c	2012-05-17 23:01:47.000000000 +0200
Lucio Andrés Illanes Albornoz 79c663
@@ -0,0 +1,45 @@
Lucio Andrés Illanes Albornoz 79c663
+/*
Lucio Andrés Illanes Albornoz 79c663
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007
Lucio Andrés Illanes Albornoz 79c663
+ * Robert Lougher <rob@jamvm.org.uk>.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This file is part of JamVM.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This program is free software; you can redistribute it and/or
Lucio Andrés Illanes Albornoz 79c663
+ * modify it under the terms of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+ * as published by the Free Software Foundation; either version 2,
Lucio Andrés Illanes Albornoz 79c663
+ * or (at your option) any later version.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * This program is distributed in the hope that it will be useful,
Lucio Andrés Illanes Albornoz 79c663
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
Lucio Andrés Illanes Albornoz 79c663
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Lucio Andrés Illanes Albornoz 79c663
+ * GNU General Public License for more details.
Lucio Andrés Illanes Albornoz 79c663
+ *
Lucio Andrés Illanes Albornoz 79c663
+ * You should have received a copy of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+ * along with this program; if not, write to the Free Software
Lucio Andrés Illanes Albornoz 79c663
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Lucio Andrés Illanes Albornoz 79c663
+ */
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+#ifdef __linux__
Lucio Andrés Illanes Albornoz 79c663
+#include <fpu_control.h>
Lucio Andrés Illanes Albornoz 79c663
+#endif
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+/* Change the x87 FPU precision to double (64-bit) from the extended
Lucio Andrés Illanes Albornoz 79c663
+   (80-bit) Linux default.  Note, unlike on i386, my testcases pass
Lucio Andrés Illanes Albornoz 79c663
+   without this.  This is probably because gcc assumes and uses SSE
Lucio Andrés Illanes Albornoz 79c663
+   by default, not the x87 FPU.  However, keep it in to be safe.
Lucio Andrés Illanes Albornoz 79c663
+*/
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+void setDoublePrecision() {
Lucio Andrés Illanes Albornoz 79c663
+#ifdef __linux__
Lucio Andrés Illanes Albornoz 79c663
+    fpu_control_t cw;
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+    _FPU_GETCW(cw);
Lucio Andrés Illanes Albornoz 79c663
+    cw &= ~_FPU_EXTENDED;
Lucio Andrés Illanes Albornoz 79c663
+    cw |= _FPU_DOUBLE;
Lucio Andrés Illanes Albornoz 79c663
+    _FPU_SETCW(cw);
Lucio Andrés Illanes Albornoz 79c663
+#endif
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+void initialisePlatform() {
Lucio Andrés Illanes Albornoz 79c663
+    setDoublePrecision();
Lucio Andrés Illanes Albornoz 79c663
+}
Lucio Andrés Illanes Albornoz 79c663
diff -Nru jamvm-2.0.0.orig/src/os/midipix/x86_64/Makefile.am jamvm-2.0.0/src/os/midipix/x86_64/Makefile.am
Lucio Andrés Illanes Albornoz 79c663
--- jamvm-2.0.0.orig/src/os/midipix/x86_64/Makefile.am	1970-01-01 01:00:00.000000000 +0100
Lucio Andrés Illanes Albornoz 79c663
+++ jamvm-2.0.0/src/os/midipix/x86_64/Makefile.am	2012-05-17 23:01:47.000000000 +0200
Lucio Andrés Illanes Albornoz 79c663
@@ -0,0 +1,26 @@
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+## Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2010
Lucio Andrés Illanes Albornoz 79c663
+## Robert Lougher <rob@jamvm.org.uk>.
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+## This file is part of JamVM.
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+## This program is free software; you can redistribute it and/or
Lucio Andrés Illanes Albornoz 79c663
+## modify it under the terms of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+## as published by the Free Software Foundation; either version 2,
Lucio Andrés Illanes Albornoz 79c663
+## or (at your option) any later version.
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+## This program is distributed in the hope that it will be useful,
Lucio Andrés Illanes Albornoz 79c663
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
Lucio Andrés Illanes Albornoz 79c663
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Lucio Andrés Illanes Albornoz 79c663
+## GNU General Public License for more details.
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+## You should have received a copy of the GNU General Public License
Lucio Andrés Illanes Albornoz 79c663
+## along with this program; if not, write to the Free Software
Lucio Andrés Illanes Albornoz 79c663
+## Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Lucio Andrés Illanes Albornoz 79c663
+##
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+noinst_LTLIBRARIES = libnative.la
Lucio Andrés Illanes Albornoz 79c663
+libnative_la_SOURCES = init.c dll_md.c callNative.S
Lucio Andrés Illanes Albornoz 79c663
+
Lucio Andrés Illanes Albornoz 79c663
+AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src
Lucio Andrés Illanes Albornoz 79c663
+AM_CCASFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src