Skip to content

Commit ae972aa

Browse files
Optimize ByteCodeTranslator by parallelizing class parsing and code generation.
* Parallelized file processing in `ByteCodeTranslator.execute` using `ExecutorService`. * Parallelized dependency updates and file writing in `Parser.writeOutput`. * Ensured thread safety in `Parser`, `ByteCodeClass`, and `BytecodeMethod` by using `ReentrantReadWriteLock` for shared resources (`classes`, `constantPool`, `arrayTypes`, `writableFields`, `virtualMethodsInvoked`) and synchronized methods where appropriate. * Fixed brittle test `BytecodeInstructionIntegrationTest` that relied on anonymous inner class index.
1 parent c1332b1 commit ae972aa

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

vm/ByteCodeTranslator/src/com/codename1/tools/translator/ByteCodeClass.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@
3030
import java.util.List;
3131
import java.util.Set;
3232
import java.util.TreeSet;
33+
import java.util.concurrent.locks.ReadWriteLock;
34+
import java.util.concurrent.locks.ReentrantReadWriteLock;
35+
import java.util.concurrent.locks.ReentrantLock;
3336

3437
/**
3538
* Parsed class file
@@ -1291,30 +1294,30 @@ public String generateCHeader() {
12911294
b.append(clsName);
12921295
b.append(";\n");
12931296

1294-
boolean c1 = false;
1295-
boolean c2 = false;
1296-
boolean c3 = false;
1297+
boolean _c1 = false;
1298+
boolean _c2 = false;
1299+
boolean _c3 = false;
12971300
arrayTypesLock.readLock().lock();
12981301
try {
1299-
c1 = arrayTypes.contains("1_" + clsName) || arrayTypes.contains("2_" + clsName) || arrayTypes.contains("3_" + clsName);
1300-
c2 = arrayTypes.contains("2_" + clsName) || arrayTypes.contains("3_" + clsName);
1301-
c3 = arrayTypes.contains("3_" + clsName);
1302+
_c1 = arrayTypes.contains("1_" + clsName) || arrayTypes.contains("2_" + clsName) || arrayTypes.contains("3_" + clsName);
1303+
_c2 = arrayTypes.contains("2_" + clsName) || arrayTypes.contains("3_" + clsName);
1304+
_c3 = arrayTypes.contains("3_" + clsName);
13021305
} finally {
13031306
arrayTypesLock.readLock().unlock();
13041307
}
1305-
if(c1) {
1308+
if(_c1) {
13061309
b.append("extern struct clazz class_array1__");
13071310
b.append(clsName);
13081311
b.append(";\n");
13091312
}
13101313

1311-
if(c2) {
1314+
if(_c2) {
13121315
b.append("extern struct clazz class_array2__");
13131316
b.append(clsName);
13141317
b.append(";\n");
13151318
}
13161319

1317-
if(c3) {
1320+
if(_c3) {
13181321
b.append("extern struct clazz class_array3__");
13191322
b.append(clsName);
13201323
b.append(";\n");
@@ -1354,14 +1357,14 @@ public String generateCHeader() {
13541357
b.append("extern JAVA_OBJECT __VALUE_OF_").append(clsName).append("(CODENAME_ONE_THREAD_STATE, JAVA_OBJECT value);\n");
13551358
}
13561359

1357-
boolean c1 = false;
1360+
boolean _c1_arr = false;
13581361
arrayTypesLock.readLock().lock();
13591362
try {
1360-
c1 = arrayTypes.contains("1_" + clsName);
1363+
_c1_arr = arrayTypes.contains("1_" + clsName);
13611364
} finally {
13621365
arrayTypesLock.readLock().unlock();
13631366
}
1364-
if(c1) {
1367+
if(_c1_arr) {
13651368
b.append("extern JAVA_OBJECT __NEW_ARRAY_");
13661369
b.append(clsName);
13671370
b.append("(CODENAME_ONE_THREAD_STATE, JAVA_INT size);\n");

0 commit comments

Comments
 (0)