More review comments. Fix concurrency issue.
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4Address.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4Address.java
index 2505d56..a75c2ee 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4Address.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4Address.java
@@ -18,8 +18,8 @@
static final int LENGTH = 4;
private final int rawValue;
- private static int NOT_A_CIDR_MASK = -1;
- private static int CIDR_MASK_CACHE_UNSET = -2;
+ private static final int NOT_A_CIDR_MASK = -1;
+ private static final int CIDR_MASK_CACHE_UNSET = -2;
// Must appear before the static IPv4Address constant assignments
private volatile int cidrMaskLengthCache = CIDR_MASK_CACHE_UNSET;
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6Address.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6Address.java
index b69035c..4e7b856 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6Address.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6Address.java
@@ -18,8 +18,8 @@
private final long raw1;
private final long raw2;
- private static int NOT_A_CIDR_MASK = -1;
- private static int CIDR_MASK_CACHE_UNSET = -2;
+ private static final int NOT_A_CIDR_MASK = -1;
+ private static final int CIDR_MASK_CACHE_UNSET = -2;
// Must appear before the static IPv4Address constant assignments
private volatile int cidrMaskLengthCache = CIDR_MASK_CACHE_UNSET;
@@ -46,7 +46,7 @@
long mask = raw;
if (raw == 0)
return 0;
- else if (Long.bitCount((~mask) + 1L) == 1L) {
+ else if (Long.bitCount((~mask) + 1) == 1) {
// represent a true CIDR prefix length
return Long.bitCount(mask);
}
@@ -58,19 +58,19 @@
private int asCidrMaskLengthInternal() {
if (cidrMaskLengthCache == CIDR_MASK_CACHE_UNSET) {
- synchronized (this) {
- if (raw1 == 0 && raw2 == 0) {
- cidrMaskLengthCache = 0;
- } else if (raw1 == -1) {
- // top half is all 1 bits
- cidrMaskLengthCache = computeCidrMask64(raw2);
- if (cidrMaskLengthCache != NOT_A_CIDR_MASK)
- cidrMaskLengthCache += 64;
- } else if (raw2 == 0) {
- cidrMaskLengthCache = computeCidrMask64(raw1);
- } else {
- cidrMaskLengthCache = NOT_A_CIDR_MASK;
- }
+ // No synchronization needed. Writing cidrMaskLengthCache only once
+ if (raw1 == 0 && raw2 == 0) {
+ cidrMaskLengthCache = 0;
+ } else if (raw1 == -1L) {
+ // top half is all 1 bits
+ int tmpLength = computeCidrMask64(raw2);
+ if (tmpLength != NOT_A_CIDR_MASK)
+ tmpLength += 64;
+ cidrMaskLengthCache = tmpLength;
+ } else if (raw2 == 0) {
+ cidrMaskLengthCache = computeCidrMask64(raw1);
+ } else {
+ cidrMaskLengthCache = NOT_A_CIDR_MASK;
}
}
return cidrMaskLengthCache;