@Override public void nullCheck(VariableReader receiver, VariableReader value) { connect(value.getIndex(), receiver.getIndex()); }
@Override public void getField(VariableReader receiver, VariableReader instance, FieldReference field, ValueType fieldType) { if (fieldType instanceof ValueType.Primitive) { return; } builder.addEdge(getFieldNode(field), receiver.getIndex()); }
private void connect(int a, int b) { builder.addEdge(a, b); join(a, b); }
resultNode = dep.getResult(); DataFlowGraphBuilder dfgBuilder = new DataFlowGraphBuilder(); boolean[] significantParams = new boolean[dep.getParameterCount()]; significantParams[0] = true; int[] nodeMapping = dfgBuilder.buildMapping(program, significantParams, !(method.getResultType() instanceof ValueType.Primitive) && method.getResultType() != ValueType.VOID);
DataFlowGraphBuilder dfgBuilder = new DataFlowGraphBuilder(); boolean[] significantParams = new boolean[dep.getParameterCount()]; significantParams[0] = true; int[] nodeMapping = dfgBuilder.buildMapping(program, significantParams, !(method.getResultType() instanceof ValueType.Primitive) && method.getResultType() != ValueType.VOID);
@Override public void unwrapArray(VariableReader receiver, VariableReader array, ArrayElementType elementType) { if (elementType == ArrayElementType.OBJECT) { connect(array.getIndex(), receiver.getIndex()); } }
@Override public void putField(VariableReader instance, FieldReference field, VariableReader value, ValueType fieldType) { if (fieldType instanceof ValueType.Primitive) { return; } builder.addEdge(value.getIndex(), getFieldNode(field)); }
private void connect(int a, int b) { builder.addEdge(a, b); join(a, b); }
@Override public void assign(VariableReader receiver, VariableReader assignee) { connect(assignee.getIndex(), receiver.getIndex()); }
@Override public void getField(VariableReader receiver, VariableReader instance, FieldReference field, ValueType fieldType) { if (fieldType instanceof ValueType.Primitive) { return; } builder.addEdge(getFieldNode(field), receiver.getIndex()); }
@Override public void unwrapArray(VariableReader receiver, VariableReader array, ArrayElementType elementType) { if (elementType == ArrayElementType.OBJECT) { connect(array.getIndex(), receiver.getIndex()); } }
@Override public void putField(VariableReader instance, FieldReference field, VariableReader value, ValueType fieldType) { if (fieldType instanceof ValueType.Primitive) { return; } builder.addEdge(value.getIndex(), getFieldNode(field)); }
@Override public void assign(VariableReader receiver, VariableReader assignee) { connect(assignee.getIndex(), receiver.getIndex()); }
@Override public void nullCheck(VariableReader receiver, VariableReader value) { connect(value.getIndex(), receiver.getIndex()); }