Stack: ..., value.word1, value.word2 -> ...
18031804180518061807180818091810181118121813
} else if (type == Type.INT) { return new ISTORE(index); } else if (type == Type.SHORT) { return new ISTORE(index); } else if (type == Type.LONG) { return new LSTORE(index); } else if (type == Type.BYTE) { return new ISTORE(index); } else if (type == Type.CHAR) { return new ISTORE(index); } else if (type == Type.FLOAT) {
957958959960961962963964965966967
case BYTE: case SHORT: case INT: ilc.add(new ISTORE(index)); return; case FLOAT: ilc.add(new FSTORE(index)); return; case DOUBLE: ilc.add(new DSTORE(index)); return; case LONG: ilc.add(new LSTORE(index)); return; case ARRAY: case OBJECT: ilc.add(new ASTORE(index)); return; default: throw new IllegalArgumentException("Invalid type " + type); } }
18011802180318041805180618071808180918101811
816817818819820821822
// Called using reflection private Instruction createInstructionLstore(Element inst) throws IllegalXMLVMException { // BCEL's LSTORE creation instruction only takes an integer!!! int idx= Integer.parseInt(inst.getAttributeValue("index")); return new LSTORE(idx); }
391392393394395396397398399400401
/* 635 */ else if (type.equals(Long.TYPE.getName())) /* */ { /* 637 */ int x = cp.addClass("java.lang.Long"); /* 638 */ int constrIndex = cp.addMethodref("java.lang.Long", "<init>", "(J)V"); /* */ /* 640 */ il.append(new LSTORE(4)); /* 641 */ il.append(new NEW(x)); /* 642 */ il.append(new ASTORE(6)); /* 643 */ il.append(new ALOAD(6)); /* 644 */ il.append(new LLOAD(4)); /* 645 */ il.append(new INVOKESPECIAL(constrIndex));