Thread: [Fb-contrib-commit] fb-contrib/src/com/mebigfatguy/fbcontrib/detect JDBCVendorReliance.java,1.8,1.9
Brought to you by:
dbrosius
From: Dave B. <dbr...@us...> - 2006-03-13 06:47:42
|
Update of /cvsroot/fb-contrib/fb-contrib/src/com/mebigfatguy/fbcontrib/detect In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30845/src/com/mebigfatguy/fbcontrib/detect Modified Files: JDBCVendorReliance.java LocalSynchronizedCollection.java Log Message: more more impl to RegisterUtils Index: JDBCVendorReliance.java =================================================================== RCS file: /cvsroot/fb-contrib/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/JDBCVendorReliance.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- JDBCVendorReliance.java 13 Mar 2006 06:13:42 -0000 1.8 +++ JDBCVendorReliance.java 13 Mar 2006 06:47:39 -0000 1.9 @@ -53,14 +53,15 @@ stack.resetForMethodEntry(this); jdbcLocals.clear(); + int[] parmRegs = RegisterUtils.getParameterRegisters(obj); Type[] argTypes = obj.getArgumentTypes(); - int reg = obj.isStatic() ? 0 : 1; - for (Type arg : argTypes) { - String sig = arg.getSignature(); - if (isJDBCClass(sig)) - jdbcLocals.put(new Integer(reg), new Integer(RegisterUtils.getLocalVariableEndRange(obj.getLocalVariableTable(), reg, 0))); - - reg += (sig.equals("J") || sig.equals("D")) ? 2 : 1; + + for (int t = 0; t < argTypes.length; t++) { + String sig = argTypes[t].getSignature(); + if (isJDBCClass(sig)) { + jdbcLocals.put(new Integer(parmRegs[t]), + new Integer(RegisterUtils.getLocalVariableEndRange(obj.getLocalVariableTable(), parmRegs[t], 0))); + } } } Index: LocalSynchronizedCollection.java =================================================================== RCS file: /cvsroot/fb-contrib/fb-contrib/src/com/mebigfatguy/fbcontrib/detect/LocalSynchronizedCollection.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- LocalSynchronizedCollection.java 13 Mar 2006 06:02:11 -0000 1.9 +++ LocalSynchronizedCollection.java 13 Mar 2006 06:47:39 -0000 1.10 @@ -25,8 +25,6 @@ import java.util.Set; import org.apache.bcel.classfile.Code; -import org.apache.bcel.classfile.LocalVariable; -import org.apache.bcel.classfile.LocalVariableTable; import org.apache.bcel.classfile.Method; import org.apache.bcel.generic.Type; @@ -89,16 +87,10 @@ @Override public void visitMethod(Method obj) { syncRegs.clear(); - String sig = obj.getSignature(); - Type[] argTypes = Type.getArgumentTypes(sig); - int curReg = obj.isStatic() ? 0 : 1; - for (Type t : argTypes) { - sig = t.getSignature(); - syncRegs.put(new Integer(curReg), new CollectionRegInfo(RegisterUtils.getLocalVariableEndRange(obj.getLocalVariableTable(), curReg, 0))); - if ("J".equals(sig) || "D".equals(sig)) { - curReg++; - } - curReg++; + int[] parmRegs = RegisterUtils.getParameterRegisters(obj); + for (int pr : parmRegs) { + syncRegs.put(new Integer(pr), + new CollectionRegInfo(RegisterUtils.getLocalVariableEndRange(obj.getLocalVariableTable(), pr, 0))); } } @@ -135,21 +127,6 @@ try { stack.mergeJumps(this); - int curPC = getPC(); - Iterator<CollectionRegInfo> it = syncRegs.values().iterator(); - while (it.hasNext()) { - CollectionRegInfo cri = it.next(); - if (cri.getEndPCRange() < curPC) { - if (!cri.getIgnore()) { - bugReporter.reportBug(new BugInstance(this, "LSYC_LOCAL_SYNCHRONIZED_COLLECTION", cri.getPriority()) - .addClass(this) - .addMethod(this) - .addSourceLine(cri.getSourceLineAnnotation())); - } - it.remove(); - } - } - if (seen == INVOKESPECIAL) { if ("<init>".equals(getNameConstantOperand())) { if (syncCtors.contains(getClassConstantOperand())) { @@ -218,6 +195,21 @@ } } } + + int curPC = getPC(); + Iterator<CollectionRegInfo> it = syncRegs.values().iterator(); + while (it.hasNext()) { + CollectionRegInfo cri = it.next(); + if (cri.getEndPCRange() < curPC) { + if (!cri.getIgnore()) { + bugReporter.reportBug(new BugInstance(this, "LSYC_LOCAL_SYNCHRONIZED_COLLECTION", cri.getPriority()) + .addClass(this) + .addMethod(this) + .addSourceLine(cri.getSourceLineAnnotation())); + } + it.remove(); + } + } } finally { stack.sawOpcode(this, seen); if (tosIsSyncColReg != null) { |