http://git-wip-us.apache.org/repos/asf/geode/blob/d4f23332/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapObjectKey.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapObjectKey.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapObjectKey.java index 5e5707c..a4e2756 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapObjectKey.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapObjectKey.java @@ -15,73 +15,119 @@ package org.apache.geode.internal.cache; // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + + + + + + import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; + import java.util.concurrent.atomic.AtomicLongFieldUpdater; + + + + import org.apache.geode.internal.cache.lru.EnableLRU; + + + + + + + + import org.apache.geode.internal.cache.lru.LRUClockNode; import org.apache.geode.internal.cache.lru.NewLRUClockHand; + + + + + + + + import org.apache.geode.internal.offheap.OffHeapRegionEntryHelper; import org.apache.geode.internal.offheap.annotations.Released; import org.apache.geode.internal.offheap.annotations.Retained; import org.apache.geode.internal.offheap.annotations.Unretained; + import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.HashEntry; // macros whose definition changes this class: // disk: DISK -// lru: LRU +// lru: 1 // stats: STATS // versioned: VERSIONED -// offheap: OFFHEAP +// offheap: 1 // One of the following key macros must be defined: -// key object: KEY_OBJECT +// key object: 1 // key int: KEY_INT // key long: KEY_LONG // key uuid: KEY_UUID // key string1: KEY_STRING1 // key string2: KEY_STRING2 + /** * Do not modify this class. It was generated. Instead modify LeafRegionEntry.cpp and then run * ./dev-tools/generateRegionEntryClasses.sh (it must be run from the top level directory). */ public class VMThinLRURegionEntryOffHeapObjectKey extends VMThinLRURegionEntryOffHeap { - public VMThinLRURegionEntryOffHeapObjectKey(RegionEntryContext context, Object key, - @Retained Object value) { - super(context, value); + public VMThinLRURegionEntryOffHeapObjectKey (RegionEntryContext context, Object key, + + @Retained + + Object value + + + + ) { + super(context, + + + + value + + ); // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + + + + this.key = key; + } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // common code protected int hash; private HashEntry<Object, Object> next; @SuppressWarnings("unused") private volatile long lastModified; - private static final AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapObjectKey> lastModifiedUpdater = - AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapObjectKey.class, "lastModified"); + private static final AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapObjectKey> lastModifiedUpdater + = AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapObjectKey.class, "lastModified"); + /** * All access done using ohAddrUpdater so it is used even though the compiler can not tell it is. */ @SuppressWarnings("unused") - @Retained - @Released - private volatile long ohAddress; + @Retained @Released private volatile long ohAddress; /** - * I needed to add this because I wanted clear to call setValue which normally can only be called - * while the re is synced. But if I sync in that code it causes a lock ordering deadlock with the - * disk regions because they also get a rw lock in clear. Some hardware platforms do not support - * CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync on the - * re and we will once again be deadlocked. I don't know if we support any of the hardware - * platforms that do not have a 64bit CAS. If we do then we can expect deadlocks on disk regions. + * I needed to add this because I wanted clear to call setValue which normally can only be called while the re is synced. + * But if I sync in that code it causes a lock ordering deadlock with the disk regions because they also get a rw lock in clear. + * Some hardware platforms do not support CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync + * on the re and we will once again be deadlocked. + * I don't know if we support any of the hardware platforms that do not have a 64bit CAS. If we do then we can expect deadlocks + * on disk regions. */ - private final static AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapObjectKey> ohAddrUpdater = - AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapObjectKey.class, "ohAddress"); - + private final static AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapObjectKey> ohAddrUpdater = AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapObjectKey.class, "ohAddress"); + @Override public Token getValueAsToken() { return OffHeapRegionEntryHelper.getValueAsToken(this); } - + @Override protected Object getValueField() { return OffHeapRegionEntryHelper._getValue(this); @@ -89,13 +135,18 @@ public class VMThinLRURegionEntryOffHeapObjectKey extends VMThinLRURegionEntryOf // DO NOT modify this class. It was generated from LeafRegionEntry.cpp @Override + @Unretained protected void setValueField(@Unretained Object v) { + + + OffHeapRegionEntryHelper.setValue(this, v); } - @Override + @Retained + public Object _getValueRetain(RegionEntryContext context, boolean decompress) { return OffHeapRegionEntryHelper._getValueRetain(this, decompress, context); } @@ -109,47 +160,44 @@ public class VMThinLRURegionEntryOffHeapObjectKey extends VMThinLRURegionEntryOf public boolean setAddress(long expectedAddr, long newAddr) { return ohAddrUpdater.compareAndSet(this, expectedAddr, newAddr); } - + @Override + @Released + public void release() { OffHeapRegionEntryHelper.releaseEntry(this); } - + @Override public void returnToPool() { // Deadcoded for now; never was working - // if (this instanceof VMThinRegionEntryLongKey) { - // factory.returnToPool((VMThinRegionEntryLongKey)this); - // } +// if (this instanceof VMThinRegionEntryLongKey) { +// factory.returnToPool((VMThinRegionEntryLongKey)this); +// } } - protected long getlastModifiedField() { + protected long getLastModifiedField() { return lastModifiedUpdater.get(this); } - protected boolean compareAndSetLastModifiedField(long expectedValue, long newValue) { return lastModifiedUpdater.compareAndSet(this, expectedValue, newValue); } - /** * @see HashEntry#getEntryHash() */ public final int getEntryHash() { return this.hash; } - protected void setEntryHash(int v) { this.hash = v; } - /** * @see HashEntry#getNextEntry() */ public final HashEntry<Object, Object> getNextEntry() { return this.next; } - /** * @see HashEntry#setNextEntry */ @@ -157,109 +205,122 @@ public class VMThinLRURegionEntryOffHeapObjectKey extends VMThinLRURegionEntryOf this.next = n; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // lru code @Override public void setDelayedDiskId(LocalRegion r) { - // nothing needed for LRUs with no disk - } + + + + + // nothing needed for LRUs with no disk + + } public final synchronized int updateEntrySize(EnableLRU capacityController) { - return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing - // refcount because we are synced and - // only getting the size + return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing refcount because we are synced and only getting the size } - + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp - public final synchronized int updateEntrySize(EnableLRU capacityController, Object value) { + + public final synchronized int updateEntrySize(EnableLRU capacityController, + Object value) { int oldSize = getEntrySize(); - int newSize = capacityController.entrySize(getKeyForSizing(), value); + int newSize = capacityController.entrySize( getKeyForSizing(), value); setEntrySize(newSize); int delta = newSize - oldSize; - // if ( debug ) log( "updateEntrySize key=" + getKey() - // + (_getValue() == Token.INVALID ? " invalid" : - // (_getValue() == Token.LOCAL_INVALID ? "local_invalid" : - // (_getValue()==null ? " evicted" : " valid"))) - // + " oldSize=" + oldSize - // + " newSize=" + this.size ); + // if ( debug ) log( "updateEntrySize key=" + getKey() + // + (_getValue() == Token.INVALID ? " invalid" : + // (_getValue() == Token.LOCAL_INVALID ? "local_invalid" : + // (_getValue()==null ? " evicted" : " valid"))) + // + " oldSize=" + oldSize + // + " newSize=" + this.size ); return delta; } - public final boolean testRecentlyUsed() { return areAnyBitsSet(RECENTLY_USED); } - @Override public final void setRecentlyUsed() { setBits(RECENTLY_USED); } - public final void unsetRecentlyUsed() { clearBits(~RECENTLY_USED); } - public final boolean testEvicted() { return areAnyBitsSet(EVICTED); } - public final void setEvicted() { setBits(EVICTED); } - public final void unsetEvicted() { clearBits(~EVICTED); } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + private LRUClockNode nextLRU; private LRUClockNode prevLRU; private int size; - - public final void setNextLRUNode(LRUClockNode next) { + public final void setNextLRUNode( LRUClockNode next ) { this.nextLRU = next; } - public final LRUClockNode nextLRUNode() { return this.nextLRU; } - - public final void setPrevLRUNode(LRUClockNode prev) { + public final void setPrevLRUNode( LRUClockNode prev ) { this.prevLRU = prev; } - public final LRUClockNode prevLRUNode() { return this.prevLRU; } - public final int getEntrySize() { return this.size; } - protected final void setEntrySize(int size) { this.size = size; } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp - // @Override - // public StringBuilder appendFieldsToString(final StringBuilder sb) { - // StringBuilder result = super.appendFieldsToString(sb); - // result.append("; prev=").append(this.prevLRU==null?"null":"not null"); - // result.append("; next=").append(this.nextLRU==null?"null":"not null"); - // return result; - // } + +//@Override +//public StringBuilder appendFieldsToString(final StringBuilder sb) { +// StringBuilder result = super.appendFieldsToString(sb); +// result.append("; prev=").append(this.prevLRU==null?"null":"not null"); +// result.append("; next=").append(this.nextLRU==null?"null":"not null"); +// return result; +//} + @Override public Object getKeyForSizing() { + // default implementation. return getKey(); + + + + } + + + + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // key code - private final Object key; + private final Object key; @Override public final Object getKey() { return this.key; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp } +
http://git-wip-us.apache.org/repos/asf/geode/blob/d4f23332/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapStringKey1.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapStringKey1.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapStringKey1.java index 25b1438..f82aad8 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapStringKey1.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapStringKey1.java @@ -15,91 +15,132 @@ package org.apache.geode.internal.cache; // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + + + + + + import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; + import java.util.concurrent.atomic.AtomicLongFieldUpdater; + + + + import org.apache.geode.internal.cache.lru.EnableLRU; + + + + + + + + import org.apache.geode.internal.cache.lru.LRUClockNode; import org.apache.geode.internal.cache.lru.NewLRUClockHand; + + + + + + + + import org.apache.geode.internal.offheap.OffHeapRegionEntryHelper; import org.apache.geode.internal.offheap.annotations.Released; import org.apache.geode.internal.offheap.annotations.Retained; import org.apache.geode.internal.offheap.annotations.Unretained; + import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.HashEntry; // macros whose definition changes this class: // disk: DISK -// lru: LRU +// lru: 1 // stats: STATS // versioned: VERSIONED -// offheap: OFFHEAP +// offheap: 1 // One of the following key macros must be defined: // key object: KEY_OBJECT // key int: KEY_INT // key long: KEY_LONG // key uuid: KEY_UUID -// key string1: KEY_STRING1 +// key string1: 1 // key string2: KEY_STRING2 + /** * Do not modify this class. It was generated. Instead modify LeafRegionEntry.cpp and then run * ./dev-tools/generateRegionEntryClasses.sh (it must be run from the top level directory). */ public class VMThinLRURegionEntryOffHeapStringKey1 extends VMThinLRURegionEntryOffHeap { - public VMThinLRURegionEntryOffHeapStringKey1(RegionEntryContext context, String key, - @Retained Object value, boolean byteEncode) { - super(context, value); + public VMThinLRURegionEntryOffHeapStringKey1 (RegionEntryContext context, String key, + + @Retained + + Object value + + , boolean byteEncode + + ) { + super(context, + + + + value + + ); // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // caller has already confirmed that key.length <= MAX_INLINE_STRING_KEY long tmpBits1 = 0L; if (byteEncode) { - for (int i = key.length() - 1; i >= 0; i--) { - // Note: we know each byte is <= 0x7f so the "& 0xff" is not needed. But I added it in to - // keep findbugs happy. - tmpBits1 |= (byte) key.charAt(i) & 0xff; + for (int i=key.length()-1; i >= 0; i--) { + // Note: we know each byte is <= 0x7f so the "& 0xff" is not needed. But I added it in to keep findbugs happy. + tmpBits1 |= (byte)key.charAt(i) & 0xff; tmpBits1 <<= 8; } - tmpBits1 |= 1 << 6; + tmpBits1 |= 1<<6; } else { - for (int i = key.length() - 1; i >= 0; i--) { + for (int i=key.length()-1; i >= 0; i--) { tmpBits1 |= key.charAt(i); tmpBits1 <<= 16; } } tmpBits1 |= key.length(); this.bits1 = tmpBits1; + } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // common code protected int hash; private HashEntry<Object, Object> next; @SuppressWarnings("unused") private volatile long lastModified; - private static final AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapStringKey1> lastModifiedUpdater = - AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapStringKey1.class, - "lastModified"); + private static final AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapStringKey1> lastModifiedUpdater + = AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapStringKey1.class, "lastModified"); + /** * All access done using ohAddrUpdater so it is used even though the compiler can not tell it is. */ @SuppressWarnings("unused") - @Retained - @Released - private volatile long ohAddress; + @Retained @Released private volatile long ohAddress; /** - * I needed to add this because I wanted clear to call setValue which normally can only be called - * while the re is synced. But if I sync in that code it causes a lock ordering deadlock with the - * disk regions because they also get a rw lock in clear. Some hardware platforms do not support - * CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync on the - * re and we will once again be deadlocked. I don't know if we support any of the hardware - * platforms that do not have a 64bit CAS. If we do then we can expect deadlocks on disk regions. + * I needed to add this because I wanted clear to call setValue which normally can only be called while the re is synced. + * But if I sync in that code it causes a lock ordering deadlock with the disk regions because they also get a rw lock in clear. + * Some hardware platforms do not support CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync + * on the re and we will once again be deadlocked. + * I don't know if we support any of the hardware platforms that do not have a 64bit CAS. If we do then we can expect deadlocks + * on disk regions. */ - private final static AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapStringKey1> ohAddrUpdater = - AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapStringKey1.class, "ohAddress"); - + private final static AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapStringKey1> ohAddrUpdater = AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapStringKey1.class, "ohAddress"); + @Override public Token getValueAsToken() { return OffHeapRegionEntryHelper.getValueAsToken(this); } - + @Override protected Object getValueField() { return OffHeapRegionEntryHelper._getValue(this); @@ -107,13 +148,18 @@ public class VMThinLRURegionEntryOffHeapStringKey1 extends VMThinLRURegionEntryO // DO NOT modify this class. It was generated from LeafRegionEntry.cpp @Override + @Unretained protected void setValueField(@Unretained Object v) { + + + OffHeapRegionEntryHelper.setValue(this, v); } - @Override + @Retained + public Object _getValueRetain(RegionEntryContext context, boolean decompress) { return OffHeapRegionEntryHelper._getValueRetain(this, decompress, context); } @@ -127,47 +173,44 @@ public class VMThinLRURegionEntryOffHeapStringKey1 extends VMThinLRURegionEntryO public boolean setAddress(long expectedAddr, long newAddr) { return ohAddrUpdater.compareAndSet(this, expectedAddr, newAddr); } - + @Override + @Released + public void release() { OffHeapRegionEntryHelper.releaseEntry(this); } - + @Override public void returnToPool() { // Deadcoded for now; never was working - // if (this instanceof VMThinRegionEntryLongKey) { - // factory.returnToPool((VMThinRegionEntryLongKey)this); - // } +// if (this instanceof VMThinRegionEntryLongKey) { +// factory.returnToPool((VMThinRegionEntryLongKey)this); +// } } - protected long getlastModifiedField() { + protected long getLastModifiedField() { return lastModifiedUpdater.get(this); } - protected boolean compareAndSetLastModifiedField(long expectedValue, long newValue) { return lastModifiedUpdater.compareAndSet(this, expectedValue, newValue); } - /** * @see HashEntry#getEntryHash() */ public final int getEntryHash() { return this.hash; } - protected void setEntryHash(int v) { this.hash = v; } - /** * @see HashEntry#getNextEntry() */ public final HashEntry<Object, Object> getNextEntry() { return this.next; } - /** * @see HashEntry#setNextEntry */ @@ -175,128 +218,136 @@ public class VMThinLRURegionEntryOffHeapStringKey1 extends VMThinLRURegionEntryO this.next = n; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // lru code @Override public void setDelayedDiskId(LocalRegion r) { - // nothing needed for LRUs with no disk - } + + + + + // nothing needed for LRUs with no disk + + } public final synchronized int updateEntrySize(EnableLRU capacityController) { - return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing - // refcount because we are synced and - // only getting the size + return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing refcount because we are synced and only getting the size } - + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp - public final synchronized int updateEntrySize(EnableLRU capacityController, Object value) { + + public final synchronized int updateEntrySize(EnableLRU capacityController, + Object value) { int oldSize = getEntrySize(); - int newSize = capacityController.entrySize(getKeyForSizing(), value); + int newSize = capacityController.entrySize( getKeyForSizing(), value); setEntrySize(newSize); int delta = newSize - oldSize; - // if ( debug ) log( "updateEntrySize key=" + getKey() - // + (_getValue() == Token.INVALID ? " invalid" : - // (_getValue() == Token.LOCAL_INVALID ? "local_invalid" : - // (_getValue()==null ? " evicted" : " valid"))) - // + " oldSize=" + oldSize - // + " newSize=" + this.size ); + // if ( debug ) log( "updateEntrySize key=" + getKey() + // + (_getValue() == Token.INVALID ? " invalid" : + // (_getValue() == Token.LOCAL_INVALID ? "local_invalid" : + // (_getValue()==null ? " evicted" : " valid"))) + // + " oldSize=" + oldSize + // + " newSize=" + this.size ); return delta; } - public final boolean testRecentlyUsed() { return areAnyBitsSet(RECENTLY_USED); } - @Override public final void setRecentlyUsed() { setBits(RECENTLY_USED); } - public final void unsetRecentlyUsed() { clearBits(~RECENTLY_USED); } - public final boolean testEvicted() { return areAnyBitsSet(EVICTED); } - public final void setEvicted() { setBits(EVICTED); } - public final void unsetEvicted() { clearBits(~EVICTED); } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + private LRUClockNode nextLRU; private LRUClockNode prevLRU; private int size; - - public final void setNextLRUNode(LRUClockNode next) { + public final void setNextLRUNode( LRUClockNode next ) { this.nextLRU = next; } - public final LRUClockNode nextLRUNode() { return this.nextLRU; } - - public final void setPrevLRUNode(LRUClockNode prev) { + public final void setPrevLRUNode( LRUClockNode prev ) { this.prevLRU = prev; } - public final LRUClockNode prevLRUNode() { return this.prevLRU; } - public final int getEntrySize() { return this.size; } - protected final void setEntrySize(int size) { this.size = size; } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp - // @Override - // public StringBuilder appendFieldsToString(final StringBuilder sb) { - // StringBuilder result = super.appendFieldsToString(sb); - // result.append("; prev=").append(this.prevLRU==null?"null":"not null"); - // result.append("; next=").append(this.nextLRU==null?"null":"not null"); - // return result; - // } + +//@Override +//public StringBuilder appendFieldsToString(final StringBuilder sb) { +// StringBuilder result = super.appendFieldsToString(sb); +// result.append("; prev=").append(this.prevLRU==null?"null":"not null"); +// result.append("; next=").append(this.nextLRU==null?"null":"not null"); +// return result; +//} + @Override public Object getKeyForSizing() { + + + + // inline keys always report null for sizing since the size comes from the entry size return null; + } + + + + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // key code - private final long bits1; + private final long bits1; private int getKeyLength() { return (int) (this.bits1 & 0x003fL); } - private int getEncoding() { // 0 means encoded as char // 1 means encoded as bytes that are all <= 0x7f; return (int) (this.bits1 >> 6) & 0x03; } - @Override public final Object getKey() { int keylen = getKeyLength(); char[] chars = new char[keylen]; long tmpBits1 = this.bits1; if (getEncoding() == 1) { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { tmpBits1 >>= 8; - chars[i] = (char) (tmpBits1 & 0x00ff); + chars[i] = (char) (tmpBits1 & 0x00ff); } } else { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { tmpBits1 >>= 16; chars[i] = (char) (tmpBits1 & 0x00FFff); } @@ -305,15 +356,16 @@ public class VMThinLRURegionEntryOffHeapStringKey1 extends VMThinLRURegionEntryO } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + @Override public boolean isKeyEqual(Object k) { if (k instanceof String) { - String str = (String) k; + String str = (String)k; int keylen = getKeyLength(); if (str.length() == keylen) { long tmpBits1 = this.bits1; if (getEncoding() == 1) { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { tmpBits1 >>= 8; char c = (char) (tmpBits1 & 0x00ff); if (str.charAt(i) != c) { @@ -321,7 +373,7 @@ public class VMThinLRURegionEntryOffHeapStringKey1 extends VMThinLRURegionEntryO } } } else { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { tmpBits1 >>= 16; char c = (char) (tmpBits1 & 0x00FFff); if (str.charAt(i) != c) { @@ -334,5 +386,8 @@ public class VMThinLRURegionEntryOffHeapStringKey1 extends VMThinLRURegionEntryO } return false; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp } + http://git-wip-us.apache.org/repos/asf/geode/blob/d4f23332/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapStringKey2.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapStringKey2.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapStringKey2.java index c412854..d761a3c 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapStringKey2.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapStringKey2.java @@ -15,57 +15,99 @@ package org.apache.geode.internal.cache; // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + + + + + + import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; + import java.util.concurrent.atomic.AtomicLongFieldUpdater; + + + + import org.apache.geode.internal.cache.lru.EnableLRU; + + + + + + + + import org.apache.geode.internal.cache.lru.LRUClockNode; import org.apache.geode.internal.cache.lru.NewLRUClockHand; + + + + + + + + import org.apache.geode.internal.offheap.OffHeapRegionEntryHelper; import org.apache.geode.internal.offheap.annotations.Released; import org.apache.geode.internal.offheap.annotations.Retained; import org.apache.geode.internal.offheap.annotations.Unretained; + import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.HashEntry; // macros whose definition changes this class: // disk: DISK -// lru: LRU +// lru: 1 // stats: STATS // versioned: VERSIONED -// offheap: OFFHEAP +// offheap: 1 // One of the following key macros must be defined: // key object: KEY_OBJECT // key int: KEY_INT // key long: KEY_LONG // key uuid: KEY_UUID // key string1: KEY_STRING1 -// key string2: KEY_STRING2 +// key string2: 1 + /** * Do not modify this class. It was generated. Instead modify LeafRegionEntry.cpp and then run * ./dev-tools/generateRegionEntryClasses.sh (it must be run from the top level directory). */ public class VMThinLRURegionEntryOffHeapStringKey2 extends VMThinLRURegionEntryOffHeap { - public VMThinLRURegionEntryOffHeapStringKey2(RegionEntryContext context, String key, - @Retained Object value, boolean byteEncode) { - super(context, value); + public VMThinLRURegionEntryOffHeapStringKey2 (RegionEntryContext context, String key, + + @Retained + + Object value + + , boolean byteEncode + + ) { + super(context, + + + + value + + ); // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // caller has already confirmed that key.length <= MAX_INLINE_STRING_KEY long tmpBits1 = 0L; long tmpBits2 = 0L; if (byteEncode) { - for (int i = key.length() - 1; i >= 0; i--) { - // Note: we know each byte is <= 0x7f so the "& 0xff" is not needed. But I added it in to - // keep findbugs happy. + for (int i=key.length()-1; i >= 0; i--) { + // Note: we know each byte is <= 0x7f so the "& 0xff" is not needed. But I added it in to keep findbugs happy. if (i < 7) { - tmpBits1 |= (byte) key.charAt(i) & 0xff; + tmpBits1 |= (byte)key.charAt(i) & 0xff; tmpBits1 <<= 8; } else { tmpBits2 <<= 8; - tmpBits2 |= (byte) key.charAt(i) & 0xff; + tmpBits2 |= (byte)key.charAt(i) & 0xff; } } - tmpBits1 |= 1 << 6; + tmpBits1 |= 1<<6; } else { - for (int i = key.length() - 1; i >= 0; i--) { + for (int i=key.length()-1; i >= 0; i--) { if (i < 3) { tmpBits1 |= key.charAt(i); tmpBits1 <<= 16; @@ -78,40 +120,39 @@ public class VMThinLRURegionEntryOffHeapStringKey2 extends VMThinLRURegionEntryO tmpBits1 |= key.length(); this.bits1 = tmpBits1; this.bits2 = tmpBits2; + } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // common code protected int hash; private HashEntry<Object, Object> next; @SuppressWarnings("unused") private volatile long lastModified; - private static final AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapStringKey2> lastModifiedUpdater = - AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapStringKey2.class, - "lastModified"); + private static final AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapStringKey2> lastModifiedUpdater + = AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapStringKey2.class, "lastModified"); + /** * All access done using ohAddrUpdater so it is used even though the compiler can not tell it is. */ @SuppressWarnings("unused") - @Retained - @Released - private volatile long ohAddress; + @Retained @Released private volatile long ohAddress; /** - * I needed to add this because I wanted clear to call setValue which normally can only be called - * while the re is synced. But if I sync in that code it causes a lock ordering deadlock with the - * disk regions because they also get a rw lock in clear. Some hardware platforms do not support - * CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync on the - * re and we will once again be deadlocked. I don't know if we support any of the hardware - * platforms that do not have a 64bit CAS. If we do then we can expect deadlocks on disk regions. + * I needed to add this because I wanted clear to call setValue which normally can only be called while the re is synced. + * But if I sync in that code it causes a lock ordering deadlock with the disk regions because they also get a rw lock in clear. + * Some hardware platforms do not support CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync + * on the re and we will once again be deadlocked. + * I don't know if we support any of the hardware platforms that do not have a 64bit CAS. If we do then we can expect deadlocks + * on disk regions. */ - private final static AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapStringKey2> ohAddrUpdater = - AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapStringKey2.class, "ohAddress"); - + private final static AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapStringKey2> ohAddrUpdater = AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapStringKey2.class, "ohAddress"); + @Override public Token getValueAsToken() { return OffHeapRegionEntryHelper.getValueAsToken(this); } - + @Override protected Object getValueField() { return OffHeapRegionEntryHelper._getValue(this); @@ -119,13 +160,18 @@ public class VMThinLRURegionEntryOffHeapStringKey2 extends VMThinLRURegionEntryO // DO NOT modify this class. It was generated from LeafRegionEntry.cpp @Override + @Unretained protected void setValueField(@Unretained Object v) { + + + OffHeapRegionEntryHelper.setValue(this, v); } - @Override + @Retained + public Object _getValueRetain(RegionEntryContext context, boolean decompress) { return OffHeapRegionEntryHelper._getValueRetain(this, decompress, context); } @@ -139,47 +185,44 @@ public class VMThinLRURegionEntryOffHeapStringKey2 extends VMThinLRURegionEntryO public boolean setAddress(long expectedAddr, long newAddr) { return ohAddrUpdater.compareAndSet(this, expectedAddr, newAddr); } - + @Override + @Released + public void release() { OffHeapRegionEntryHelper.releaseEntry(this); } - + @Override public void returnToPool() { // Deadcoded for now; never was working - // if (this instanceof VMThinRegionEntryLongKey) { - // factory.returnToPool((VMThinRegionEntryLongKey)this); - // } +// if (this instanceof VMThinRegionEntryLongKey) { +// factory.returnToPool((VMThinRegionEntryLongKey)this); +// } } - protected long getlastModifiedField() { + protected long getLastModifiedField() { return lastModifiedUpdater.get(this); } - protected boolean compareAndSetLastModifiedField(long expectedValue, long newValue) { return lastModifiedUpdater.compareAndSet(this, expectedValue, newValue); } - /** * @see HashEntry#getEntryHash() */ public final int getEntryHash() { return this.hash; } - protected void setEntryHash(int v) { this.hash = v; } - /** * @see HashEntry#getNextEntry() */ public final HashEntry<Object, Object> getNextEntry() { return this.next; } - /** * @see HashEntry#setNextEntry */ @@ -187,121 +230,129 @@ public class VMThinLRURegionEntryOffHeapStringKey2 extends VMThinLRURegionEntryO this.next = n; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // lru code @Override public void setDelayedDiskId(LocalRegion r) { - // nothing needed for LRUs with no disk - } + + + + + // nothing needed for LRUs with no disk + + } public final synchronized int updateEntrySize(EnableLRU capacityController) { - return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing - // refcount because we are synced and - // only getting the size + return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing refcount because we are synced and only getting the size } - + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp - public final synchronized int updateEntrySize(EnableLRU capacityController, Object value) { + + public final synchronized int updateEntrySize(EnableLRU capacityController, + Object value) { int oldSize = getEntrySize(); - int newSize = capacityController.entrySize(getKeyForSizing(), value); + int newSize = capacityController.entrySize( getKeyForSizing(), value); setEntrySize(newSize); int delta = newSize - oldSize; - // if ( debug ) log( "updateEntrySize key=" + getKey() - // + (_getValue() == Token.INVALID ? " invalid" : - // (_getValue() == Token.LOCAL_INVALID ? "local_invalid" : - // (_getValue()==null ? " evicted" : " valid"))) - // + " oldSize=" + oldSize - // + " newSize=" + this.size ); + // if ( debug ) log( "updateEntrySize key=" + getKey() + // + (_getValue() == Token.INVALID ? " invalid" : + // (_getValue() == Token.LOCAL_INVALID ? "local_invalid" : + // (_getValue()==null ? " evicted" : " valid"))) + // + " oldSize=" + oldSize + // + " newSize=" + this.size ); return delta; } - public final boolean testRecentlyUsed() { return areAnyBitsSet(RECENTLY_USED); } - @Override public final void setRecentlyUsed() { setBits(RECENTLY_USED); } - public final void unsetRecentlyUsed() { clearBits(~RECENTLY_USED); } - public final boolean testEvicted() { return areAnyBitsSet(EVICTED); } - public final void setEvicted() { setBits(EVICTED); } - public final void unsetEvicted() { clearBits(~EVICTED); } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + private LRUClockNode nextLRU; private LRUClockNode prevLRU; private int size; - - public final void setNextLRUNode(LRUClockNode next) { + public final void setNextLRUNode( LRUClockNode next ) { this.nextLRU = next; } - public final LRUClockNode nextLRUNode() { return this.nextLRU; } - - public final void setPrevLRUNode(LRUClockNode prev) { + public final void setPrevLRUNode( LRUClockNode prev ) { this.prevLRU = prev; } - public final LRUClockNode prevLRUNode() { return this.prevLRU; } - public final int getEntrySize() { return this.size; } - protected final void setEntrySize(int size) { this.size = size; } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp - // @Override - // public StringBuilder appendFieldsToString(final StringBuilder sb) { - // StringBuilder result = super.appendFieldsToString(sb); - // result.append("; prev=").append(this.prevLRU==null?"null":"not null"); - // result.append("; next=").append(this.nextLRU==null?"null":"not null"); - // return result; - // } + +//@Override +//public StringBuilder appendFieldsToString(final StringBuilder sb) { +// StringBuilder result = super.appendFieldsToString(sb); +// result.append("; prev=").append(this.prevLRU==null?"null":"not null"); +// result.append("; next=").append(this.nextLRU==null?"null":"not null"); +// return result; +//} + @Override public Object getKeyForSizing() { + + + + // inline keys always report null for sizing since the size comes from the entry size return null; + } + + + + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // key code + // strlen is encoded in lowest 6 bits (max strlen is 63) // character encoding info is in bits 7 and 8 // The other bits are used to encoded character data. private final long bits1; // bits2 encodes character data private final long bits2; - private int getKeyLength() { return (int) (this.bits1 & 0x003fL); } - private int getEncoding() { // 0 means encoded as char // 1 means encoded as bytes that are all <= 0x7f; return (int) (this.bits1 >> 6) & 0x03; } - @Override public final Object getKey() { int keylen = getKeyLength(); @@ -309,7 +360,7 @@ public class VMThinLRURegionEntryOffHeapStringKey2 extends VMThinLRURegionEntryO long tmpBits1 = this.bits1; long tmpBits2 = this.bits2; if (getEncoding() == 1) { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { if (i < 7) { tmpBits1 >>= 8; chars[i] = (char) (tmpBits1 & 0x00ff); @@ -319,10 +370,10 @@ public class VMThinLRURegionEntryOffHeapStringKey2 extends VMThinLRURegionEntryO } } } else { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { if (i < 3) { tmpBits1 >>= 16; - chars[i] = (char) (tmpBits1 & 0x00FFff); + chars[i] = (char) (tmpBits1 & 0x00FFff); } else { chars[i] = (char) (tmpBits2 & 0x00FFff); tmpBits2 >>= 16; @@ -333,16 +384,17 @@ public class VMThinLRURegionEntryOffHeapStringKey2 extends VMThinLRURegionEntryO } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + @Override public boolean isKeyEqual(Object k) { if (k instanceof String) { - String str = (String) k; + String str = (String)k; int keylen = getKeyLength(); if (str.length() == keylen) { long tmpBits1 = this.bits1; long tmpBits2 = this.bits2; if (getEncoding() == 1) { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { char c; if (i < 7) { tmpBits1 >>= 8; @@ -356,7 +408,7 @@ public class VMThinLRURegionEntryOffHeapStringKey2 extends VMThinLRURegionEntryO } } } else { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { char c; if (i < 3) { tmpBits1 >>= 16; @@ -375,5 +427,7 @@ public class VMThinLRURegionEntryOffHeapStringKey2 extends VMThinLRURegionEntryO } return false; } + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp } + http://git-wip-us.apache.org/repos/asf/geode/blob/d4f23332/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapUUIDKey.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapUUIDKey.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapUUIDKey.java index c572d2d..6ad4da8 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapUUIDKey.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinLRURegionEntryOffHeapUUIDKey.java @@ -15,75 +15,117 @@ package org.apache.geode.internal.cache; // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + + + import java.util.UUID; + + import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; + import java.util.concurrent.atomic.AtomicLongFieldUpdater; + + + + import org.apache.geode.internal.cache.lru.EnableLRU; + + + + + + + + import org.apache.geode.internal.cache.lru.LRUClockNode; import org.apache.geode.internal.cache.lru.NewLRUClockHand; + + + + + + + + import org.apache.geode.internal.offheap.OffHeapRegionEntryHelper; import org.apache.geode.internal.offheap.annotations.Released; import org.apache.geode.internal.offheap.annotations.Retained; import org.apache.geode.internal.offheap.annotations.Unretained; + import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.HashEntry; // macros whose definition changes this class: // disk: DISK -// lru: LRU +// lru: 1 // stats: STATS // versioned: VERSIONED -// offheap: OFFHEAP +// offheap: 1 // One of the following key macros must be defined: // key object: KEY_OBJECT // key int: KEY_INT // key long: KEY_LONG -// key uuid: KEY_UUID +// key uuid: 1 // key string1: KEY_STRING1 // key string2: KEY_STRING2 + /** * Do not modify this class. It was generated. Instead modify LeafRegionEntry.cpp and then run * ./dev-tools/generateRegionEntryClasses.sh (it must be run from the top level directory). */ public class VMThinLRURegionEntryOffHeapUUIDKey extends VMThinLRURegionEntryOffHeap { - public VMThinLRURegionEntryOffHeapUUIDKey(RegionEntryContext context, UUID key, - @Retained Object value) { - super(context, value); + public VMThinLRURegionEntryOffHeapUUIDKey (RegionEntryContext context, UUID key, + + @Retained + + Object value + + + + ) { + super(context, + + + + value + + ); // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + this.keyMostSigBits = key.getMostSignificantBits(); this.keyLeastSigBits = key.getLeastSignificantBits(); + } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // common code protected int hash; private HashEntry<Object, Object> next; @SuppressWarnings("unused") private volatile long lastModified; - private static final AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapUUIDKey> lastModifiedUpdater = - AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapUUIDKey.class, "lastModified"); + private static final AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapUUIDKey> lastModifiedUpdater + = AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapUUIDKey.class, "lastModified"); + /** * All access done using ohAddrUpdater so it is used even though the compiler can not tell it is. */ @SuppressWarnings("unused") - @Retained - @Released - private volatile long ohAddress; + @Retained @Released private volatile long ohAddress; /** - * I needed to add this because I wanted clear to call setValue which normally can only be called - * while the re is synced. But if I sync in that code it causes a lock ordering deadlock with the - * disk regions because they also get a rw lock in clear. Some hardware platforms do not support - * CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync on the - * re and we will once again be deadlocked. I don't know if we support any of the hardware - * platforms that do not have a 64bit CAS. If we do then we can expect deadlocks on disk regions. + * I needed to add this because I wanted clear to call setValue which normally can only be called while the re is synced. + * But if I sync in that code it causes a lock ordering deadlock with the disk regions because they also get a rw lock in clear. + * Some hardware platforms do not support CAS on a long. If gemfire is run on one of those the AtomicLongFieldUpdater does a sync + * on the re and we will once again be deadlocked. + * I don't know if we support any of the hardware platforms that do not have a 64bit CAS. If we do then we can expect deadlocks + * on disk regions. */ - private final static AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapUUIDKey> ohAddrUpdater = - AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapUUIDKey.class, "ohAddress"); - + private final static AtomicLongFieldUpdater<VMThinLRURegionEntryOffHeapUUIDKey> ohAddrUpdater = AtomicLongFieldUpdater.newUpdater(VMThinLRURegionEntryOffHeapUUIDKey.class, "ohAddress"); + @Override public Token getValueAsToken() { return OffHeapRegionEntryHelper.getValueAsToken(this); } - + @Override protected Object getValueField() { return OffHeapRegionEntryHelper._getValue(this); @@ -91,13 +133,18 @@ public class VMThinLRURegionEntryOffHeapUUIDKey extends VMThinLRURegionEntryOffH // DO NOT modify this class. It was generated from LeafRegionEntry.cpp @Override + @Unretained protected void setValueField(@Unretained Object v) { + + + OffHeapRegionEntryHelper.setValue(this, v); } - @Override + @Retained + public Object _getValueRetain(RegionEntryContext context, boolean decompress) { return OffHeapRegionEntryHelper._getValueRetain(this, decompress, context); } @@ -111,47 +158,44 @@ public class VMThinLRURegionEntryOffHeapUUIDKey extends VMThinLRURegionEntryOffH public boolean setAddress(long expectedAddr, long newAddr) { return ohAddrUpdater.compareAndSet(this, expectedAddr, newAddr); } - + @Override + @Released + public void release() { OffHeapRegionEntryHelper.releaseEntry(this); } - + @Override public void returnToPool() { // Deadcoded for now; never was working - // if (this instanceof VMThinRegionEntryLongKey) { - // factory.returnToPool((VMThinRegionEntryLongKey)this); - // } +// if (this instanceof VMThinRegionEntryLongKey) { +// factory.returnToPool((VMThinRegionEntryLongKey)this); +// } } - protected long getlastModifiedField() { + protected long getLastModifiedField() { return lastModifiedUpdater.get(this); } - protected boolean compareAndSetLastModifiedField(long expectedValue, long newValue) { return lastModifiedUpdater.compareAndSet(this, expectedValue, newValue); } - /** * @see HashEntry#getEntryHash() */ public final int getEntryHash() { return this.hash; } - protected void setEntryHash(int v) { this.hash = v; } - /** * @see HashEntry#getNextEntry() */ public final HashEntry<Object, Object> getNextEntry() { return this.next; } - /** * @see HashEntry#setNextEntry */ @@ -159,112 +203,121 @@ public class VMThinLRURegionEntryOffHeapUUIDKey extends VMThinLRURegionEntryOffH this.next = n; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // lru code @Override public void setDelayedDiskId(LocalRegion r) { - // nothing needed for LRUs with no disk - } + + + + + // nothing needed for LRUs with no disk + + } public final synchronized int updateEntrySize(EnableLRU capacityController) { - return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing - // refcount because we are synced and - // only getting the size + return updateEntrySize(capacityController, _getValue()); // OFHEAP: _getValue ok w/o incing refcount because we are synced and only getting the size } - + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp - public final synchronized int updateEntrySize(EnableLRU capacityController, Object value) { + + public final synchronized int updateEntrySize(EnableLRU capacityController, + Object value) { int oldSize = getEntrySize(); - int newSize = capacityController.entrySize(getKeyForSizing(), value); + int newSize = capacityController.entrySize( getKeyForSizing(), value); setEntrySize(newSize); int delta = newSize - oldSize; - // if ( debug ) log( "updateEntrySize key=" + getKey() - // + (_getValue() == Token.INVALID ? " invalid" : - // (_getValue() == Token.LOCAL_INVALID ? "local_invalid" : - // (_getValue()==null ? " evicted" : " valid"))) - // + " oldSize=" + oldSize - // + " newSize=" + this.size ); + // if ( debug ) log( "updateEntrySize key=" + getKey() + // + (_getValue() == Token.INVALID ? " invalid" : + // (_getValue() == Token.LOCAL_INVALID ? "local_invalid" : + // (_getValue()==null ? " evicted" : " valid"))) + // + " oldSize=" + oldSize + // + " newSize=" + this.size ); return delta; } - public final boolean testRecentlyUsed() { return areAnyBitsSet(RECENTLY_USED); } - @Override public final void setRecentlyUsed() { setBits(RECENTLY_USED); } - public final void unsetRecentlyUsed() { clearBits(~RECENTLY_USED); } - public final boolean testEvicted() { return areAnyBitsSet(EVICTED); } - public final void setEvicted() { setBits(EVICTED); } - public final void unsetEvicted() { clearBits(~EVICTED); } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + private LRUClockNode nextLRU; private LRUClockNode prevLRU; private int size; - - public final void setNextLRUNode(LRUClockNode next) { + public final void setNextLRUNode( LRUClockNode next ) { this.nextLRU = next; } - public final LRUClockNode nextLRUNode() { return this.nextLRU; } - - public final void setPrevLRUNode(LRUClockNode prev) { + public final void setPrevLRUNode( LRUClockNode prev ) { this.prevLRU = prev; } - public final LRUClockNode prevLRUNode() { return this.prevLRU; } - public final int getEntrySize() { return this.size; } - protected final void setEntrySize(int size) { this.size = size; } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp - // @Override - // public StringBuilder appendFieldsToString(final StringBuilder sb) { - // StringBuilder result = super.appendFieldsToString(sb); - // result.append("; prev=").append(this.prevLRU==null?"null":"not null"); - // result.append("; next=").append(this.nextLRU==null?"null":"not null"); - // return result; - // } + +//@Override +//public StringBuilder appendFieldsToString(final StringBuilder sb) { +// StringBuilder result = super.appendFieldsToString(sb); +// result.append("; prev=").append(this.prevLRU==null?"null":"not null"); +// result.append("; next=").append(this.nextLRU==null?"null":"not null"); +// return result; +//} + @Override public Object getKeyForSizing() { + + + + // inline keys always report null for sizing since the size comes from the entry size return null; + } + + + + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // key code + private final long keyMostSigBits; private final long keyLeastSigBits; - @Override public final Object getKey() { return new UUID(this.keyMostSigBits, this.keyLeastSigBits); } - @Override public boolean isKeyEqual(Object k) { if (k instanceof UUID) { @@ -274,5 +327,8 @@ public class VMThinLRURegionEntryOffHeapUUIDKey extends VMThinLRURegionEntryOffH } return false; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp } + http://git-wip-us.apache.org/repos/asf/geode/blob/d4f23332/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapIntKey.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapIntKey.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapIntKey.java index 29e86b8..cd87e95 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapIntKey.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapIntKey.java @@ -15,7 +15,16 @@ package org.apache.geode.internal.cache; // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + + + + + + + + import java.util.concurrent.atomic.AtomicLongFieldUpdater; + import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.HashEntry; // macros whose definition changes this class: @@ -26,68 +35,85 @@ import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.Ha // offheap: OFFHEAP // One of the following key macros must be defined: // key object: KEY_OBJECT -// key int: KEY_INT +// key int: 1 // key long: KEY_LONG // key uuid: KEY_UUID // key string1: KEY_STRING1 // key string2: KEY_STRING2 + /** * Do not modify this class. It was generated. Instead modify LeafRegionEntry.cpp and then run * ./dev-tools/generateRegionEntryClasses.sh (it must be run from the top level directory). */ public class VMThinRegionEntryHeapIntKey extends VMThinRegionEntryHeap { - public VMThinRegionEntryHeapIntKey(RegionEntryContext context, int key, Object value) { - super(context, value); + public VMThinRegionEntryHeapIntKey (RegionEntryContext context, int key, + + + + Object value + + + + ) { + super(context, + + + + value + + ); // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + + + + + + this.key = key; + } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // common code protected int hash; private HashEntry<Object, Object> next; @SuppressWarnings("unused") private volatile long lastModified; - private static final AtomicLongFieldUpdater<VMThinRegionEntryHeapIntKey> lastModifiedUpdater = - AtomicLongFieldUpdater.newUpdater(VMThinRegionEntryHeapIntKey.class, "lastModified"); - private volatile Object value; + private static final AtomicLongFieldUpdater<VMThinRegionEntryHeapIntKey> lastModifiedUpdater + = AtomicLongFieldUpdater.newUpdater(VMThinRegionEntryHeapIntKey.class, "lastModified"); + private volatile Object value; @Override protected final Object getValueField() { return this.value; } - @Override protected void setValueField(Object v) { this.value = v; } - protected long getlastModifiedField() { + protected long getLastModifiedField() { return lastModifiedUpdater.get(this); } - protected boolean compareAndSetLastModifiedField(long expectedValue, long newValue) { return lastModifiedUpdater.compareAndSet(this, expectedValue, newValue); } - /** * @see HashEntry#getEntryHash() */ public final int getEntryHash() { return this.hash; } - protected void setEntryHash(int v) { this.hash = v; } - /** * @see HashEntry#getNextEntry() */ public final HashEntry<Object, Object> getNextEntry() { return this.next; } - /** * @see HashEntry#setNextEntry */ @@ -95,15 +121,29 @@ public class VMThinRegionEntryHeapIntKey extends VMThinRegionEntryHeap { this.next = n; } + + + + + + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // key code - private final int key; + + + + + + + + private final int key; @Override public final Object getKey() { return this.key; } - @Override public boolean isKeyEqual(Object k) { if (k instanceof Integer) { @@ -111,5 +151,8 @@ public class VMThinRegionEntryHeapIntKey extends VMThinRegionEntryHeap { } return false; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp } + http://git-wip-us.apache.org/repos/asf/geode/blob/d4f23332/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapLongKey.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapLongKey.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapLongKey.java index 37e61e1..f813c9d 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapLongKey.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapLongKey.java @@ -15,7 +15,16 @@ package org.apache.geode.internal.cache; // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + + + + + + + + import java.util.concurrent.atomic.AtomicLongFieldUpdater; + import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.HashEntry; // macros whose definition changes this class: @@ -27,67 +36,86 @@ import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.Ha // One of the following key macros must be defined: // key object: KEY_OBJECT // key int: KEY_INT -// key long: KEY_LONG +// key long: 1 // key uuid: KEY_UUID // key string1: KEY_STRING1 // key string2: KEY_STRING2 + /** * Do not modify this class. It was generated. Instead modify LeafRegionEntry.cpp and then run * ./dev-tools/generateRegionEntryClasses.sh (it must be run from the top level directory). */ public class VMThinRegionEntryHeapLongKey extends VMThinRegionEntryHeap { - public VMThinRegionEntryHeapLongKey(RegionEntryContext context, long key, Object value) { - super(context, value); + public VMThinRegionEntryHeapLongKey (RegionEntryContext context, long key, + + + + Object value + + + + ) { + super(context, + + + + value + + ); // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + + + + + + + + this.key = key; + } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // common code protected int hash; private HashEntry<Object, Object> next; @SuppressWarnings("unused") private volatile long lastModified; - private static final AtomicLongFieldUpdater<VMThinRegionEntryHeapLongKey> lastModifiedUpdater = - AtomicLongFieldUpdater.newUpdater(VMThinRegionEntryHeapLongKey.class, "lastModified"); - private volatile Object value; + private static final AtomicLongFieldUpdater<VMThinRegionEntryHeapLongKey> lastModifiedUpdater + = AtomicLongFieldUpdater.newUpdater(VMThinRegionEntryHeapLongKey.class, "lastModified"); + private volatile Object value; @Override protected final Object getValueField() { return this.value; } - @Override protected void setValueField(Object v) { this.value = v; } - protected long getlastModifiedField() { + protected long getLastModifiedField() { return lastModifiedUpdater.get(this); } - protected boolean compareAndSetLastModifiedField(long expectedValue, long newValue) { return lastModifiedUpdater.compareAndSet(this, expectedValue, newValue); } - /** * @see HashEntry#getEntryHash() */ public final int getEntryHash() { return this.hash; } - protected void setEntryHash(int v) { this.hash = v; } - /** * @see HashEntry#getNextEntry() */ public final HashEntry<Object, Object> getNextEntry() { return this.next; } - /** * @see HashEntry#setNextEntry */ @@ -95,15 +123,22 @@ public class VMThinRegionEntryHeapLongKey extends VMThinRegionEntryHeap { this.next = n; } + + + + + + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // key code - private final long key; + private final long key; @Override public final Object getKey() { return this.key; } - @Override public boolean isKeyEqual(Object k) { if (k instanceof Long) { @@ -111,5 +146,8 @@ public class VMThinRegionEntryHeapLongKey extends VMThinRegionEntryHeap { } return false; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp } + http://git-wip-us.apache.org/repos/asf/geode/blob/d4f23332/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapObjectKey.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapObjectKey.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapObjectKey.java index 76f724d..35e333a 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapObjectKey.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapObjectKey.java @@ -15,7 +15,16 @@ package org.apache.geode.internal.cache; // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + + + + + + + + import java.util.concurrent.atomic.AtomicLongFieldUpdater; + import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.HashEntry; // macros whose definition changes this class: @@ -25,69 +34,84 @@ import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.Ha // versioned: VERSIONED // offheap: OFFHEAP // One of the following key macros must be defined: -// key object: KEY_OBJECT +// key object: 1 // key int: KEY_INT // key long: KEY_LONG // key uuid: KEY_UUID // key string1: KEY_STRING1 // key string2: KEY_STRING2 + /** * Do not modify this class. It was generated. Instead modify LeafRegionEntry.cpp and then run * ./dev-tools/generateRegionEntryClasses.sh (it must be run from the top level directory). */ public class VMThinRegionEntryHeapObjectKey extends VMThinRegionEntryHeap { - public VMThinRegionEntryHeapObjectKey(RegionEntryContext context, Object key, Object value) { - super(context, value); + public VMThinRegionEntryHeapObjectKey (RegionEntryContext context, Object key, + + + + Object value + + + + ) { + super(context, + + + + value + + ); // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + + + + this.key = key; + } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // common code protected int hash; private HashEntry<Object, Object> next; @SuppressWarnings("unused") private volatile long lastModified; - private static final AtomicLongFieldUpdater<VMThinRegionEntryHeapObjectKey> lastModifiedUpdater = - AtomicLongFieldUpdater.newUpdater(VMThinRegionEntryHeapObjectKey.class, "lastModified"); - private volatile Object value; + private static final AtomicLongFieldUpdater<VMThinRegionEntryHeapObjectKey> lastModifiedUpdater + = AtomicLongFieldUpdater.newUpdater(VMThinRegionEntryHeapObjectKey.class, "lastModified"); + private volatile Object value; @Override protected final Object getValueField() { return this.value; } - @Override protected void setValueField(Object v) { this.value = v; } - protected long getlastModifiedField() { + protected long getLastModifiedField() { return lastModifiedUpdater.get(this); } - protected boolean compareAndSetLastModifiedField(long expectedValue, long newValue) { return lastModifiedUpdater.compareAndSet(this, expectedValue, newValue); } - /** * @see HashEntry#getEntryHash() */ public final int getEntryHash() { return this.hash; } - protected void setEntryHash(int v) { this.hash = v; } - /** * @see HashEntry#getNextEntry() */ public final HashEntry<Object, Object> getNextEntry() { return this.next; } - /** * @see HashEntry#setNextEntry */ @@ -95,13 +119,24 @@ public class VMThinRegionEntryHeapObjectKey extends VMThinRegionEntryHeap { this.next = n; } + + + + + + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // key code - private final Object key; + private final Object key; @Override public final Object getKey() { return this.key; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp } + http://git-wip-us.apache.org/repos/asf/geode/blob/d4f23332/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapStringKey1.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapStringKey1.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapStringKey1.java index cfddee9..b0af759 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapStringKey1.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapStringKey1.java @@ -15,7 +15,16 @@ package org.apache.geode.internal.cache; // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + + + + + + + + import java.util.concurrent.atomic.AtomicLongFieldUpdater; + import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.HashEntry; // macros whose definition changes this class: @@ -29,83 +38,93 @@ import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.Ha // key int: KEY_INT // key long: KEY_LONG // key uuid: KEY_UUID -// key string1: KEY_STRING1 +// key string1: 1 // key string2: KEY_STRING2 + /** * Do not modify this class. It was generated. Instead modify LeafRegionEntry.cpp and then run * ./dev-tools/generateRegionEntryClasses.sh (it must be run from the top level directory). */ public class VMThinRegionEntryHeapStringKey1 extends VMThinRegionEntryHeap { - public VMThinRegionEntryHeapStringKey1(RegionEntryContext context, String key, Object value, - boolean byteEncode) { - super(context, value); + public VMThinRegionEntryHeapStringKey1 (RegionEntryContext context, String key, + + + + Object value + + , boolean byteEncode + + ) { + super(context, + + + + value + + ); // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // caller has already confirmed that key.length <= MAX_INLINE_STRING_KEY long tmpBits1 = 0L; if (byteEncode) { - for (int i = key.length() - 1; i >= 0; i--) { - // Note: we know each byte is <= 0x7f so the "& 0xff" is not needed. But I added it in to - // keep findbugs happy. - tmpBits1 |= (byte) key.charAt(i) & 0xff; + for (int i=key.length()-1; i >= 0; i--) { + // Note: we know each byte is <= 0x7f so the "& 0xff" is not needed. But I added it in to keep findbugs happy. + tmpBits1 |= (byte)key.charAt(i) & 0xff; tmpBits1 <<= 8; } - tmpBits1 |= 1 << 6; + tmpBits1 |= 1<<6; } else { - for (int i = key.length() - 1; i >= 0; i--) { + for (int i=key.length()-1; i >= 0; i--) { tmpBits1 |= key.charAt(i); tmpBits1 <<= 16; } } tmpBits1 |= key.length(); this.bits1 = tmpBits1; + } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // common code protected int hash; private HashEntry<Object, Object> next; @SuppressWarnings("unused") private volatile long lastModified; - private static final AtomicLongFieldUpdater<VMThinRegionEntryHeapStringKey1> lastModifiedUpdater = - AtomicLongFieldUpdater.newUpdater(VMThinRegionEntryHeapStringKey1.class, "lastModified"); - private volatile Object value; + private static final AtomicLongFieldUpdater<VMThinRegionEntryHeapStringKey1> lastModifiedUpdater + = AtomicLongFieldUpdater.newUpdater(VMThinRegionEntryHeapStringKey1.class, "lastModified"); + private volatile Object value; @Override protected final Object getValueField() { return this.value; } - @Override protected void setValueField(Object v) { this.value = v; } - protected long getlastModifiedField() { + protected long getLastModifiedField() { return lastModifiedUpdater.get(this); } - protected boolean compareAndSetLastModifiedField(long expectedValue, long newValue) { return lastModifiedUpdater.compareAndSet(this, expectedValue, newValue); } - /** * @see HashEntry#getEntryHash() */ public final int getEntryHash() { return this.hash; } - protected void setEntryHash(int v) { this.hash = v; } - /** * @see HashEntry#getNextEntry() */ public final HashEntry<Object, Object> getNextEntry() { return this.next; } - /** * @see HashEntry#setNextEntry */ @@ -113,32 +132,38 @@ public class VMThinRegionEntryHeapStringKey1 extends VMThinRegionEntryHeap { this.next = n; } + + + + + + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // key code - private final long bits1; + private final long bits1; private int getKeyLength() { return (int) (this.bits1 & 0x003fL); } - private int getEncoding() { // 0 means encoded as char // 1 means encoded as bytes that are all <= 0x7f; return (int) (this.bits1 >> 6) & 0x03; } - @Override public final Object getKey() { int keylen = getKeyLength(); char[] chars = new char[keylen]; long tmpBits1 = this.bits1; if (getEncoding() == 1) { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { tmpBits1 >>= 8; - chars[i] = (char) (tmpBits1 & 0x00ff); + chars[i] = (char) (tmpBits1 & 0x00ff); } } else { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { tmpBits1 >>= 16; chars[i] = (char) (tmpBits1 & 0x00FFff); } @@ -147,15 +172,16 @@ public class VMThinRegionEntryHeapStringKey1 extends VMThinRegionEntryHeap { } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + @Override public boolean isKeyEqual(Object k) { if (k instanceof String) { - String str = (String) k; + String str = (String)k; int keylen = getKeyLength(); if (str.length() == keylen) { long tmpBits1 = this.bits1; if (getEncoding() == 1) { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { tmpBits1 >>= 8; char c = (char) (tmpBits1 & 0x00ff); if (str.charAt(i) != c) { @@ -163,7 +189,7 @@ public class VMThinRegionEntryHeapStringKey1 extends VMThinRegionEntryHeap { } } } else { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { tmpBits1 >>= 16; char c = (char) (tmpBits1 & 0x00FFff); if (str.charAt(i) != c) { @@ -176,5 +202,8 @@ public class VMThinRegionEntryHeapStringKey1 extends VMThinRegionEntryHeap { } return false; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp } + http://git-wip-us.apache.org/repos/asf/geode/blob/d4f23332/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapStringKey2.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapStringKey2.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapStringKey2.java index 963c78c..8afa558 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapStringKey2.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapStringKey2.java @@ -15,7 +15,16 @@ package org.apache.geode.internal.cache; // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + + + + + + + + import java.util.concurrent.atomic.AtomicLongFieldUpdater; + import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.HashEntry; // macros whose definition changes this class: @@ -30,34 +39,48 @@ import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.Ha // key long: KEY_LONG // key uuid: KEY_UUID // key string1: KEY_STRING1 -// key string2: KEY_STRING2 +// key string2: 1 + /** * Do not modify this class. It was generated. Instead modify LeafRegionEntry.cpp and then run * ./dev-tools/generateRegionEntryClasses.sh (it must be run from the top level directory). */ public class VMThinRegionEntryHeapStringKey2 extends VMThinRegionEntryHeap { - public VMThinRegionEntryHeapStringKey2(RegionEntryContext context, String key, Object value, - boolean byteEncode) { - super(context, value); + public VMThinRegionEntryHeapStringKey2 (RegionEntryContext context, String key, + + + + Object value + + , boolean byteEncode + + ) { + super(context, + + + + value + + ); // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // caller has already confirmed that key.length <= MAX_INLINE_STRING_KEY long tmpBits1 = 0L; long tmpBits2 = 0L; if (byteEncode) { - for (int i = key.length() - 1; i >= 0; i--) { - // Note: we know each byte is <= 0x7f so the "& 0xff" is not needed. But I added it in to - // keep findbugs happy. + for (int i=key.length()-1; i >= 0; i--) { + // Note: we know each byte is <= 0x7f so the "& 0xff" is not needed. But I added it in to keep findbugs happy. if (i < 7) { - tmpBits1 |= (byte) key.charAt(i) & 0xff; + tmpBits1 |= (byte)key.charAt(i) & 0xff; tmpBits1 <<= 8; } else { tmpBits2 <<= 8; - tmpBits2 |= (byte) key.charAt(i) & 0xff; + tmpBits2 |= (byte)key.charAt(i) & 0xff; } } - tmpBits1 |= 1 << 6; + tmpBits1 |= 1<<6; } else { - for (int i = key.length() - 1; i >= 0; i--) { + for (int i=key.length()-1; i >= 0; i--) { if (i < 3) { tmpBits1 |= key.charAt(i); tmpBits1 <<= 16; @@ -70,54 +93,50 @@ public class VMThinRegionEntryHeapStringKey2 extends VMThinRegionEntryHeap { tmpBits1 |= key.length(); this.bits1 = tmpBits1; this.bits2 = tmpBits2; + } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // common code protected int hash; private HashEntry<Object, Object> next; @SuppressWarnings("unused") private volatile long lastModified; - private static final AtomicLongFieldUpdater<VMThinRegionEntryHeapStringKey2> lastModifiedUpdater = - AtomicLongFieldUpdater.newUpdater(VMThinRegionEntryHeapStringKey2.class, "lastModified"); - private volatile Object value; + private static final AtomicLongFieldUpdater<VMThinRegionEntryHeapStringKey2> lastModifiedUpdater + = AtomicLongFieldUpdater.newUpdater(VMThinRegionEntryHeapStringKey2.class, "lastModified"); + private volatile Object value; @Override protected final Object getValueField() { return this.value; } - @Override protected void setValueField(Object v) { this.value = v; } - protected long getlastModifiedField() { + protected long getLastModifiedField() { return lastModifiedUpdater.get(this); } - protected boolean compareAndSetLastModifiedField(long expectedValue, long newValue) { return lastModifiedUpdater.compareAndSet(this, expectedValue, newValue); } - /** * @see HashEntry#getEntryHash() */ public final int getEntryHash() { return this.hash; } - protected void setEntryHash(int v) { this.hash = v; } - /** * @see HashEntry#getNextEntry() */ public final HashEntry<Object, Object> getNextEntry() { return this.next; } - /** * @see HashEntry#setNextEntry */ @@ -125,25 +144,31 @@ public class VMThinRegionEntryHeapStringKey2 extends VMThinRegionEntryHeap { this.next = n; } + + + + + + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // key code + // strlen is encoded in lowest 6 bits (max strlen is 63) // character encoding info is in bits 7 and 8 // The other bits are used to encoded character data. private final long bits1; // bits2 encodes character data private final long bits2; - private int getKeyLength() { return (int) (this.bits1 & 0x003fL); } - private int getEncoding() { // 0 means encoded as char // 1 means encoded as bytes that are all <= 0x7f; return (int) (this.bits1 >> 6) & 0x03; } - @Override public final Object getKey() { int keylen = getKeyLength(); @@ -151,7 +176,7 @@ public class VMThinRegionEntryHeapStringKey2 extends VMThinRegionEntryHeap { long tmpBits1 = this.bits1; long tmpBits2 = this.bits2; if (getEncoding() == 1) { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { if (i < 7) { tmpBits1 >>= 8; chars[i] = (char) (tmpBits1 & 0x00ff); @@ -161,10 +186,10 @@ public class VMThinRegionEntryHeapStringKey2 extends VMThinRegionEntryHeap { } } } else { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { if (i < 3) { tmpBits1 >>= 16; - chars[i] = (char) (tmpBits1 & 0x00FFff); + chars[i] = (char) (tmpBits1 & 0x00FFff); } else { chars[i] = (char) (tmpBits2 & 0x00FFff); tmpBits2 >>= 16; @@ -175,16 +200,17 @@ public class VMThinRegionEntryHeapStringKey2 extends VMThinRegionEntryHeap { } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + @Override public boolean isKeyEqual(Object k) { if (k instanceof String) { - String str = (String) k; + String str = (String)k; int keylen = getKeyLength(); if (str.length() == keylen) { long tmpBits1 = this.bits1; long tmpBits2 = this.bits2; if (getEncoding() == 1) { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { char c; if (i < 7) { tmpBits1 >>= 8; @@ -198,7 +224,7 @@ public class VMThinRegionEntryHeapStringKey2 extends VMThinRegionEntryHeap { } } } else { - for (int i = 0; i < keylen; i++) { + for (int i=0; i < keylen; i++) { char c; if (i < 3) { tmpBits1 >>= 16; @@ -217,5 +243,7 @@ public class VMThinRegionEntryHeapStringKey2 extends VMThinRegionEntryHeap { } return false; } + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp } + http://git-wip-us.apache.org/repos/asf/geode/blob/d4f23332/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapUUIDKey.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapUUIDKey.java b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapUUIDKey.java index 8d18eef..2f6d3ee 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapUUIDKey.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/VMThinRegionEntryHeapUUIDKey.java @@ -15,8 +15,16 @@ package org.apache.geode.internal.cache; // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + + + import java.util.UUID; + + + + import java.util.concurrent.atomic.AtomicLongFieldUpdater; + import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.HashEntry; // macros whose definition changes this class: @@ -29,67 +37,79 @@ import org.apache.geode.internal.util.concurrent.CustomEntryConcurrentHashMap.Ha // key object: KEY_OBJECT // key int: KEY_INT // key long: KEY_LONG -// key uuid: KEY_UUID +// key uuid: 1 // key string1: KEY_STRING1 // key string2: KEY_STRING2 + /** * Do not modify this class. It was generated. Instead modify LeafRegionEntry.cpp and then run * ./dev-tools/generateRegionEntryClasses.sh (it must be run from the top level directory). */ public class VMThinRegionEntryHeapUUIDKey extends VMThinRegionEntryHeap { - public VMThinRegionEntryHeapUUIDKey(RegionEntryContext context, UUID key, Object value) { - super(context, value); + public VMThinRegionEntryHeapUUIDKey (RegionEntryContext context, UUID key, + + + + Object value + + + + ) { + super(context, + + + + value + + ); // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + this.keyMostSigBits = key.getMostSignificantBits(); this.keyLeastSigBits = key.getLeastSignificantBits(); + } // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // common code protected int hash; private HashEntry<Object, Object> next; @SuppressWarnings("unused") private volatile long lastModified; - private static final AtomicLongFieldUpdater<VMThinRegionEntryHeapUUIDKey> lastModifiedUpdater = - AtomicLongFieldUpdater.newUpdater(VMThinRegionEntryHeapUUIDKey.class, "lastModified"); - private volatile Object value; + private static final AtomicLongFieldUpdater<VMThinRegionEntryHeapUUIDKey> lastModifiedUpdater + = AtomicLongFieldUpdater.newUpdater(VMThinRegionEntryHeapUUIDKey.class, "lastModified"); + private volatile Object value; @Override protected final Object getValueField() { return this.value; } - @Override protected void setValueField(Object v) { this.value = v; } - protected long getlastModifiedField() { + protected long getLastModifiedField() { return lastModifiedUpdater.get(this); } - protected boolean compareAndSetLastModifiedField(long expectedValue, long newValue) { return lastModifiedUpdater.compareAndSet(this, expectedValue, newValue); } - /** * @see HashEntry#getEntryHash() */ public final int getEntryHash() { return this.hash; } - protected void setEntryHash(int v) { this.hash = v; } - /** * @see HashEntry#getNextEntry() */ public final HashEntry<Object, Object> getNextEntry() { return this.next; } - /** * @see HashEntry#setNextEntry */ @@ -97,16 +117,23 @@ public class VMThinRegionEntryHeapUUIDKey extends VMThinRegionEntryHeap { this.next = n; } + + + + + + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp + // key code + private final long keyMostSigBits; private final long keyLeastSigBits; - @Override public final Object getKey() { return new UUID(this.keyMostSigBits, this.keyLeastSigBits); } - @Override public boolean isKeyEqual(Object k) { if (k instanceof UUID) { @@ -116,5 +143,8 @@ public class VMThinRegionEntryHeapUUIDKey extends VMThinRegionEntryHeap { } return false; } + + // DO NOT modify this class. It was generated from LeafRegionEntry.cpp } +
