OSDN Git Service

Code to generate libcore's Dalvik opcode code.
authorDan Bornstein <danfuzz@android.com>
Tue, 30 Nov 2010 00:47:09 +0000 (16:47 -0800)
committerDan Bornstein <danfuzz@android.com>
Tue, 30 Nov 2010 00:47:09 +0000 (16:47 -0800)
That was a mouthful.

Change-Id: I49152fdacbfa9593e7a95f5c120fea023b06d03b

opcode-gen/opcode-gen
opcode-gen/regen-all

index 17560d1..8a99134 100755 (executable)
@@ -138,6 +138,28 @@ consumeUntil != "" {
     next;
 }
 
+/BEGIN\(libcore-opcodes\)/ {
+    consumeUntil = "END(libcore-opcodes)";
+    print;
+
+    for (i = 0; i <= MAX_LIBDEX_OPCODE; i++) {
+        if (isUnusedByte(i) || isOptimized(i)) continue;
+        printf("    int OP_%-28s = 0x%02x;\n", constName[i], i);
+    }
+
+    next;
+}
+
+/BEGIN\(libcore-maximum-value\)/ {
+    consumeUntil = "END(libcore-maximum-value)";
+    print;
+
+    # TODO: Make this smarter.
+    printf("        MAXIMUM_VALUE = %d;\n", MAX_LIBDEX_OPCODE);
+
+    next;
+}
+
 /BEGIN\(libdex-opcode-enum\)/ {
     consumeUntil = "END(libdex-opcode-enum)";
     print;
index 276893e..fbf8359 100755 (executable)
@@ -40,3 +40,10 @@ ${progdir}/opcode-gen dx/src/com/android/dx/dex/code/RopToDop.java
 ${progdir}/opcode-gen libdex/InstrUtils.c
 ${progdir}/opcode-gen libdex/OpCode.h
 ${progdir}/opcode-gen libdex/OpCodeNames.c
+
+# It's a minor shame that these files live in a different top-level project.
+# So it goes.
+${progdir}/opcode-gen \
+    ../libcore/dalvik/src/main/java/dalvik/bytecode/OpcodeInfo.java
+${progdir}/opcode-gen \
+    ../libcore/dalvik/src/main/java/dalvik/bytecode/Opcodes.java