From b06c64a47c008b2deb54b251d8a173e6f0dfb84d Mon Sep 17 00:00:00 2001 From: leventov Date: Tue, 19 Jan 2016 18:34:09 +0300 Subject: [PATCH] Don't serialize HashSplitting$ForPowerOf2Segments.mask field --- .../net/openhft/chronicle/hash/impl/HashSplitting.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/openhft/chronicle/hash/impl/HashSplitting.java b/src/main/java/net/openhft/chronicle/hash/impl/HashSplitting.java index 3abdad57e..447a1531c 100644 --- a/src/main/java/net/openhft/chronicle/hash/impl/HashSplitting.java +++ b/src/main/java/net/openhft/chronicle/hash/impl/HashSplitting.java @@ -16,6 +16,7 @@ package net.openhft.chronicle.hash.impl; +import net.openhft.chronicle.core.Maths; import net.openhft.chronicle.hash.serialization.impl.EnumMarshallable; import net.openhft.chronicle.wire.Marshallable; import net.openhft.chronicle.wire.WireIn; @@ -61,12 +62,13 @@ public interface HashSplitting extends Marshallable { class ForPowerOf2Segments implements HashSplitting { - private int mask; private int bits; + private transient int mask; ForPowerOf2Segments(int segments) { - mask = segments - 1; + assert Maths.isPowerOf2(segments); bits = Integer.numberOfTrailingZeros(segments); + mask = segments - 1; } @Override @@ -81,13 +83,12 @@ public interface HashSplitting extends Marshallable { @Override public void readMarshallable(@NotNull WireIn wire) { - mask = wire.read(() -> "mask").int32(); bits = wire.read(() -> "bits").int32(); + mask = (1 << bits) - 1; } @Override public void writeMarshallable(@NotNull WireOut wire) { - wire.write(() -> "mask").int32(mask); wire.write(() -> "bits").int32(bits); } }