@Override public void onObservedUpdate(BigBang bb) { /* Only a clone should be updated */ assert this.isClone(); /* * The state of the receiver object of the load operation has changed. Link the new heap * sensitive field flows. */ TypeState objectState = objectFlow.getState(); if (objectState.isUnknown()) { bb.reportIllegalUnknownUse(graphRef.getMethod(), source, "Illegal: Field loading from UnknownTypeState objects. Field: " + field); return; } /* Iterate over the receiver objects. */ for (AnalysisObject object : objectState.objects()) { /* Get the field flow corresponding to the receiver object. */ FieldTypeFlow fieldFlow = object.getInstanceFieldFlow(bb, field, false); /* Add the load field flow as a use to the heap sensitive field flow. */ fieldFlow.addUse(bb, this); } }
@Override public boolean addState(BigBang bb, TypeState add) { /* Only a clone should be updated */ assert this.isClone(); return super.addState(bb, add); }