Browse Source

fixed a bug in the compiler, which could not compile a try statement

correctly.


git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@33 30ef5769-5b8d-40dd-aea6-55b5d6557bb3
tags/rel_3_17_1_ga
chiba 21 years ago
parent
commit
421e4885eb
3 changed files with 10 additions and 7 deletions
  1. 3
    2
      Readme.html
  2. 2
    2
      src/main/javassist/ClassPool.java
  3. 5
    3
      src/main/javassist/compiler/MemberCodeGen.java

+ 3
- 2
Readme.html View File

@@ -244,6 +244,7 @@ see javassist.Dump.
<li>javassist.expr.Expr.indexOfBytecode() has been added.
<li>javassist.Loader has been modified so that getPackage() returns
a package object.
<li>Now, the compiler can correctly compile a try statement.
</ul>

<p>- version 2.5.1 in May, 2003.
@@ -505,8 +506,8 @@ Marc Segura-Devillechaise, Jan Baudisch, Julien Blass, Yoshiki Sato,
Fabian Crabus, Bo Norregaard Jorgensen, Bob Lee, Bill Burke,
Remy Sanlaville, Muga Nishizawa, Alexey Loubyansky, Saori Oki,
Andreas Salathe, Dante Torres estrada, S. Pam, Nuno Santos,
Denis Taye, Colin Sampaleanu, Robert Bialek, and Asato Shimotaki
for their contributions.
Denis Taye, Colin Sampaleanu, Robert Bialek, Asato Shimotaki,
and Howard Lewis Ship for their contributions.

<p><br>


+ 2
- 2
src/main/javassist/ClassPool.java View File

@@ -372,9 +372,9 @@ public class ClassPool {

/**
* Returns a <code>java.lang.Class</code> object that has been loaded
* by <code>writeAsClass()</code>. Note that such an object cannot be
* by <code>writeAsClass()</code>. That object cannot be
* obtained by <code>java.lang.Class.forName()</code> because it has
* been loaded by an internal class loader.
* been loaded by an internal class loader of Javassist.
*
* @see #writeAsClass(String)
* @see javassist.CtClass#toClass()

+ 5
- 3
src/main/javassist/compiler/MemberCodeGen.java View File

@@ -72,6 +72,8 @@ public class MemberCodeGen extends CodeGen {
int start = bytecode.currentPc();
body.accept(this);
int end = bytecode.currentPc();
if (start == end)
throw new CompileError("empty try block");

bytecode.addOpcode(Opcode.GOTO);
int pc = bytecode.currentPc();
@@ -92,10 +94,10 @@ public class MemberCodeGen extends CodeGen {
decl.setClassName(javaToJvmName(type.getName()));
bytecode.addExceptionHandler(start, end, bytecode.currentPc(),
type);
if (block != null) {
bytecode.addAstore(var);
bytecode.growStack(1);
bytecode.addAstore(var);
if (block != null)
block.accept(this);
}

bytecode.addOpcode(Opcode.GOTO);
bytecode.addIndex(pc - bytecode.currentPc());

Loading…
Cancel
Save