|
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
|