@Override public void initClass(String className) { getAnalyzer().linkClass(className).initClass(getCallLocation()); }
@Override public void nullCheck(VariableReader receiver, VariableReader value) { DependencyNode valueNode = getNode(value); DependencyNode receiverNode = getNode(receiver); if (valueNode != null) { valueNode.connect(receiverNode); } MethodDependency npeMethod = getAnalyzer().linkMethod(NPE_INIT_METHOD); npeMethod.addLocation(getCallLocation()); npeMethod.use(); }
@Override public void stringConstant(VariableReader receiver, String cst) { DependencyNode node = getNode(receiver); if (node != null) { node.propagate(getAnalyzer().getType("java.lang.String")); } MethodDependency method = getAnalyzer().linkMethod(STRING_INIT_FROM_CHARS_METHOD); method.addLocation(getCallLocation()); method.use(); }
@Override public void monitorEnter(VariableReader objectRef) { if (getAnalyzer().asyncSupported) { MethodDependency methodDep = getAnalyzer().linkMethod(MONITOR_ENTER_METHOD); methodDep.addLocation(getCallLocation()); getNode(objectRef).connect(methodDep.getVariable(1)); methodDep.use(); } MethodDependency methodDep = getAnalyzer().linkMethod(MONITOR_ENTER_SYNC_METHOD); methodDep.addLocation(getCallLocation()); getNode(objectRef).connect(methodDep.getVariable(1)); methodDep.use(); }
@Override public void monitorExit(VariableReader objectRef) { if (getAnalyzer().asyncSupported) { MethodDependency methodDep = getAnalyzer().linkMethod(MONITOR_EXIT_METHOD); methodDep.addLocation(getCallLocation()); getNode(objectRef).connect(methodDep.getVariable(1)); methodDep.use(); } MethodDependency methodDep = getAnalyzer().linkMethod(MONITOR_EXIT_SYNC_METHOD); methodDep.addLocation(getCallLocation()); getNode(objectRef).connect(methodDep.getVariable(1)); methodDep.use(); }
@Override public void getField(VariableReader receiver, VariableReader instance, FieldReference field, ValueType fieldType) { FieldDependency fieldDep = getAnalyzer().linkField(field); fieldDep.addLocation(getCallLocation()); if (!(fieldType instanceof ValueType.Primitive)) { DependencyNode receiverNode = getNode(receiver); if (receiverNode != null) { fieldDep.getValue().connect(receiverNode); } } initClass(field.getClassName()); }
@Override public void putField(VariableReader instance, FieldReference field, VariableReader value, ValueType fieldType) { FieldDependency fieldDep = getAnalyzer().linkField(field); fieldDep.addLocation(getCallLocation()); if (!(fieldType instanceof ValueType.Primitive)) { DependencyNode valueNode = getNode(value); if (valueNode != null) { valueNode.connect(fieldDep.getValue()); } } initClass(field.getClassName()); }