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:
if (result.pop() != tSecondPart)
throw new VerifyException(instr.getDescription());
if (result.pop() != tLong)
if (!result.pop().isOfType("J"))
throw new VerifyException(instr.getDescription());
if (result.pop() != tSecondPart)
throw new VerifyException(instr.getDescription());
if (result.pop() != tLong)
if (!result.pop().isOfType("J"))
throw new VerifyException(instr.getDescription());
result.push(tInt);
break;
case opc_dcmpl: case opc_dcmpg:
if (result.pop() != tSecondPart)
throw new VerifyException(instr.getDescription());
if (result.pop() != tDouble)
if (!result.pop().isOfType("D"))
throw new VerifyException(instr.getDescription());
if (result.pop() != tSecondPart)
throw new VerifyException(instr.getDescription());
if (result.pop() != tDouble)
if (!result.pop().isOfType("D"))
throw new VerifyException(instr.getDescription());
result.push(tInt);
break;
case opc_fcmpl: case opc_fcmpg:
if (result.pop() != tFloat)
if (!result.pop().isOfType("F"))
throw new VerifyException(instr.getDescription());
if (result.pop() != tFloat)
if (!result.pop().isOfType("F"))
throw new VerifyException(instr.getDescription());
result.push(tInt);
break;

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

Loading…
Cancel
Save