1 public class DistributedHashMap {
2 DistributedHashEntry[] table;
5 public DistributedHashMap(int initialCapacity, float loadFactor) {
6 init(initialCapacity, loadFactor);
9 private void init(int initialCapacity, float loadFactor) {
10 table=global new DistributedHashEntry[initialCapacity];
11 this.loadFactor=loadFactor;
14 private static int hash1(int hashcode, int length) {
15 int value=hashcode%length;
22 Object remove(Object key) {
23 int hashcode=key.hashCode();
24 int index1=hash1(hashcode, table.length);
25 DistributedHashEntry dhe=table[index1];
28 DHashEntry ptr=dhe.array;
31 if (ptr.hashval==hashcode&&ptr.key.equals(key)) {
36 while(ptr.next!=null) {
37 if (ptr.hashval==hashcode&&ptr.next.key.equals(key)) {
38 Object oldvalue=ptr.value;
39 ptr.next=ptr.next.next;
49 Object get(Object key) {
50 int hashcode=key.hashCode();
51 int index1=hash1(hashcode, table.length);
53 DistributedHashEntry dhe=table[index1];
57 /****** Add Manual Prefetch *****/
58 //dhe.array.next(5).key
59 Object obj1 = dhe.array;
60 short[] offsets1 = new short[4];
61 offsets1[0] = getoffset {DHashEntry, next};
62 offsets1[1] = (short) 2;
63 offsets1[2] = getoffset {DHashEntry, key};
64 offsets1[3] = (short) 0;
65 System.rangePrefetch(obj1, offsets1);
66 /********************************/
68 DHashEntry ptr=dhe.array;
71 if (ptr.hashval==hashcode
72 &&ptr.key.equals(key)) {
80 boolean containsKey(Object key) {
81 int hashcode=key.hashCode();
82 int index1=hash1(hashcode, table.length);
83 DistributedHashEntry dhe=table[index1];
87 DHashEntry ptr=dhe.array;
90 if (ptr.hashval==hashcode
91 &&ptr.key.equals(key)) {
99 Object put(Object key, Object value) {
100 int hashcode=key.hashCode();
101 int index1=hash1(hashcode, table.length);
102 DistributedHashEntry dhe=table[index1];
104 dhe=global new DistributedHashEntry();
107 DHashEntry ptr=dhe.array;
110 if (ptr.hashval==hashcode&&ptr.key.equals(key)) {
111 Object oldvalue=ptr.value;
118 DHashEntry he=global new DHashEntry();
131 class DistributedHashEntry {
132 public DistributedHashEntry() {
140 public DHashEntry() {