fixed some bugs

git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@1129 379699f6-c40d-0410-875b-85095c16579e
branch_1_1
jochen 25 years ago
parent d54f47c0a2
commit d9e7c2b803
  1. 12
      jode/jode/jvm/CodeVerifier.java.in
  2. 3
      jode/jode/jvm/Interpreter.java.in

@ -736,29 +736,29 @@ public class CodeVerifier implements Opcodes {
case opc_lcmp: case opc_lcmp:
if (result.pop() != tSecondPart) if (result.pop() != tSecondPart)
throw new VerifyException(instr.getDescription()); throw new VerifyException(instr.getDescription());
if (result.pop() != tLong) if (!result.pop().isOfType("J"))
throw new VerifyException(instr.getDescription()); throw new VerifyException(instr.getDescription());
if (result.pop() != tSecondPart) if (result.pop() != tSecondPart)
throw new VerifyException(instr.getDescription()); throw new VerifyException(instr.getDescription());
if (result.pop() != tLong) if (!result.pop().isOfType("J"))
throw new VerifyException(instr.getDescription()); throw new VerifyException(instr.getDescription());
result.push(tInt); result.push(tInt);
break; break;
case opc_dcmpl: case opc_dcmpg: case opc_dcmpl: case opc_dcmpg:
if (result.pop() != tSecondPart) if (result.pop() != tSecondPart)
throw new VerifyException(instr.getDescription()); throw new VerifyException(instr.getDescription());
if (result.pop() != tDouble) if (!result.pop().isOfType("D"))
throw new VerifyException(instr.getDescription()); throw new VerifyException(instr.getDescription());
if (result.pop() != tSecondPart) if (result.pop() != tSecondPart)
throw new VerifyException(instr.getDescription()); throw new VerifyException(instr.getDescription());
if (result.pop() != tDouble) if (!result.pop().isOfType("D"))
throw new VerifyException(instr.getDescription()); throw new VerifyException(instr.getDescription());
result.push(tInt); result.push(tInt);
break; break;
case opc_fcmpl: case opc_fcmpg: case opc_fcmpl: case opc_fcmpg:
if (result.pop() != tFloat) if (!result.pop().isOfType("F"))
throw new VerifyException(instr.getDescription()); throw new VerifyException(instr.getDescription());
if (result.pop() != tFloat) if (!result.pop().isOfType("F"))
throw new VerifyException(instr.getDescription()); throw new VerifyException(instr.getDescription());
result.push(tInt); result.push(tInt);
break; break;

@ -685,6 +685,9 @@ public class Interpreter implements Opcodes {
} }
case opc_arraylength: { case opc_arraylength: {
Object array = stack[--stacktop].objectValue(); Object array = stack[--stacktop].objectValue();
if (array == null)
throw new InvocationTargetException
(new NullPointerException());
stack[stacktop++].setInt(Array.getLength(array)); stack[stacktop++].setInt(Array.getLength(array));
break; break;
} }

Loading…
Cancel
Save