Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Libretro
SquirrelJME
Commits
9d51007d
Commit
9d51007d
authored
Jul 18, 2021
by
Stephanie Gawroriski
Browse files
Remove the old bootstrap, it is broken and incomplete anyway.
parent
e1f61725
Changes
56
Hide whitespace changes
Inline
Side-by-side
emulators/emulator-base/src/main/cpp/nativebinding.cpp
View file @
9d51007d
...
...
@@ -15,36 +15,34 @@
#include "cc_squirreljme_jvm_Assembly.h"
#include "squirreljme.h"
JNIEXPORT
jlong
JNICALL
longPack
(
JNIEnv
*
env
,
jclass
classy
,
jint
al
,
jint
ah
)
{
return
(((
jlong
)
al
)
&
UINT64_C
(
0xFFFFFFFF
))
|
((((
jlong
)
ah
)
&
UINT64_C
(
0xFFFFFFFF
))
<<
UINT64_C
(
32
));
}
JNIEXPORT
jint
JNICALL
longUnpackHigh
(
JNIEnv
*
env
,
jclass
classy
,
jlong
v
)
{
return
(
jint
)(
v
>>
UINT64_C
(
32
));
}
JNIEXPORT
jint
JNICALL
longUnpackLow
(
JNIEnv
*
env
,
jclass
classy
,
jlong
v
)
{
return
(
jint
)(
v
);
}
// Method handler for special functions
JNIEXPORT
void
JNICALL
restrictedFunction
(
JNIEnv
*
env
,
jclass
classy
);
// Assembly method mappings
static
const
JNINativeMethod
assemblyMethods
[]
=
{
{
"arrayLength"
,
"(
J
)I"
,
(
void
*
)
restrictedFunction
},
{
"arrayLength"
,
"(
I
)I"
,
(
void
*
)
restrictedFunction
},
{
"arrayLength"
,
"(Ljava/lang/Object;)I"
,
(
void
*
)
restrictedFunction
},
{
"arrayLengthSet"
,
"(JI)V"
,
(
void
*
)
restrictedFunction
},
{
"arrayLengthSet"
,
"(Ljava/lang/Object;I)V"
,
(
void
*
)
restrictedFunction
},
{
"atomicCompareGetAndSet"
,
"(IIJ)I"
,
(
void
*
)
restrictedFunction
},
{
"atomicDecrementAndGet"
,
"(J)I"
,
(
void
*
)
restrictedFunction
},
{
"atomicIncrement"
,
"(J)V"
,
(
void
*
)
restrictedFunction
},
{
"breakpoint"
,
"()V"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfBoolean"
,
"()Lcc/squirreljme/jvm/ClassInfo;"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfBooleanPointer"
,
"()J"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfByte"
,
"()Lcc/squirreljme/jvm/ClassInfo;"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfBytePointer"
,
"()J"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfCharacter"
,
"()Lcc/squirreljme/jvm/ClassInfo;"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfCharacterPointer"
,
"()J"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfDouble"
,
"()Lcc/squirreljme/jvm/ClassInfo;"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfDoublePointer"
,
"()J"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfFloat"
,
"()Lcc/squirreljme/jvm/ClassInfo;"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfFloatPointer"
,
"()J"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfInteger"
,
"()Lcc/squirreljme/jvm/ClassInfo;"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfIntegerPointer"
,
"()J"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfLong"
,
"()Lcc/squirreljme/jvm/ClassInfo;"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfLongPointer"
,
"()J"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfShort"
,
"()Lcc/squirreljme/jvm/ClassInfo;"
,
(
void
*
)
restrictedFunction
},
{
"classInfoOfShortPointer"
,
"()J"
,
(
void
*
)
restrictedFunction
},
{
"doublePack"
,
"(II)D"
,
(
void
*
)
restrictedFunction
},
{
"doubleToRawLongBits"
,
"(D)J"
,
(
void
*
)
restrictedFunction
},
{
"doubleUnpackHigh"
,
"(D)I"
,
(
void
*
)
restrictedFunction
},
...
...
@@ -52,50 +50,44 @@ static const JNINativeMethod assemblyMethods[] =
{
"exceptionHandle"
,
"()V"
,
(
void
*
)
restrictedFunction
},
{
"floatToRawIntBits"
,
"(F)I"
,
(
void
*
)
restrictedFunction
},
{
"intBitsToFloat"
,
"(I)F"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
JJ
)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
JJ
I)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
JJ
II)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
JJ
III)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
JJ
IIII)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
JJ
IIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
JJ
IIIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
JJ
IIIIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
JJ
IIIIIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
JJ
)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
JJ
I)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
JJ
II)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
JJ
III)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
JJ
IIII)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
JJ
IIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
JJ
IIIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
JJ
IIIIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
JJ
IIIIIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
JJ
)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
JJ
I)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
JJ
II)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
JJ
III)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
JJ
IIII)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
JJ
IIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
JJ
IIIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
JJ
IIIIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
JJ
IIIIIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
II
)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
II
I)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
II
II)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
II
III)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
II
IIII)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
II
IIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
II
IIIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
II
IIIIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"invoke"
,
"(
II
IIIIIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
II
)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
II
I)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
II
II)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
II
III)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
II
IIII)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
II
IIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
II
IIIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
II
IIIIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeV"
,
"(
II
IIIIIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
II
)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
II
I)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
II
II)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
II
III)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
II
IIII)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
II
IIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
II
IIIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
II
IIIIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"invokeVL"
,
"(
II
IIIIIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"longBitsToDouble"
,
"(J)D"
,
(
void
*
)
restrictedFunction
},
{
"longPack"
,
"(II)J"
,
(
void
*
)
restrictedFunction
},
{
"longUnpackHigh"
,
"(J)I"
,
(
void
*
)
restrictedFunction
},
{
"longUnpackLow"
,
"(J)I"
,
(
void
*
)
restrictedFunction
},
{
"longPack"
,
"(II)J"
,
(
void
*
)
longPack
},
{
"longUnpackHigh"
,
"(J)I"
,
(
void
*
)
longUnpackHigh
},
{
"longUnpackLow"
,
"(J)I"
,
(
void
*
)
longUnpackLow
},
{
"memReadByte"
,
"(JI)I"
,
(
void
*
)
restrictedFunction
},
{
"memReadInt"
,
"(JI)I"
,
(
void
*
)
restrictedFunction
},
{
"memReadJavaInt"
,
"(JI)I"
,
(
void
*
)
restrictedFunction
},
{
"memReadJavaLong"
,
"(JI)J"
,
(
void
*
)
restrictedFunction
},
{
"memReadJavaShort"
,
"(JI)I"
,
(
void
*
)
restrictedFunction
},
{
"memReadPointer"
,
"(JI)J"
,
(
void
*
)
restrictedFunction
},
{
"memReadLong"
,
"(JI)J"
,
(
void
*
)
restrictedFunction
},
{
"memReadShort"
,
"(JI)I"
,
(
void
*
)
restrictedFunction
},
{
"memWriteByte"
,
"(JII)V"
,
(
void
*
)
restrictedFunction
},
{
"memWriteInt"
,
"(JII)V"
,
(
void
*
)
restrictedFunction
},
{
"memWriteJavaInt"
,
"(JII)V"
,
(
void
*
)
restrictedFunction
},
{
"memWriteJavaLong"
,
"(JIJ)V"
,
(
void
*
)
restrictedFunction
},
{
"memWriteJavaShort"
,
"(JII)V"
,
(
void
*
)
restrictedFunction
},
{
"memWritePointer"
,
"(JIJ)V"
,
(
void
*
)
restrictedFunction
},
{
"memWriteLong"
,
"(JIJ)V"
,
(
void
*
)
restrictedFunction
},
{
"memWriteShort"
,
"(JII)V"
,
(
void
*
)
restrictedFunction
},
{
"monitorCountDecrementAndGetAtomic"
,
"(J)I"
,
(
void
*
)
restrictedFunction
},
{
"monitorCountDecrementAndGetAtomic"
,
"(Ljava/lang/Object;)I"
,
(
void
*
)
restrictedFunction
},
...
...
@@ -121,37 +113,23 @@ static const JNINativeMethod assemblyMethods[] =
{
"monitorOwnerSetAtomic"
,
"(JLjava/lang/Thread;)V"
,
(
void
*
)
restrictedFunction
},
{
"monitorOwnerSetAtomic"
,
"(Ljava/lang/Object;J)V"
,
(
void
*
)
restrictedFunction
},
{
"monitorOwnerSetAtomic"
,
"(Ljava/lang/Object;Ljava/lang/Thread;)V"
,
(
void
*
)
restrictedFunction
},
{
"objectGetClassInfo"
,
"(J)Lcc/squirreljme/jvm/ClassInfo;"
,
(
void
*
)
restrictedFunction
},
{
"objectGetClassInfo"
,
"(Ljava/lang/Object;)Lcc/squirreljme/jvm/ClassInfo;"
,
(
void
*
)
restrictedFunction
},
{
"objectGetClassInfoPointer"
,
"(J)J"
,
(
void
*
)
restrictedFunction
},
{
"objectGetClassInfoPointer"
,
"(Ljava/lang/Object;)J"
,
(
void
*
)
restrictedFunction
},
{
"objectSetClassInfo"
,
"(JJ)V"
,
(
void
*
)
restrictedFunction
},
{
"objectSetClassInfo"
,
"(Ljava/lang/Object;J)V"
,
(
void
*
)
restrictedFunction
},
{
"objectSetClassInfo"
,
"(JLcc/squirreljme/jvm/ClassInfo;)V"
,
(
void
*
)
restrictedFunction
},
{
"objectSetClassInfo"
,
"(Ljava/lang/Object;Lcc/squirreljme/jvm/ClassInfo;)V"
,
(
void
*
)
restrictedFunction
},
{
"objectToPointer"
,
"(Ljava/lang/Object;)J"
,
(
void
*
)
restrictedFunction
},
{
"objectToPointerRefQueue"
,
"(Ljava/lang/Object;)J"
,
(
void
*
)
restrictedFunction
},
{
"pointerToObject"
,
"(J)Ljava/lang/Object;"
,
(
void
*
)
restrictedFunction
},
{
"pointerToClassInfo"
,
"(J)Lcc/squirreljme/jvm/ClassInfo;"
,
(
void
*
)
restrictedFunction
},
{
"poolLoad"
,
"(JI)J"
,
(
void
*
)
restrictedFunction
},
{
"poolLoad"
,
"(Ljava/lang/Object;I)J"
,
(
void
*
)
restrictedFunction
},
{
"poolStore"
,
"(JIJ)V"
,
(
void
*
)
restrictedFunction
},
{
"poolStore"
,
"(Ljava/lang/Object;IJ)V"
,
(
void
*
)
restrictedFunction
},
{
"refCount"
,
"(J)V"
,
(
void
*
)
restrictedFunction
},
{
"objectToPointer"
,
"(Ljava/lang/Object;)I"
,
(
void
*
)
restrictedFunction
},
{
"objectToPointerRefQueue"
,
"(Ljava/lang/Object;)I"
,
(
void
*
)
restrictedFunction
},
{
"pointerToObject"
,
"(I)Ljava/lang/Object;"
,
(
void
*
)
restrictedFunction
},
{
"poolLoad"
,
"(II)I"
,
(
void
*
)
restrictedFunction
},
{
"poolLoad"
,
"(Ljava/lang/Object;I)I"
,
(
void
*
)
restrictedFunction
},
{
"refCount"
,
"(I)V"
,
(
void
*
)
restrictedFunction
},
{
"refCount"
,
"(Ljava/lang/Object;)V"
,
(
void
*
)
restrictedFunction
},
{
"refGetCount"
,
"(
J
)I"
,
(
void
*
)
restrictedFunction
},
{
"refGetCount"
,
"(
I
)I"
,
(
void
*
)
restrictedFunction
},
{
"refGetCount"
,
"(Ljava/lang/Object;)I"
,
(
void
*
)
restrictedFunction
},
{
"refSetCount"
,
"(
J
I)V"
,
(
void
*
)
restrictedFunction
},
{
"refSetCount"
,
"(
I
I)V"
,
(
void
*
)
restrictedFunction
},
{
"refSetCount"
,
"(Ljava/lang/Object;I)V"
,
(
void
*
)
restrictedFunction
},
{
"refUncount"
,
"(
J
)V"
,
(
void
*
)
restrictedFunction
},
{
"refUncount"
,
"(
I
)V"
,
(
void
*
)
restrictedFunction
},
{
"refUncount"
,
"(Ljava/lang/Object;)V"
,
(
void
*
)
restrictedFunction
},
{
"returnFrame"
,
"()V"
,
(
void
*
)
restrictedFunction
},
{
"returnFrame"
,
"(I)V"
,
(
void
*
)
restrictedFunction
},
{
"returnFrame"
,
"(II)V"
,
(
void
*
)
restrictedFunction
},
{
"returnFrameLong"
,
"(J)V"
,
(
void
*
)
restrictedFunction
},
{
"sizeOfBaseArray"
,
"()I"
,
(
void
*
)
restrictedFunction
},
{
"sizeOfBaseObject"
,
"()I"
,
(
void
*
)
restrictedFunction
},
{
"sizeOfPointer"
,
"()I"
,
(
void
*
)
restrictedFunction
},
{
"specialGetExceptionRegister"
,
"()Ljava/lang/Object;"
,
(
void
*
)
restrictedFunction
},
{
"specialGetExceptionRegisterThrowable"
,
"()Ljava/lang/Throwable;"
,
(
void
*
)
restrictedFunction
},
{
"specialGetExceptionRegisterPointer"
,
"()J"
,
(
void
*
)
restrictedFunction
},
...
...
@@ -159,73 +137,14 @@ static const JNINativeMethod assemblyMethods[] =
{
"specialGetPoolRegisterPointer"
,
"()J"
,
(
void
*
)
restrictedFunction
},
{
"specialGetReturnRegister"
,
"()I"
,
(
void
*
)
restrictedFunction
},
{
"specialGetReturnRegisterLong"
,
"()J"
,
(
void
*
)
restrictedFunction
},
{
"specialGetStaticFieldRegister"
,
"()J"
,
(
void
*
)
restrictedFunction
},
{
"specialGetThreadRegister"
,
"()Ljava/lang/Thread;"
,
(
void
*
)
restrictedFunction
},
{
"specialGetThreadRegisterPointer"
,
"()J"
,
(
void
*
)
restrictedFunction
},
{
"specialSetExceptionRegister"
,
"(J)V"
,
(
void
*
)
restrictedFunction
},
{
"specialSetExceptionRegister"
,
"(Ljava/lang/Object;)V"
,
(
void
*
)
restrictedFunction
},
{
"specialSetPoolRegister"
,
"(J)V"
,
(
void
*
)
restrictedFunction
},
{
"specialSetPoolRegister"
,
"(Ljava/lang/Object;)V"
,
(
void
*
)
restrictedFunction
},
{
"specialSetStaticFieldRegister"
,
"(J)V"
,
(
void
*
)
restrictedFunction
},
{
"specialSetThreadRegister"
,
"(J)V"
,
(
void
*
)
restrictedFunction
},
{
"specialSetThreadRegister"
,
"(Ljava/lang/Thread;)V"
,
(
void
*
)
restrictedFunction
},
// Un-Pure System Calls
{
"sysCall"
,
"(S)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCall"
,
"(SI)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCall"
,
"(SII)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCall"
,
"(SIII)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCall"
,
"(SIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCall"
,
"(SIIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCall"
,
"(SIIIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCall"
,
"(SIIIIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCall"
,
"(SIIIIIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCallV"
,
"(S)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallV"
,
"(SI)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallV"
,
"(SII)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallV"
,
"(SIII)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallV"
,
"(SIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallV"
,
"(SIIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallV"
,
"(SIIIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallV"
,
"(SIIIIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallV"
,
"(SIIIIIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallVL"
,
"(S)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallVL"
,
"(SI)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallVL"
,
"(SII)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallVL"
,
"(SIII)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallVL"
,
"(SIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallVL"
,
"(SIIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallVL"
,
"(SIIIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallVL"
,
"(SIIIIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallVL"
,
"(SIIIIIIII)J"
,
(
void
*
)
restrictedFunction
},
// Pure System Calls {"sysCallP", "(S)V", (void*)restrictedFunction},
{
"sysCallP"
,
"(SI)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCallP"
,
"(SII)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCallP"
,
"(SIII)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCallP"
,
"(SIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCallP"
,
"(SIIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCallP"
,
"(SIIIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCallP"
,
"(SIIIIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCallP"
,
"(SIIIIIIII)V"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPV"
,
"(S)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPV"
,
"(SI)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPV"
,
"(SII)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPV"
,
"(SIII)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPV"
,
"(SIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPV"
,
"(SIIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPV"
,
"(SIIIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPV"
,
"(SIIIIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPV"
,
"(SIIIIIIII)I"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPVL"
,
"(S)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPVL"
,
"(SI)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPVL"
,
"(SII)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPVL"
,
"(SIII)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPVL"
,
"(SIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPVL"
,
"(SIIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPVL"
,
"(SIIIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPVL"
,
"(SIIIIIII)J"
,
(
void
*
)
restrictedFunction
},
{
"sysCallPVL"
,
"(SIIIIIIII)J"
,
(
void
*
)
restrictedFunction
}
};
JNIEXPORT
jint
JNICALL
JNI_OnLoad
(
JavaVM
*
vm
,
void
*
reserved
)
...
...
emulators/springcoat-vm/src/main/java/cc/squirreljme/vm/springcoat/MLERuntime.java
View file @
9d51007d
...
...
@@ -12,11 +12,12 @@ package cc.squirreljme.vm.springcoat;
import
cc.squirreljme.jvm.mle.RuntimeShelf
;
import
cc.squirreljme.jvm.mle.constants.BuiltInEncodingType
;
import
cc.squirreljme.jvm.mle.constants.BuiltInLocaleType
;
import
cc.squirreljme.jvm.mle.constants.ByteOrderType
;
import
cc.squirreljme.jvm.mle.constants.MemoryProfileType
;
import
cc.squirreljme.jvm.mle.constants.VMDescriptionType
;
import
cc.squirreljme.jvm.mle.constants.VMStatisticType
;
import
cc.squirreljme.jvm.mle.constants.VMType
;
import
cc.squirreljme.runtime.cldc.SquirrelJME
;
import
cc.squirreljme.runtime.cldc.debug.Debugging
;
import
cc.squirreljme.runtime.cldc.lang.LineEndingUtils
;
import
cc.squirreljme.vm.springcoat.exceptions.SpringMLECallError
;
...
...
@@ -28,6 +29,21 @@ import cc.squirreljme.vm.springcoat.exceptions.SpringMLECallError;
public
enum
MLERuntime
implements
MLEFunction
{
/** {@link RuntimeShelf#byteOrder()}. */
BYTE_ORDER
(
"byteOrder:()I"
)
{
/**
* {@inheritDoc}
* @since 2021/02/09
*/
@Override
public
Object
handle
(
SpringThreadWorker
__thread
,
Object
...
__args
)
{
// SpringCoat is always big endian
return
ByteOrderType
.
BIG_ENDIAN
;
}
},
/** {@link RuntimeShelf#currentTimeMillis()}. */
CURRENT_TIME_MILLIS
(
"currentTimeMillis:()J"
)
{
...
...
@@ -134,6 +150,21 @@ public enum MLERuntime
}
},
/** {@link RuntimeShelf#memoryProfile()}. */
MEMORY_PROFILE
(
"memoryProfile:()I"
)
{
/**
* {@inheritDoc}
* @since 2021/02/19
*/
@Override
public
Object
handle
(
SpringThreadWorker
__thread
,
Object
...
__args
)
{
// No memory concerns
return
MemoryProfileType
.
NORMAL
;
}
},
/** {@link RuntimeShelf#nanoTime()}. */
NANO_TIME
(
"nanoTime:()J"
)
{
...
...
modules/cldc-compact/src/main/java/cc/squirreljme/jvm/Assembly.java
View file @
9d51007d
...
...
@@ -9,6 +9,8 @@
package
cc.squirreljme.jvm
;
import
cc.squirreljme.jvm.mle.brackets.TypeBracket
;
/**
* This class is used special by the compiler to transform all the various
* operations into regular instructions rather than method calls.
...
...
@@ -20,7 +22,7 @@ package cc.squirreljme.jvm;
*
* @since 2019/04/20
*/
@SuppressWarnings
(
"NewMethodNamingConvention"
)
@SuppressWarnings
(
{
"NewMethodNamingConvention"
,
"OverlyComplexClass"
}
)
public
final
class
Assembly
{
/**
...
...
@@ -40,7 +42,7 @@ public final class Assembly
* an array.
* @since 2020/02/23
*/
public
static
native
int
arrayLength
(
long
__o
);
public
static
native
int
arrayLength
(
int
__o
);
/**
* Returns the array length of the given object.
...
...
@@ -52,24 +54,6 @@ public final class Assembly
*/
public
static
native
int
arrayLength
(
Object
__o
);
/**
* Sets the array length of an array.
*
* @param __o The object to set.
* @param __l The length to set.
* @since 2020/02/23
*/
public
static
native
void
arrayLengthSet
(
long
__o
,
int
__l
);
/**
* Sets the array length of an array.
*
* @param __o The object to set.
* @param __l The length to set.
* @since 2020/02/23
*/
public
static
native
void
arrayLengthSet
(
Object
__o
,
int
__l
);
/**
* Atomic comparison and set.
*
...
...
@@ -107,143 +91,15 @@ public final class Assembly
*/
public
static
native
void
breakpoint
();
/**
* Returns the class info pointer of {@code boolean}.
*
* @return The class info pointer.
* @since 2020/01/19
*/
public
static
native
ClassInfo
classInfoOfBoolean
();
/**
* Returns the class info pointer of {@code boolean}.
*
* @return The class info pointer.
* @since 2020/02/24
*/
public
static
native
long
classInfoOfBooleanPointer
();
/**
* Returns the class info pointer of {@code byte}.
*
* @return The class info pointer.
* @since 2020/01/19
*/
public
static
native
ClassInfo
classInfoOfByte
();
/**
* Returns the class info pointer of {@code byte}.
*
* @return The class info pointer.
* @since 2020/02/24
*/
public
static
native
long
classInfoOfBytePointer
();
/**
* Returns the class info pointer of {@code char}.
*
* @return The class info pointer.
* @since 2020/01/19
*/
public
static
native
ClassInfo
classInfoOfCharacter
();
/**
* Returns the class info pointer of {@code char}.
*
* @return The class info pointer.
* @since 2020/02/24
*/
public
static
native
long
classInfoOfCharacterPointer
();
/**
* Returns the class info pointer of {@code double}.
*
* @return The class info pointer.
* @since 2020/01/19
*/
public
static
native
ClassInfo
classInfoOfDouble
();
/**
* Returns the class info pointer of {@code double}.
*
* @return The class info pointer.
* @since 2020/02/24
*/
public
static
native
long
classInfoOfDoublePointer
();
/**
* Returns the class info pointer of {@code float}.
*
* @return The class info pointer.
* @since 2020/01/19
*/
public
static
native
ClassInfo
classInfoOfFloat
();
/**
* Returns the class info pointer of {@code float}.
*
* @return The class info pointer.
* @since 2020/02/24
*/
public
static
native
long
classInfoOfFloatPointer
();
/**
* Returns the class info pointer of {@code int}.
*
* @return The class info pointer.
* @since 2020/01/19
*/
public
static
native
ClassInfo
classInfoOfInteger
();
/**
* Returns the class info pointer of {@code int}.
*
* @return The class info pointer.
* @since 2020/02/24
*/
public
static
native
long
classInfoOfIntegerPointer
();
/**
* Returns the class info pointer of {@code long}.
*
* @return The class info pointer.
* @since 2020/01/19
*/
public
static
native
ClassInfo
classInfoOfLong
();
/**
* Returns the class info pointer of {@code long}.
*
* @return The class info pointer.
* @since 2020/02/24
*/
public
static
native
long
classInfoOfLongPointer
();
/**
* Returns the class info pointer of {@code short}.
*
* @return The class info pointer.
* @since 2020/01/19
*/
public
static
native
ClassInfo
classInfoOfShort
();
/**
* Returns the class info pointer of {@code short}.
*
* @return The class info pointer.
* @since 2020/02/24
*/
public
static
native
long
classInfoOfShortPointer
();
/**
* Packs the given two integers to a double value.
*
* @param __hi The high value.
* @param __lo The low value.
* @param __hi The high value.
* @return The double value.
* @since 2019/06/21
*/
public
static
native
double
doublePack
(
int
__
hi
,
int
__
lo
);
public
static
native
double
doublePack
(
int
__
lo
,
int
__
hi
);
/**
* Double to raw long bits.
...
...
@@ -304,7 +160,7 @@ public final class Assembly
* @param __pool The pool address to load.
* @since 2019/04/28
*/
public
static
native
void
invoke
(
long
__addr
,
long
__pool
);
public
static
native
void
invoke
(
int
__addr
,
int
__pool
);
/**
* Invoke method at pointer, with arguments.
...
...
@@ -314,7 +170,7 @@ public final class Assembly
* @param __a Argument.
* @since 2019/04/28
*/
public
static
native
void
invoke
(
long
__addr
,
long
__pool
,
int
__a
);
public
static
native
void
invoke
(
int
__addr
,
int
__pool
,
int
__a
);
/**
* Invoke method at pointer, with arguments.
...
...
@@ -325,7 +181,7 @@ public final class Assembly
* @param __b Argument.
* @since 2019/04/28
*/
public
static
native
void
invoke
(
long
__addr
,
long
__pool
,
int
__a
,
public
static
native
void
invoke
(
int
__addr
,
int
__pool
,
int
__a
,
int
__b
);
/**
...
...
@@ -338,7 +194,7 @@ public final class Assembly
* @param __c Argument.
* @since 2019/04/28
*/
public
static
native
void
invoke
(
long
__addr
,
long
__pool
,
int
__a
,
public
static
native
void
invoke
(
int
__addr
,
int
__pool
,
int
__a
,
int
__b
,
int
__c
);
/**
...
...
@@ -352,7 +208,7 @@ public final class Assembly
* @param __d Argument.
* @since 2019/04/28
*/
public
static
native
void
invoke
(
long
__addr
,
long
__pool
,
int
__a
,
public
static
native
void
invoke
(
int
__addr
,
int
__pool
,
int
__a
,
int
__b
,
int
__c
,
int
__d
);
/**
...
...
@@ -367,7 +223,7 @@ public final class Assembly
* @param __e Argument.
* @since 2019/04/28
*/
public
static
native
void
invoke
(
long
__addr
,
long
__pool
,
int
__a
,
public
static
native
void
invoke
(
int
__addr
,
int
__pool
,
int
__a
,
int
__b
,
int
__c
,
int
__d
,
int
__e
);
/**
...
...
@@ -383,7 +239,7 @@ public final class Assembly
* @param __f Argument.
* @since 2019/04/28
*/
public
static
native
void
invoke
(
long
__addr
,
long
__pool
,
int
__a
,
public
static
native
void
invoke
(
int
__addr
,
int
__pool
,
int
__a
,
int
__b
,
int
__c
,
int
__d
,
int
__e
,
int
__f
);
/**
...
...
@@ -400,7 +256,7 @@ public final class Assembly
* @param __g Argument.
* @since 2019/04/28
*/