You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bcel-dev@jakarta.apache.org by md...@apache.org on 2002/11/28 08:36:53 UTC
cvs commit: jakarta-bcel/src/java/org/apache/bcel/util BCELFactory.java BCELifier.java
mdahm 2002/11/27 23:36:53
Modified: src/java/org/apache/bcel/util BCELFactory.java
BCELifier.java
Log:
Bug fixes
Revision Changes Path
1.3 +34 -26 jakarta-bcel/src/java/org/apache/bcel/util/BCELFactory.java
Index: BCELFactory.java
===================================================================
RCS file: /home/cvs/jakarta-bcel/src/java/org/apache/bcel/util/BCELFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BCELFactory.java 29 Jun 2002 15:14:43 -0000 1.2
+++ BCELFactory.java 28 Nov 2002 07:36:53 -0000 1.3
@@ -82,30 +82,32 @@
private HashMap branch_map = new HashMap(); // Map<Instruction, InstructionHandle>
public void start() {
- for(InstructionHandle ih = _mg.getInstructionList().getStart();
- ih != null; ih = ih.getNext()) {
- Instruction i = ih.getInstruction();
+ if(!_mg.isAbstract() && !_mg.isNative()) {
+ for(InstructionHandle ih = _mg.getInstructionList().getStart();
+ ih != null; ih = ih.getNext()) {
+ Instruction i = ih.getInstruction();
- if(i instanceof BranchInstruction) {
- branch_map.put(i, ih); // memorize container
- }
-
- if(ih.hasTargeters()) {
if(i instanceof BranchInstruction) {
- _out.println(" InstructionHandle ih_" + ih.getPosition() + ";");
+ branch_map.put(i, ih); // memorize container
+ }
+
+ if(ih.hasTargeters()) {
+ if(i instanceof BranchInstruction) {
+ _out.println(" InstructionHandle ih_" + ih.getPosition() + ";");
+ } else {
+ _out.print(" InstructionHandle ih_" + ih.getPosition() + " = ");
+ }
} else {
- _out.print(" InstructionHandle ih_" + ih.getPosition() + " = ");
+ _out.print(" ");
}
- } else {
- _out.print(" ");
+
+ if(!visitInstruction(i))
+ i.accept(this);
}
- if(!visitInstruction(i))
- i.accept(this);
+ updateBranchTargets();
+ updateExceptionHandlers();
}
-
- updateBranchTargets();
- updateExceptionHandlers();
}
private boolean visitInstruction(Instruction i) {
@@ -127,8 +129,8 @@
Type type = i.getType(_cp);
if(opcode == Constants.IINC) {
- _out.println("il.append(new IINC(" + i.getIndex() + ", " +
- ((IINC)i).getIncrement() + "));");
+ _out.println("il.append(new IINC(" + i.getIndex() + ", " +
+ ((IINC)i).getIncrement() + "));");
} else {
String kind = (opcode < Constants.ISTORE)? "Load" : "Store";
_out.println("il.append(_factory.create" + kind + "(" +
@@ -176,10 +178,16 @@
}
public void visitAllocationInstruction(AllocationInstruction i) {
- CPInstruction in = (CPInstruction)i;
- Type type = in.getType(_cp);
- short opcode = in.getOpcode();
- int dim = 1;
+ Type type;
+
+ if(i instanceof CPInstruction) {
+ type = ((CPInstruction)i).getType(_cp);
+ } else {
+ type = ((NEWARRAY)i).getType();
+ }
+
+ short opcode = ((Instruction)i).getOpcode();
+ int dim = 1;
switch(opcode) {
case Constants.NEW:
@@ -192,8 +200,8 @@
case Constants.ANEWARRAY:
case Constants.NEWARRAY:
- _out.println("il.append(_factory.createNewArray(\"" +
- BCELifier.printType(type) + ", " + dim + "));");
+ _out.println("il.append(_factory.createNewArray(" +
+ BCELifier.printType(type) + ", (short) " + dim + "));");
break;
default:
1.3 +5 -1 jakarta-bcel/src/java/org/apache/bcel/util/BCELifier.java
Index: BCELifier.java
===================================================================
RCS file: /home/cvs/jakarta-bcel/src/java/org/apache/bcel/util/BCELifier.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BCELifier.java 4 Jun 2002 11:16:21 -0000 1.2
+++ BCELifier.java 28 Nov 2002 07:36:53 -0000 1.3
@@ -96,6 +96,10 @@
String package_name = clazz.getPackageName();
String inter = Utility.printArray(clazz.getInterfaceNames(),
false, true);
+ if(!"".equals(package_name)) {
+ class_name = class_name.substring(package_name.length() + 1);
+ _out.println("package " + package_name + ";\n");
+ }
_out.println("import org.apache.bcel.generic.*;");
_out.println("import org.apache.bcel.classfile.*;");
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>