summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>2007-08-13 09:06:31 +0000
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>2007-08-13 09:06:31 +0000
commit2f7efd86200e7f76130224a76259c1a747c87c5c (patch)
tree83598bd1b78793457377f2000e211270254dfcb1
parent08ffecc61983efc2748a3d0b96342dcc4bb5623a (diff)
downloadjavassist-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.java13
-rw-r--r--src/main/javassist/bytecode/LocalVariableAttribute.java7
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);