@Override public void visitAfter(Code obj) { super.visitAfter(obj); for (int i = 0; i < nArgs; i++) { List<MethodParameter> list = passedParameters[i]; if (list != null) { MethodParameter cur = new MethodParameter(getMethodDescriptor(), i); for (MethodParameter mp : list) { cache.addEdge(mp, cur); } } } }
@Override public void sawOpcode(int seen) { if (isRegisterStore()) { int param = getRegisterOperand(); if (param < argNums.length) { int argNum = argNums[param]; case Const.INVOKEINTERFACE: case Const.INVOKEVIRTUAL: MethodDescriptor md = getMethodDescriptorOperand(); int callArgs = getNumberArguments(md.getSignature()); for (int i = 0; i < callArgs; i++) { Item item = getStack().getStackItem(callArgs - 1 - i); int param = item.getRegisterNumber(); if (param >= 0 && param < argNums.length && argNums[param] != -1) {
@Override public void sawOpcode(int seen) { if (isRegisterStore()) { int param = getRegisterOperand() + shift; if (param >= 0 && param < nArgs) { argEnabled[param] = false; case INVOKEINTERFACE: case INVOKEVIRTUAL: MethodDescriptor md = getMethodDescriptorOperand(); int callArgs = getNumberArguments(md.getSignature()); for (int i = 0; i < callArgs; i++) { Item item = getStack().getStackItem(callArgs - 1 - i); int param = item.getRegisterNumber() + shift; if (param >= 0 && param < nArgs && argEnabled[param]) {
@Override public void visitAfter(Code obj) { super.visitAfter(obj); for (int i = 0; i < nArgs; i++) { List<MethodParameter> list = passedParameters[i]; if (list != null) { MethodParameter cur = new MethodParameter(getMethodDescriptor(), i); for (MethodParameter mp : list) { cache.addEdge(mp, cur); } } } }