diff options
author | chiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3> | 2007-08-13 09:06:31 +0000 |
---|---|---|
committer | chiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3> | 2007-08-13 09:06:31 +0000 |
commit | 2f7efd86200e7f76130224a76259c1a747c87c5c (patch) | |
tree | 83598bd1b78793457377f2000e211270254dfcb1 | |
parent | 08ffecc61983efc2748a3d0b96342dcc4bb5623a (diff) | |
download | javassist-2f7efd86200e7f76130224a76259c1a747c87c5c.tar.gz javassist-2f7efd86200e7f76130224a76259c1a747c87c5c.zip |
the default major version of newly-created class files is either JDK 1.3 or 1.5, which depends on the VM version.
git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@402 30ef5769-5b8d-40dd-aea6-55b5d6557bb3
-rw-r--r-- | src/main/javassist/bytecode/ClassFile.java | 13 | ||||
-rw-r--r-- | src/main/javassist/bytecode/LocalVariableAttribute.java | 7 |
2 files changed, 16 insertions, 4 deletions
diff --git a/src/main/javassist/bytecode/ClassFile.java b/src/main/javassist/bytecode/ClassFile.java index 4720d289..c087073c 100644 --- a/src/main/javassist/bytecode/ClassFile.java +++ b/src/main/javassist/bytecode/ClassFile.java @@ -65,9 +65,18 @@ public final class ClassFile { /** * The major version number of class files created - * from scratch. The value is 47 (JDK 1.3). + * from scratch. The default value is 47 (JDK 1.3) + * or 49 (JDK 1.5) if the JVM supports <code>java.lang.StringBuilder</code>. */ - public static final int MAJOR_VERSION = JAVA_3; + public static int MAJOR_VERSION = JAVA_3; + + static { + try { + Class.forName("java.lang.StringBuilder"); + MAJOR_VERSION = JAVA_5; + } + catch (Throwable t) {} + } /** * Constructs a class file from a byte stream. diff --git a/src/main/javassist/bytecode/LocalVariableAttribute.java b/src/main/javassist/bytecode/LocalVariableAttribute.java index f1eb203c..54929137 100644 --- a/src/main/javassist/bytecode/LocalVariableAttribute.java +++ b/src/main/javassist/bytecode/LocalVariableAttribute.java @@ -260,8 +260,11 @@ public class LocalVariableAttribute extends AttributeInfo { ByteArray.write16bit(name, dest, j + 4); - if (type != 0) - type = cp.copy(type, newCp, null); + if (type != 0) { + String sig = cp.getUtf8Info(type); + sig = Descriptor.rename(sig, classnames); + type = newCp.addUtf8Info(sig); + } ByteArray.write16bit(type, dest, j + 6); ByteArray.write16bit(index, dest, j + 8); |