@Override public void visitFSTORE(FSTORE obj) { handleStoreInstruction(obj); }
@Override public void visitLSTORE(LSTORE obj) { handleStoreInstruction(obj); }
@Override public void visitASTORE(ASTORE obj) { handleStoreInstruction(obj); }
@Override public void visitDSTORE(DSTORE obj) { handleStoreInstruction(obj); }
@Override public void visitISTORE(ISTORE obj) { handleStoreInstruction(obj); }
@Override public void handleStoreInstruction(StoreInstruction obj) { try { int numConsumed = obj.consumeStack(cpg); if (numConsumed == 1) { boolean isExact = isTopOfStackExact(); TypeFrame frame = getFrame(); Type value = frame.popValue(); int index = obj.getIndex(); if (value instanceof ReferenceType && !(value instanceof GenericObjectType)) { GenericObjectType gType = getLocalVariable(index, getLocation().getHandle().getPosition()); value = GenericUtilities.merge(gType, value); } frame.setValue(index, value); frame.setExact(index, isExact); } else { super.handleStoreInstruction(obj); } } catch (DataflowAnalysisException e) { throw new InvalidBytecodeException( "error handling store instruction ", e); } }
@Override public void visitDSTORE(DSTORE obj) { handleStoreInstruction(obj); }
@Override public void visitFSTORE(FSTORE obj) { handleStoreInstruction(obj); }
@Override public void visitISTORE(ISTORE obj) { handleStoreInstruction(obj); }
@Override public void visitASTORE(ASTORE obj) { handleStoreInstruction(obj); }
@Override public void visitLSTORE(LSTORE obj) { handleStoreInstruction(obj); }
@Override public void handleStoreInstruction(StoreInstruction obj) { try { int numConsumed = obj.consumeStack(cpg); if (numConsumed == 1) { boolean isExact = isTopOfStackExact(); TypeFrame frame = getFrame(); Type value = frame.popValue(); int index = obj.getIndex(); if (value instanceof ReferenceType && !(value instanceof GenericObjectType)) { GenericObjectType gType = getLocalVariable(index, getLocation().getHandle().getPosition()); value = GenericUtilities.merge(gType, value); } frame.setValue(index, value); frame.setExact(index, isExact); } else { super.handleStoreInstruction(obj); } } catch (DataflowAnalysisException e) { throw new InvalidBytecodeException( "error handling store instruction ", e); } }