git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@572 30ef5769-5b8d-40dd-aea6-55b5d6557bb3tags/rel_3_17_1_ga
@@ -88,17 +88,22 @@ public abstract class Tracer implements TypeTag { | |||
* @return the size of the instruction at POS. | |||
*/ | |||
protected int doOpcode(int pos, byte[] code) throws BadBytecode { | |||
int op = code[pos] & 0xff; | |||
if (op < 96) | |||
if (op < 54) | |||
return doOpcode0_53(pos, code, op); | |||
else | |||
return doOpcode54_95(pos, code, op); | |||
else | |||
if (op < 148) | |||
return doOpcode96_147(pos, code, op); | |||
try { | |||
int op = code[pos] & 0xff; | |||
if (op < 96) | |||
if (op < 54) | |||
return doOpcode0_53(pos, code, op); | |||
else | |||
return doOpcode54_95(pos, code, op); | |||
else | |||
return doOpcode148_201(pos, code, op); | |||
if (op < 148) | |||
return doOpcode96_147(pos, code, op); | |||
else | |||
return doOpcode148_201(pos, code, op); | |||
} | |||
catch (ArrayIndexOutOfBoundsException e) { | |||
throw new BadBytecode("inconsistent stack height " + e.getMessage()); | |||
} | |||
} | |||
protected void visitBranch(int pos, byte[] code, int offset) throws BadBytecode {} |
@@ -84,7 +84,7 @@ public class Cast extends Expr { | |||
* | |||
* <p>$0 is available but the value is <code>null</code>. | |||
* | |||
* @param statement a Java statement. | |||
* @param statement a Java statement except try-catch. | |||
*/ | |||
public void replace(String statement) throws CannotCompileException { | |||
thisClass.getClassFile(); // to call checkModify(). |
@@ -264,7 +264,7 @@ public abstract class Expr implements Opcode { | |||
* Replaces this expression with the bytecode derived from | |||
* the given source text. | |||
* | |||
* @param statement a Java statement. | |||
* @param statement a Java statement except try-catch. | |||
*/ | |||
public abstract void replace(String statement) throws CannotCompileException; | |||
@@ -272,7 +272,7 @@ public abstract class Expr implements Opcode { | |||
* Replaces this expression with the bytecode derived from | |||
* the given source text and <code>ExprEditor</code>. | |||
* | |||
* @param statement a Java statement. | |||
* @param statement a Java statement except try-catch. | |||
* @param recursive if not null, the substituted bytecode | |||
* is recursively processed by the given | |||
* <code>ExprEditor</code>. |
@@ -144,7 +144,7 @@ public class FieldAccess extends Expr { | |||
* If the field access is writing, $_ is available but the value | |||
* of $_ is ignored. | |||
* | |||
* @param statement a Java statement. | |||
* @param statement a Java statement except try-catch. | |||
*/ | |||
public void replace(String statement) throws CannotCompileException { | |||
thisClass.getClassFile(); // to call checkModify(). |
@@ -92,7 +92,7 @@ public class Handler extends Expr { | |||
/** | |||
* This method has not been implemented yet. | |||
* | |||
* @param statement a Java statement. | |||
* @param statement a Java statement except try-catch. | |||
*/ | |||
public void replace(String statement) throws CannotCompileException { | |||
throw new RuntimeException("not implemented yet"); |
@@ -87,7 +87,7 @@ public class Instanceof extends Expr { | |||
* | |||
* <p>$0 is available but the value is <code>null</code>. | |||
* | |||
* @param statement a Java statement. | |||
* @param statement a Java statement except try-catch. | |||
*/ | |||
public void replace(String statement) throws CannotCompileException { | |||
thisClass.getClassFile(); // to call checkModify(). |
@@ -173,7 +173,7 @@ public class MethodCall extends Expr { | |||
* | |||
* <p>$0 is available even if the called method is static. | |||
* | |||
* @param statement a Java statement. | |||
* @param statement a Java statement except try-catch. | |||
*/ | |||
public void replace(String statement) throws CannotCompileException { | |||
thisClass.getClassFile(); // to call checkModify(). |
@@ -153,7 +153,7 @@ public class NewArray extends Expr { | |||
* If the field access is writing, $_ is available but the value | |||
* of $_ is ignored. | |||
* | |||
* @param statement a Java statement. | |||
* @param statement a Java statement except try-catch. | |||
*/ | |||
public void replace(String statement) throws CannotCompileException { | |||
try { |
@@ -156,7 +156,7 @@ public class NewExpr extends Expr { | |||
* | |||
* <p>$0 is available but the value is null. | |||
* | |||
* @param statement a Java statement. | |||
* @param statement a Java statement except try-catch. | |||
*/ | |||
public void replace(String statement) throws CannotCompileException { | |||
thisClass.getClassFile(); // to call checkModify(). |
@@ -664,7 +664,7 @@ with a block: | |||
<p>so that the first parameter to <code>move()</code> is always 0. | |||
Note that the substituted code is not an expression but | |||
a statement or a block. | |||
a statement or a block. It cannot be or contain a try-catch statement. | |||
<p>The method <code>instrument()</code> searches a method body. | |||
If it finds an expression such as a method call, field access, and object |