protected void newFieldOperationOnlyFieldConstant(final boolean isLoadOperation, final ReflectedFieldAction action, final PointerKey objKey, final InstanceKey[] fieldsKeys) { system.newSideEffect(new UnaryOperator<PointsToSetVariable>() { @Override public byte evaluate(PointsToSetVariable lhs, PointsToSetVariable rhs) {
system.newSideEffect(new FieldValueDispatch(), fieldKey);
system.newSideEffect(new FieldValueDispatch(), fieldKey);
system.newSideEffect(new UnaryOperator<PointsToSetVariable>() { @Override public byte evaluate(PointsToSetVariable lhs, PointsToSetVariable rhs) {
system.newSideEffect(new UnaryOperator<PointsToSetVariable>() { @Override public byte evaluate(PointsToSetVariable lhs, PointsToSetVariable rhs) {
protected void newFieldFullOperation(final boolean isLoadOperation, final ReflectedFieldAction action, PointerKey objKey, final PointerKey fieldKey) { system.newSideEffect(new AbstractOperator<PointsToSetVariable>() { private final MutableIntSet doneReceiver = IntSetUtil.make(); private final MutableIntSet doneField = IntSetUtil.make();
protected void newFieldFullOperation(final boolean isLoadOperation, final ReflectedFieldAction action, PointerKey objKey, final PointerKey fieldKey) { system.newSideEffect(new AbstractOperator<PointsToSetVariable>() { private final MutableIntSet doneReceiver = IntSetUtil.make(); private final MutableIntSet doneField = IntSetUtil.make();
system.newSideEffect(dispatchOperator, selector);
system.newSideEffect(new ReceiverForDispatchOp(), receiverKey);
system.newSideEffect(dispatchOperator, selector);
system.newSideEffect(new UnaryOperator<PointsToSetVariable>() { @Override public byte evaluate(PointsToSetVariable lhs, PointsToSetVariable rhs) {
system.newSideEffect(new UnaryOperator<PointsToSetVariable>() { @Override public byte evaluate(PointsToSetVariable lhs, PointsToSetVariable rhs) {
system.newSideEffect(new UnaryOperator<PointsToSetVariable>() { @Override public byte evaluate(PointsToSetVariable lhs, PointsToSetVariable rhs) {
for (InstanceKey element : ik) { system.findOrCreateIndexForInstanceKey(element); system.newSideEffect(getBuilder().new InstancePutFieldOperator(f, element), refKey); System.err.println("adding side effect " + f); system.newSideEffect(getBuilder().new PutFieldOperator(f, system.findOrCreatePointsToSet(rvalKey)), refKey);
for (InstanceKey element : ik) { system.findOrCreateIndexForInstanceKey(element); system.newSideEffect(getBuilder().new InstancePutFieldOperator(f, element), refKey); System.err.println("adding side effect " + f); system.newSideEffect(getBuilder().new PutFieldOperator(f, system.findOrCreatePointsToSet(rvalKey)), refKey);
protected void doVisitArrayLoad(int def, int arrayRef) { PointerKey result = getPointerKeyForLocal(def); PointerKey arrayRefPtrKey = getPointerKeyForLocal(arrayRef); if (hasNoInterestingUses(def)) { system.recordImplicitPointsToSet(result); } else { if (contentsAreInvariant(symbolTable, du, arrayRef)) { system.recordImplicitPointsToSet(arrayRefPtrKey); InstanceKey[] ik = getInvariantContents(arrayRef); for (int i = 0; i < ik.length; i++) { if (!representsNullType(ik[i])) { system.findOrCreateIndexForInstanceKey(ik[i]); PointerKey p = getPointerKeyForArrayContents(ik[i]); if (p == null) { } else { system.newConstraint(result, assignOperator, p); } } } } else { assert !system.isUnified(result); assert !system.isUnified(arrayRefPtrKey); system.newSideEffect(getBuilder().new ArrayLoadOperator(system.findOrCreatePointsToSet(result)), arrayRefPtrKey); } } }
protected void doVisitArrayLoad(int def, int arrayRef) { PointerKey result = getPointerKeyForLocal(def); PointerKey arrayRefPtrKey = getPointerKeyForLocal(arrayRef); if (hasNoInterestingUses(def)) { system.recordImplicitPointsToSet(result); } else { if (contentsAreInvariant(symbolTable, du, arrayRef)) { system.recordImplicitPointsToSet(arrayRefPtrKey); InstanceKey[] ik = getInvariantContents(arrayRef); for (int i = 0; i < ik.length; i++) { if (!representsNullType(ik[i])) { system.findOrCreateIndexForInstanceKey(ik[i]); PointerKey p = getPointerKeyForArrayContents(ik[i]); if (p == null) { } else { system.newConstraint(result, assignOperator, p); } } } } else { assert !system.isUnified(result); assert !system.isUnified(arrayRefPtrKey); system.newSideEffect(getBuilder().new ArrayLoadOperator(system.findOrCreatePointsToSet(result)), arrayRefPtrKey); } } }
system.findOrCreateIndexForInstanceKey(element); assert !system.isUnified(arrayRefPtrKey); system.newSideEffect(getBuilder().new InstanceArrayStoreOperator(element), arrayRefPtrKey); system.newSideEffect(getBuilder().new ArrayStoreOperator(system.findOrCreatePointsToSet(valuePtrKey)), arrayRefPtrKey);
system.findOrCreateIndexForInstanceKey(element); assert !system.isUnified(arrayRefPtrKey); system.newSideEffect(getBuilder().new InstanceArrayStoreOperator(element), arrayRefPtrKey); system.newSideEffect(getBuilder().new ArrayStoreOperator(system.findOrCreatePointsToSet(valuePtrKey)), arrayRefPtrKey);
system.newSideEffect(getBuilder().new GetFieldOperator(f, system.findOrCreatePointsToSet(def)), refKey);