Create StoreInstruction(LValueExpression).

git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@764 379699f6-c40d-0410-875b-85095c16579e
stable
jochen 26 years ago
parent 7cc18ada02
commit fe82f8f2c7
  1. 21
      jode/jode/decompiler/Opcodes.java

@ -145,16 +145,16 @@ public abstract class Opcodes implements jode.bytecode.Opcodes {
case opc_istore: case opc_lstore: case opc_istore: case opc_lstore:
case opc_fstore: case opc_dstore: case opc_astore: case opc_fstore: case opc_dstore: case opc_astore:
return createNormal return createNormal
(ca, instr, new LocalStoreOperator (ca, instr, new StoreInstruction
(types[0][opcode-opc_istore], (new LocalStoreOperator
ca.getLocalInfo(instr.addr+instr.length, instr.localSlot), (types[0][opcode-opc_istore],
Operator.ASSIGN_OP)); ca.getLocalInfo(instr.addr+instr.length,instr.localSlot))));
case opc_iastore: case opc_lastore: case opc_iastore: case opc_lastore:
case opc_fastore: case opc_dastore: case opc_aastore: case opc_fastore: case opc_dastore: case opc_aastore:
case opc_bastore: case opc_castore: case opc_sastore: case opc_bastore: case opc_castore: case opc_sastore:
return createNormal return createNormal
(ca, instr, new ArrayStoreOperator (ca, instr, new StoreInstruction
(types[1][opcode - opc_iastore])); (new ArrayStoreOperator(types[1][opcode - opc_iastore])));
case opc_pop: case opc_pop2: case opc_pop: case opc_pop2:
return createSpecial return createSpecial
(ca, instr, SpecialBlock.POP, opcode - opc_pop + 1, 0); (ca, instr, SpecialBlock.POP, opcode - opc_pop + 1, 0);
@ -200,11 +200,10 @@ public abstract class Opcodes implements jode.bytecode.Opcodes {
operation = Operator.SUB_OP; operation = Operator.SUB_OP;
} }
LocalInfo li = ca.getLocalInfo(instr.addr, instr.localSlot); LocalInfo li = ca.getLocalInfo(instr.addr, instr.localSlot);
li.setType(Type.tUInt);
return createNormal return createNormal
(ca, instr, new IIncOperator (ca, instr, new IIncOperator
(li, Integer.toString(value), (new LocalStoreOperator(Type.tUInt, li),
operation + Operator.OPASSIGN_OP)); value, operation + Operator.OPASSIGN_OP));
} }
case opc_i2l: case opc_i2f: case opc_i2d: case opc_i2l: case opc_i2f: case opc_i2d:
case opc_l2i: case opc_l2f: case opc_l2d: case opc_l2i: case opc_l2f: case opc_l2d:
@ -304,8 +303,8 @@ public abstract class Opcodes implements jode.bytecode.Opcodes {
case opc_putfield: { case opc_putfield: {
Reference ref = (Reference) instr.objData; Reference ref = (Reference) instr.objData;
return createNormal return createNormal
(ca, instr, new PutFieldOperator (ca, instr, new StoreInstruction
(ca, opcode == opc_putstatic, ref)); (new PutFieldOperator(ca, opcode == opc_putstatic, ref)));
} }
case opc_invokevirtual: case opc_invokevirtual:
case opc_invokespecial: case opc_invokespecial:

Loading…
Cancel
Save