Skip to content

Commit 3bd9ba2

Browse files
java for pyeos in progress
1 parent 39ef1a7 commit 3bd9ba2

File tree

16 files changed

+885
-233
lines changed

16 files changed

+885
-233
lines changed

Diff for: .gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
*.class
12
deps
23
bridge.go
34
_obj

Diff for: libraries/vm/vm_java/CMakeLists.txt

+12-12
Original file line numberDiff line numberDiff line change
@@ -19,29 +19,29 @@ set(RT_JAR_PATH "${RT_JAR_PATH}/../jre/lib/rt.jar")
1919
set(JAVA_LIB "$ENV{JAVA_HOME}/lib/server/libjvm.dylib")
2020

2121
add_custom_command(
22-
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/VMMain.h
23-
COMMAND javac -h ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/VMMain.java
24-
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/VMMain.java
22+
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/NativeInterface.h
23+
COMMAND javac -h ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/VMJava.java
24+
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/VMJava.java
2525
)
2626

2727
add_custom_command(
28-
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/VMMain.jar
29-
COMMAND jar cvfm ${CMAKE_CURRENT_BINARY_DIR}/VMMain.jar ${CMAKE_CURRENT_SOURCE_DIR}/manifest.txt ${CMAKE_CURRENT_BINARY_DIR}/*.class
30-
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/VMMain.class ${CMAKE_CURRENT_SOURCE_DIR}/manifest.txt
28+
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/VMJava.jar
29+
COMMAND jar cvfm ${CMAKE_CURRENT_BINARY_DIR}/VMJava.jar ${CMAKE_CURRENT_SOURCE_DIR}/manifest.txt ${CMAKE_CURRENT_BINARY_DIR}/*.class
30+
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/VMJava.class ${CMAKE_CURRENT_SOURCE_DIR}/manifest.txt
3131
)
3232

3333
add_custom_command(
34-
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/VMMain.class
35-
COMMAND javac -d ${CMAKE_CURRENT_BINARY_DIR} -source 1.6 -target 1.6 -bootclasspath ${RT_JAR_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/VMMain.java
36-
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/VMMain.java
34+
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/VMJava.class
35+
COMMAND javac -d ${CMAKE_CURRENT_BINARY_DIR} -source 1.6 -target 1.6 -bootclasspath ${RT_JAR_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/VMJava.java
36+
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/VMJava.java
3737
)
3838

3939
add_library(vm_java SHARED
4040
vm_java.cpp
41-
VMMain.cpp
41+
NativeInterface.cpp
4242
inspector.cpp
43-
${CMAKE_CURRENT_SOURCE_DIR}/VMMain.h
44-
${CMAKE_CURRENT_BINARY_DIR}/VMMain.jar
43+
${CMAKE_CURRENT_SOURCE_DIR}/NativeInterface.h
44+
${CMAKE_CURRENT_BINARY_DIR}/VMJava.jar
4545
)
4646

4747
target_link_libraries(vm_java PRIVATE eosiolib_native ${JAVA_LIB})
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "VMMain.h"
1+
#include "NativeInterface.h"
22
#include <stdio.h>
33
#include <string.h>
44
#include <eosiolib_native/vm_api.h>
@@ -8,18 +8,20 @@
88
* Method: sayHello
99
* Signature: ()V
1010
*/
11-
JNIEXPORT void JNICALL Java_VMMain_sayHello(JNIEnv *env, jobject jobj) {
11+
JNIEXPORT void JNICALL Java_NativeInterface_sayHello(JNIEnv *env, jclass jobj) {
1212
printf("++++++++++++++hello,world\n");
1313
}
1414

15-
JNIEXPORT jbyteArray JNICALL Java_VMMain_get_1code
16-
(JNIEnv *env, jobject o, jlong account) {
15+
JNIEXPORT jbyteArray JNICALL Java_NativeInterface_get_1code
16+
(JNIEnv *env, jclass o, jlong account) {
17+
printf("++++Java_NativeInterface_get_1code %llu %d\n", account, sizeof(jlong));
1718
if (get_vm_api()->get_code_type(account) != VM_TYPE_JAVA) {
1819
return NULL;
1920
}
2021
size_t len = 0;
2122
const char* code = get_vm_api()->get_code(account, &len);
22-
jbyteArray jarr = env->NewByteArray(10);
23+
printf("+++code size: %d \n", len);
24+
jbyteArray jarr = env->NewByteArray(len);
2325
env->SetByteArrayRegion(jarr, 0, len, (jbyte*)code);
2426
return jarr;
2527
}
@@ -29,8 +31,8 @@ JNIEXPORT jbyteArray JNICALL Java_VMMain_get_1code
2931
* Method: is_account
3032
* Signature: (J)Z
3133
*/
32-
JNIEXPORT jboolean JNICALL Java_VMMain_is_1account
33-
(JNIEnv *, jobject, jlong account){
34+
JNIEXPORT jboolean JNICALL Java_NativeInterface_is_1account
35+
(JNIEnv *, jclass, jlong account){
3436
return is_account((uint64_t)account);
3537
}
3638

@@ -39,23 +41,28 @@ JNIEXPORT jboolean JNICALL Java_VMMain_is_1account
3941
* Method: s2n
4042
* Signature: (Ljava/lang/String;)J
4143
*/
42-
JNIEXPORT jlong JNICALL Java_VMMain_s2n
43-
(JNIEnv *env, jobject o, jstring str){
44+
JNIEXPORT jlong JNICALL Java_NativeInterface_s2n
45+
(JNIEnv *env, jclass o, jstring str){
4446
jboolean isCopy = false;
4547
const char* _str = env->GetStringUTFChars(str, &isCopy);
4648
printf("+++++++++isCopy %d %s\n", isCopy, _str);
47-
return get_vm_api()->string_to_uint64(_str);
49+
uint64_t n = get_vm_api()->string_to_uint64(_str);
50+
if (isCopy) {
51+
env->ReleaseStringUTFChars(str, _str);
52+
}
53+
return (jlong)n;
4854
}
4955

5056
/*
5157
* Class: VMMain
5258
* Method: n2s
5359
* Signature: (J)Ljava/lang/String;
5460
*/
55-
JNIEXPORT jstring JNICALL Java_VMMain_n2s
56-
(JNIEnv *env, jobject o, jlong account){
61+
JNIEXPORT jstring JNICALL Java_NativeInterface_n2s
62+
(JNIEnv *env, jclass o, jlong account){
5763
char name[32];
5864
memset(name, 0, sizeof(name));
65+
printf("+++++Java_NativeInterface_n2s %llu\n", account);
5966
get_vm_api()->uint64_to_string(account, name, sizeof(name));
6067
return env->NewStringUTF(name);
6168
}
@@ -65,8 +72,8 @@ JNIEXPORT jstring JNICALL Java_VMMain_n2s
6572
* Method: action_data_size
6673
* Signature: ()I
6774
*/
68-
JNIEXPORT jint JNICALL Java_VMMain_action_1data_1size
69-
(JNIEnv *env, jobject o){
75+
JNIEXPORT jint JNICALL Java_NativeInterface_action_1data_1size
76+
(JNIEnv *env, jclass o){
7077
return action_data_size();
7178
}
7279

@@ -75,13 +82,13 @@ JNIEXPORT jint JNICALL Java_VMMain_action_1data_1size
7582
* Method: read_action_data
7683
* Signature: ()[B
7784
*/
78-
JNIEXPORT jbyteArray JNICALL Java_VMMain_read_1action_1data
79-
(JNIEnv *env, jobject){
85+
JNIEXPORT jbyteArray JNICALL Java_NativeInterface_read_1action_1data
86+
(JNIEnv *env, jclass){
8087
uint32_t size = action_data_size();
8188
char *buf = new char[size];
8289
read_action_data(buf, size);
8390

84-
jbyteArray jarr = env->NewByteArray(10);
91+
jbyteArray jarr = env->NewByteArray(size);
8592
env->SetByteArrayRegion(jarr, 0, size, (jbyte*) buf);
8693
delete[] buf;
8794
return jarr;
@@ -92,8 +99,8 @@ JNIEXPORT jbyteArray JNICALL Java_VMMain_read_1action_1data
9299
* Method: require_recipient
93100
* Signature: (J)V
94101
*/
95-
JNIEXPORT void JNICALL Java_VMMain_require_1recipient
96-
(JNIEnv *, jobject, jlong account){
102+
JNIEXPORT void JNICALL Java_NativeInterface_require_1recipient
103+
(JNIEnv *, jclass, jlong account){
97104
require_recipient(account);
98105
}
99106

@@ -102,8 +109,8 @@ JNIEXPORT void JNICALL Java_VMMain_require_1recipient
102109
* Method: require_auth
103110
* Signature: (J)V
104111
*/
105-
JNIEXPORT void JNICALL Java_VMMain_require_1auth
106-
(JNIEnv *, jobject, jlong account){
112+
JNIEXPORT void JNICALL Java_NativeInterface_require_1auth
113+
(JNIEnv *, jclass, jlong account){
107114
require_auth(account);
108115
}
109116

@@ -112,8 +119,8 @@ JNIEXPORT void JNICALL Java_VMMain_require_1auth
112119
* Method: db_store_i64
113120
* Signature: (JJJJ[B)I
114121
*/
115-
JNIEXPORT jint JNICALL Java_VMMain_db_1store_1i64
116-
(JNIEnv *env, jobject, jlong scope, jlong table_id, jlong payer, jlong id, jbyteArray jdata){
122+
JNIEXPORT jint JNICALL Java_NativeInterface_db_1store_1i64
123+
(JNIEnv *env, jclass, jlong scope, jlong table_id, jlong payer, jlong id, jbyteArray jdata){
117124

118125
jsize len = env->GetArrayLength(jdata);
119126
char* buf = new char[len];
@@ -129,8 +136,8 @@ JNIEXPORT jint JNICALL Java_VMMain_db_1store_1i64
129136
* Method: db_update_i64
130137
* Signature: (I[B)V
131138
*/
132-
JNIEXPORT void JNICALL Java_VMMain_db_1update_1i64
133-
(JNIEnv *env, jobject, jint itr, jlong payer, jbyteArray jdata){
139+
JNIEXPORT void JNICALL Java_NativeInterface_db_1update_1i64
140+
(JNIEnv *env, jclass, jint itr, jlong payer, jbyteArray jdata){
134141

135142
jsize len = env->GetArrayLength(jdata);
136143
char* buf = new char[len];
@@ -145,8 +152,8 @@ JNIEXPORT void JNICALL Java_VMMain_db_1update_1i64
145152
* Method: db_remove_i64
146153
* Signature: (I)V
147154
*/
148-
JNIEXPORT void JNICALL Java_VMMain_db_1remove_1i64
149-
(JNIEnv *, jobject, jint itr){
155+
JNIEXPORT void JNICALL Java_NativeInterface_db_1remove_1i64
156+
(JNIEnv *, jclass, jint itr){
150157
db_remove_i64(itr);
151158
}
152159

@@ -155,16 +162,16 @@ JNIEXPORT void JNICALL Java_VMMain_db_1remove_1i64
155162
* Method: db_get_i64
156163
* Signature: (I)[B
157164
*/
158-
JNIEXPORT jbyteArray JNICALL Java_VMMain_db_1get_1i64
159-
(JNIEnv *env, jobject o, jint itr){
165+
JNIEXPORT jbyteArray JNICALL Java_NativeInterface_db_1get_1i64
166+
(JNIEnv *env, jclass o, jint itr){
160167
int size = db_get_i64(itr, nullptr, 0);
161168
if (size == 0) {
162169
return NULL;
163170
}
164171
char *buf = new char[size];
165172
db_get_i64(itr, buf, size);
166173

167-
jbyteArray jarr = env->NewByteArray(10);
174+
jbyteArray jarr = env->NewByteArray(size);
168175
env->SetByteArrayRegion(jarr, 0, size, (jbyte*) buf);
169176
return jarr;
170177
}
@@ -174,8 +181,8 @@ JNIEXPORT jbyteArray JNICALL Java_VMMain_db_1get_1i64
174181
* Method: db_next_i64
175182
* Signature: (I)J
176183
*/
177-
JNIEXPORT jlong JNICALL Java_VMMain_db_1next_1i64
178-
(JNIEnv *, jobject, jint itr){
184+
JNIEXPORT jlong JNICALL Java_NativeInterface_db_1next_1i64
185+
(JNIEnv *, jclass, jint itr){
179186
uint64_t primary = 0;
180187
return db_next_i64(itr, &primary);
181188
}
@@ -185,8 +192,8 @@ JNIEXPORT jlong JNICALL Java_VMMain_db_1next_1i64
185192
* Method: db_previous_i64
186193
* Signature: (I)J
187194
*/
188-
JNIEXPORT jlong JNICALL Java_VMMain_db_1previous_1i64
189-
(JNIEnv *, jobject, jint itr){
195+
JNIEXPORT jlong JNICALL Java_NativeInterface_db_1previous_1i64
196+
(JNIEnv *, jclass, jint itr){
190197
uint64_t primary = 0;
191198
return db_previous_i64(itr, &primary);
192199
}
@@ -196,8 +203,8 @@ JNIEXPORT jlong JNICALL Java_VMMain_db_1previous_1i64
196203
* Method: db_find_i64
197204
* Signature: (JJJJ)I
198205
*/
199-
JNIEXPORT jint JNICALL Java_VMMain_db_1find_1i64
200-
(JNIEnv *, jobject, jlong code, jlong scope, jlong table_id, jlong id){
206+
JNIEXPORT jint JNICALL Java_NativeInterface_db_1find_1i64
207+
(JNIEnv *, jclass, jlong code, jlong scope, jlong table_id, jlong id){
201208
return db_find_i64(code, scope, table_id, id);
202209
}
203210

@@ -206,8 +213,8 @@ JNIEXPORT jint JNICALL Java_VMMain_db_1find_1i64
206213
* Method: db_lowerbound_i64
207214
* Signature: (JJJJ)I
208215
*/
209-
JNIEXPORT jint JNICALL Java_VMMain_db_1lowerbound_1i64
210-
(JNIEnv *, jobject, jlong code, jlong scope, jlong table_id, jlong id){
216+
JNIEXPORT jint JNICALL Java_NativeInterface_db_1lowerbound_1i64
217+
(JNIEnv *, jclass, jlong code, jlong scope, jlong table_id, jlong id){
211218
return db_lowerbound_i64(code, scope, table_id, id);
212219
}
213220

@@ -216,8 +223,8 @@ JNIEXPORT jint JNICALL Java_VMMain_db_1lowerbound_1i64
216223
* Method: db_upperbound_i64
217224
* Signature: (JJJJ)I
218225
*/
219-
JNIEXPORT jint JNICALL Java_VMMain_db_1upperbound_1i64
220-
(JNIEnv *, jobject, jlong code, jlong scope, jlong table_id, jlong id){
226+
JNIEXPORT jint JNICALL Java_NativeInterface_db_1upperbound_1i64
227+
(JNIEnv *, jclass, jlong code, jlong scope, jlong table_id, jlong id){
221228
return db_upperbound_i64(code, scope, table_id, id);
222229
}
223230

@@ -226,7 +233,7 @@ JNIEXPORT jint JNICALL Java_VMMain_db_1upperbound_1i64
226233
* Method: db_end_i64
227234
* Signature: ()I
228235
*/
229-
JNIEXPORT jint JNICALL Java_VMMain_db_1end_1i64
230-
(JNIEnv *, jobject, jlong code, jlong scope, jlong table_id){
236+
JNIEXPORT jint JNICALL Java_NativeInterface_db_1end_1i64
237+
(JNIEnv *, jclass, jlong code, jlong scope, jlong table_id){
231238
return db_end_i64(code, scope, table_id);
232239
}

0 commit comments

Comments
 (0)