This commit is contained in:
peter lawrey
2018-09-14 11:26:13 +00:00
parent 337698b408
commit b413c026ee
7 changed files with 22 additions and 6 deletions
@@ -750,6 +750,7 @@ public final class ChronicleMapBuilder<K, V> implements
double valueSize = averageValueSize();
size += averageSizeStoringLength(valueBuilder, valueSize);
int alignment = valueAlignment();
size = alignAddr((long) Math.ceil(size), alignment); // so the value starts aligned
int worstAlignment;
if (worstAlignmentComputationRequiresValueSize(alignment)) {
long constantSizeBeforeAlignment = toLong(size);
@@ -925,6 +926,8 @@ public final class ChronicleMapBuilder<K, V> implements
throw new IllegalArgumentException("Alignment should be a power of 2, " + alignment +
" given");
}
if (Jvm.isArm() && alignment < 8)
return this;
this.alignment = alignment;
return this;
}
@@ -144,7 +144,6 @@ public enum ZeroBytesStore implements BytesStore<ZeroBytesStore, Void> {
throw new UnsupportedOperationException();
}
@Override
public boolean compareAndSwapLong(long offset, long expected, long value) {
if (expected != 0 || value != 0)
@@ -152,6 +151,7 @@ public enum ZeroBytesStore implements BytesStore<ZeroBytesStore, Void> {
return true;
}
@Override
public void reserve() throws IllegalStateException {
}
@@ -619,7 +619,7 @@ public class ChronicleMapTest {
.entries((long) entries)
.minSegments(1)
.averageKeySize(10)
.entryAndValueOffsetAlignment(4)
.entryAndValueOffsetAlignment(8)
.create()) {
LongValue value4 = Values.newNativeReference(LongValue.class);
LongValue value22 = Values.newNativeReference(LongValue.class);
@@ -651,9 +651,9 @@ public class ChronicleMapTest {
try (ChronicleMap<CharSequence, LongValue> map1 = ChronicleMapBuilder.of(CharSequence.class,
LongValue.class)
.entries((long) entries)
.minSegments(1)
// .minSegments(1)
.averageKeySize(10)
.entryAndValueOffsetAlignment(1)
// .entryAndValueOffsetAlignment(8)
.create()) {
LongValue value1 = Values.newNativeReference(LongValue.class);
LongValue value21 = Values.newNativeReference(LongValue.class);
@@ -17,6 +17,7 @@
package net.openhft.chronicle.map;
import net.openhft.chronicle.core.Jvm;
import net.openhft.chronicle.core.values.IntValue;
import net.openhft.chronicle.values.MaxUtf8Length;
import net.openhft.chronicle.values.Values;
@@ -29,6 +30,7 @@ import java.util.Map;
import static net.openhft.chronicle.values.Values.newNativeReference;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assume.assumeFalse;
interface DemoOrderVOInterface {
public CharSequence getSymbol();
@@ -48,6 +50,7 @@ public class DemoChronicleMapTest {
@Test
public void testMap() throws IOException {
assumeFalse(Jvm.isArm());
File file = File.createTempFile("DummyOrders" + System.currentTimeMillis(), ".test");
file.deleteOnExit();
int maxEntries = 1000;
@@ -56,6 +59,7 @@ public class DemoChronicleMapTest {
.putReturnsNull(true)
.removeReturnsNull(true)
.entries(maxEntries)
.entryAndValueOffsetAlignment(8)
.createPersistedTo(file)) {
IntValue key = Values.newHeapInstance(IntValue.class);
@@ -90,6 +94,7 @@ public class DemoChronicleMapTest {
@Test
public void testMapLocked() throws IOException {
assumeFalse(Jvm.isArm());
File file = File.createTempFile("DummyOrders-" + System.currentTimeMillis(), ".test");
file.deleteOnExit();
int maxEntries = 1000;
@@ -98,6 +103,7 @@ public class DemoChronicleMapTest {
.putReturnsNull(true)
.removeReturnsNull(true)
.entries(maxEntries)
.entryAndValueOffsetAlignment(8)
.createPersistedTo(file)) {
IntValue key = Values.newHeapInstance(IntValue.class);
@@ -17,6 +17,7 @@
package net.openhft.chronicle.map;
import net.openhft.chronicle.core.Jvm;
import net.openhft.chronicle.core.values.LongValue;
import net.openhft.chronicle.hash.ChecksumEntry;
import net.openhft.chronicle.hash.ChronicleHashBuilderPrivateAPI;
@@ -40,6 +41,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import static net.openhft.chronicle.map.ChronicleMapTest.getPersistenceFile;
import static org.junit.Assert.*;
import static org.junit.Assume.assumeFalse;
public class RecoverTest {
@@ -126,6 +128,7 @@ public class RecoverTest {
@Test
public void testCorruptedEntryRecovery() throws IOException {
assumeFalse(Jvm.isArm());
File file = getPersistenceFile();
try (ChronicleMap<Integer, LongValue> map = ChronicleMap
.of(Integer.class, LongValue.class)
@@ -17,6 +17,7 @@
package net.openhft.chronicle.map.fromdocs;
import net.openhft.chronicle.core.Jvm;
import net.openhft.chronicle.core.values.LongValue;
import net.openhft.chronicle.hash.ChecksumEntry;
import net.openhft.chronicle.map.ChronicleMap;
@@ -30,10 +31,13 @@ import org.junit.Test;
import java.io.File;
import java.io.IOException;
import static org.junit.Assume.assumeFalse;
public class ChecksumEntryTest {
@Test
public void testChecksumEntriesWithValueInterface() throws IOException {
assumeFalse(Jvm.isArm());
File file = Builder.getPersistenceFile();
try (ChronicleMap<Integer, LongValue> map = ChronicleMap
@@ -23,6 +23,7 @@ import net.openhft.chronicle.map.ExternalMapQueryContext;
import net.openhft.chronicle.values.Values;
import org.junit.Test;
import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
@@ -99,8 +100,7 @@ public class OpenJDKAndHashMapExamplesTest {
BondVOInterface bond = Values.newNativeReference(BondVOInterface.class);
// lookup the key and give me a reference I can update in a thread safe way.
try (net.openhft.chronicle.core.io.Closeable c =
chm.acquireContext("369604103", bond)) {
try (Closeable c = chm.acquireContext("369604103", bond)) {
// found a key and bond has been set
// get directly without touching the rest of the record.
long _matDate = bond.getMaturityDate();