You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by sj...@apache.org on 2008/07/02 11:08:52 UTC

svn commit: r673325 - /harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java

Author: sjanuary
Date: Wed Jul  2 02:08:52 2008
New Revision: 673325

URL: http://svn.apache.org/viewvc?rev=673325&view=rev
Log:
Apply patch for HARMONY-5889 ([classlib][pack200] Some bytecodes can be cached)

Modified:
    harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java

Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java?rev=673325&r1=673324&r2=673325&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java Wed Jul  2 02:08:52 2008
@@ -28,9 +28,18 @@
 public class ByteCode extends ClassFileEntry {
 
     public static ByteCode getByteCode(int opcode) {
-        return new ByteCode(0xFF & opcode);
+        int byteOpcode = 0xFF & opcode;
+        if(ByteCodeForm.get(byteOpcode).hasNoOperand()) {
+            if(null == noArgByteCodes[byteOpcode]) {
+                noArgByteCodes[byteOpcode] = new ByteCode(byteOpcode);
+            }
+            return noArgByteCodes[byteOpcode];
+        }
+        return new ByteCode(byteOpcode);
     }
 
+    private static ByteCode[] noArgByteCodes = new ByteCode[255];
+
     private final ByteCodeForm byteCodeForm;
 
     private ClassFileEntry[] nested;