This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-bcel.git
commit 0b6ca2a1af09a69b3e13464031cbc4c9844403b4 Author: Gary David Gregory (Code signing key) <ggreg...@apache.org> AuthorDate: Sat Oct 29 07:43:51 2022 -0400 Use Java 8 Map API --- .../org/apache/bcel/generic/ConstantPoolGen.java | 66 ++++++++-------------- 1 file changed, 23 insertions(+), 43 deletions(-) diff --git a/src/main/java/org/apache/bcel/generic/ConstantPoolGen.java b/src/main/java/org/apache/bcel/generic/ConstantPoolGen.java index 7fe4ec8d..30d2c93c 100644 --- a/src/main/java/org/apache/bcel/generic/ConstantPoolGen.java +++ b/src/main/java/org/apache/bcel/generic/ConstantPoolGen.java @@ -258,8 +258,7 @@ public class ConstantPoolGen { final ConstantClass c = new ConstantClass(addUtf8(clazz)); final int ret = index; constants[index++] = c; - classTable.computeIfAbsent(clazz, k -> Integer.valueOf(ret)); - return ret; + return computeIfAbsent(classTable, clazz, ret); } /** @@ -349,22 +348,18 @@ public class ConstantPoolGen { * @return index of entry */ public int addFieldref(final String className, final String fieldName, final String signature) { - int ret; + final int cpRet; int classIndex; int nameAndTypeIndex; - if ((ret = lookupFieldref(className, fieldName, signature)) != -1) { - return ret; // Already in CP + if ((cpRet = lookupFieldref(className, fieldName, signature)) != -1) { + return cpRet; // Already in CP } adjustSize(); classIndex = addClass(className); nameAndTypeIndex = addNameAndType(fieldName, signature); - ret = index; + final int ret = index; constants[index++] = new ConstantFieldref(classIndex, nameAndTypeIndex); - final String key = className + FIELDREF_DELIM + fieldName + FIELDREF_DELIM + signature; - if (!cpTable.containsKey(key)) { - cpTable.put(key, Integer.valueOf(ret)); - } - return ret; + return computeIfAbsent(cpTable, className + FIELDREF_DELIM + fieldName + FIELDREF_DELIM + signature, ret); } /** @@ -414,22 +409,18 @@ public class ConstantPoolGen { * @return index of entry */ public int addInterfaceMethodref(final String className, final String methodName, final String signature) { - int ret; + final int cpRet; int classIndex; int nameAndTypeIndex; - if ((ret = lookupInterfaceMethodref(className, methodName, signature)) != -1) { - return ret; // Already in CP + if ((cpRet = lookupInterfaceMethodref(className, methodName, signature)) != -1) { + return cpRet; // Already in CP } adjustSize(); classIndex = addClass(className); nameAndTypeIndex = addNameAndType(methodName, signature); - ret = index; + final int ret = index; constants[index++] = new ConstantInterfaceMethodref(classIndex, nameAndTypeIndex); - final String key = className + IMETHODREF_DELIM + methodName + IMETHODREF_DELIM + signature; - if (!cpTable.containsKey(key)) { - cpTable.put(key, Integer.valueOf(ret)); - } - return ret; + return computeIfAbsent(cpTable, className + IMETHODREF_DELIM + methodName + IMETHODREF_DELIM + signature, ret); } /** @@ -449,7 +440,6 @@ public class ConstantPoolGen { index += 2; // Wastes one entry according to spec return ret; } - public int addMethodref(final MethodGen method) { return addMethodref(method.getClassName(), method.getName(), method.getSignature()); } @@ -463,22 +453,18 @@ public class ConstantPoolGen { * @return index of entry */ public int addMethodref(final String className, final String methodName, final String signature) { - int ret; + final int cpRet; int classIndex; int nameAndTypeIndex; - if ((ret = lookupMethodref(className, methodName, signature)) != -1) { - return ret; // Already in CP + if ((cpRet = lookupMethodref(className, methodName, signature)) != -1) { + return cpRet; // Already in CP } adjustSize(); nameAndTypeIndex = addNameAndType(methodName, signature); classIndex = addClass(className); - ret = index; + final int ret = index; constants[index++] = new ConstantMethodref(classIndex, nameAndTypeIndex); - final String key = className + METHODREF_DELIM + methodName + METHODREF_DELIM + signature; - if (!cpTable.containsKey(key)) { - cpTable.put(key, Integer.valueOf(ret)); - } - return ret; + return computeIfAbsent(cpTable, className + METHODREF_DELIM + methodName + METHODREF_DELIM + signature, ret); } /** @@ -500,11 +486,7 @@ public class ConstantPoolGen { signatureIndex = addUtf8(signature); ret = index; constants[index++] = new ConstantNameAndType(nameIndex, signatureIndex); - final String key = name + NAT_DELIM + signature; - if (!natTable.containsKey(key)) { - natTable.put(key, Integer.valueOf(ret)); - } - return ret; + return computeIfAbsent(natTable, name + NAT_DELIM + signature, ret); } /** @@ -523,10 +505,7 @@ public class ConstantPoolGen { final ConstantString s = new ConstantString(utf8); ret = index; constants[index++] = s; - if (!stringTable.containsKey(str)) { - stringTable.put(str, Integer.valueOf(ret)); - } - return ret; + return computeIfAbsent(stringTable, str, ret); } /** @@ -543,10 +522,7 @@ public class ConstantPoolGen { adjustSize(); ret = index; constants[index++] = new ConstantUtf8(n); - if (!utf8Table.containsKey(n)) { - utf8Table.put(n, Integer.valueOf(ret)); - } - return ret; + return computeIfAbsent(utf8Table, n, ret); } /** @@ -570,6 +546,10 @@ public class ConstantPoolGen { } } + private int computeIfAbsent(final Map<String, Integer> map, final String key, final int value) { + return map.computeIfAbsent(key, k -> Integer.valueOf(value)); + } + /** * @param i index in constant pool * @return constant pool entry at index i