ソースを参照

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年前
コミット
421e4885eb
3個のファイルの変更10行の追加7行の削除
  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 ファイルの表示

@@ -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 ファイルの表示

@@ -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 ファイルの表示

@@ -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());

読み込み中…
キャンセル
保存