1 Clazz.load(["java.util.AbstractMap","$.AbstractSet","$.Iterator","$.Map","$.MapEntry"],"java.util.IdentityHashMap",["java.lang.IllegalArgumentException","$.IllegalStateException","java.util.AbstractCollection","$.ConcurrentModificationException","java.util.MapEntry.Type","java.util.NoSuchElementException"],function(){
2 c$=Clazz.decorateAsClass(function(){
7 Clazz.instantialize(this,arguments);
8 },java.util,"IdentityHashMap",java.util.AbstractMap,[java.util.Map,java.io.Serializable,Cloneable]);
9 Clazz.makeConstructor(c$,
13 Clazz.makeConstructor(c$,
15 Clazz.superConstructor(this,java.util.IdentityHashMap,[]);
18 this.threshold=this.getThreshold(maxSize);
19 this.elementData=this.newElementArray(this.computeElementArraySize());
21 throw new IllegalArgumentException();
23 Clazz.defineMethod(c$,"getThreshold",
24 ($fz=function(maxSize){
25 return maxSize>3?maxSize:3;
26 },$fz.isPrivate=true,$fz),"~N");
27 Clazz.defineMethod(c$,"computeElementArraySize",
29 return(Math.floor((this.threshold*10000)/7500))*2;
30 },$fz.isPrivate=true,$fz));
31 Clazz.defineMethod(c$,"newElementArray",
34 },$fz.isPrivate=true,$fz),"~N");
35 Clazz.makeConstructor(c$,
37 this.construct(map.size()<6?11:map.size()*2);
40 Clazz.defineMethod(c$,"massageValue",
42 return((value===java.util.IdentityHashMap.NULL_OBJECT)?null:value);
43 },$fz.isPrivate=true,$fz),"~O");
44 Clazz.overrideMethod(c$,"clear",
47 for(var i=0;i<this.elementData.length;i++){
48 this.elementData[i]=null;
52 Clazz.overrideMethod(c$,"containsKey",
55 key=java.util.IdentityHashMap.NULL_OBJECT;
56 }var index=this.findIndex(key,this.elementData);
57 return this.elementData[index]===key;
59 Clazz.overrideMethod(c$,"containsValue",
62 value=java.util.IdentityHashMap.NULL_OBJECT;
63 }for(var i=1;i<this.elementData.length;i=i+2){
64 if(this.elementData[i]===value){
69 Clazz.overrideMethod(c$,"get",
72 key=java.util.IdentityHashMap.NULL_OBJECT;
73 }var index=this.findIndex(key,this.elementData);
74 if(this.elementData[index]===key){
75 var result=this.elementData[index+1];
76 return this.massageValue(result);
79 Clazz.defineMethod(c$,"getEntry",
82 key=java.util.IdentityHashMap.NULL_OBJECT;
83 }var index=this.findIndex(key,this.elementData);
84 if(this.elementData[index]===key){
85 return this.getEntry(index);
87 },$fz.isPrivate=true,$fz),"~O");
88 Clazz.defineMethod(c$,"getEntry",
90 var key=this.elementData[index];
91 var value=this.elementData[index+1];
92 if(key===java.util.IdentityHashMap.NULL_OBJECT){
94 }if(value===java.util.IdentityHashMap.NULL_OBJECT){
96 }return new java.util.IdentityHashMap.IdentityHashMapEntry(key,value);
97 },$fz.isPrivate=true,$fz),"~N");
98 Clazz.defineMethod(c$,"findIndex",
99 ($fz=function(key,array){
100 var length=array.length;
101 var index=this.getModuloHash(key,length);
102 var last=(index+length-2)%length;
104 if(array[index]===key||(array[index]==null)){
106 }index=(index+2)%length;
109 },$fz.isPrivate=true,$fz),"~O,~A");
110 Clazz.defineMethod(c$,"getModuloHash",
111 ($fz=function(key,length){
112 return((System.identityHashCode(key)&0x7FFFFFFF)%(Math.floor(length/2)))*2;
113 },$fz.isPrivate=true,$fz),"~O,~N");
114 Clazz.overrideMethod(c$,"put",
119 _key=java.util.IdentityHashMap.NULL_OBJECT;
121 _value=java.util.IdentityHashMap.NULL_OBJECT;
122 }var index=this.findIndex(_key,this.elementData);
123 if(this.elementData[index]!==_key){
125 if(++this.$size>this.threshold){
127 index=this.findIndex(_key,this.elementData);
128 }this.elementData[index]=_key;
129 this.elementData[index+1]=null;
130 }var result=this.elementData[index+1];
131 this.elementData[index+1]=_value;
132 return this.massageValue(result);
134 Clazz.overrideMethod(c$,"putAll",
136 this.putAllImpl(map);
138 Clazz.defineMethod(c$,"rehash",
140 var newlength=this.elementData.length<<1;
143 }var newData=this.newElementArray(newlength);
144 for(var i=0;i<this.elementData.length;i=i+2){
145 var key=this.elementData[i];
147 var index=this.findIndex(key,newData);
149 newData[index+1]=this.elementData[i+1];
151 this.elementData=newData;
152 this.computeMaxSize();
153 },$fz.isPrivate=true,$fz));
154 Clazz.defineMethod(c$,"computeMaxSize",
156 this.threshold=(Math.floor((Math.floor(this.elementData.length/ 2)) * 7500 /10000));
157 },$fz.isPrivate=true,$fz));
158 Clazz.overrideMethod(c$,"remove",
161 key=java.util.IdentityHashMap.NULL_OBJECT;
168 index=next=this.findIndex(key,this.elementData);
169 if(this.elementData[index]!==key){
171 }result=this.elementData[index+1];
172 var length=this.elementData.length;
174 next=(next+2)%length;
175 object=this.elementData[next];
178 }hash=this.getModuloHash(object,length);
181 hashedOk=hashedOk||(hash<=next);
183 hashedOk=hashedOk&&(hash<=next);
185 this.elementData[index]=object;
186 this.elementData[index+1]=this.elementData[next+1];
191 this.elementData[index]=null;
192 this.elementData[index+1]=null;
193 return this.massageValue(result);
195 Clazz.overrideMethod(c$,"entrySet",
197 return new java.util.IdentityHashMap.IdentityHashMapEntrySet(this);
199 Clazz.overrideMethod(c$,"keySet",
201 if(this.$keySet==null){
202 this.$keySet=((Clazz.isClassDefined("java.util.IdentityHashMap$1")?0:java.util.IdentityHashMap.$IdentityHashMap$1$()),Clazz.innerTypeInstance(java.util.IdentityHashMap$1,this,null));
203 }return this.$keySet;
205 Clazz.overrideMethod(c$,"values",
207 if(this.valuesCollection==null){
208 this.valuesCollection=((Clazz.isClassDefined("java.util.IdentityHashMap$2")?0:java.util.IdentityHashMap.$IdentityHashMap$2$()),Clazz.innerTypeInstance(java.util.IdentityHashMap$2,this,null));
209 }return this.valuesCollection;
211 Clazz.overrideMethod(c$,"equals",
215 }if(Clazz.instanceOf(object,java.util.Map)){
217 if(this.size()!=map.size()){
219 }var set=this.entrySet();
220 return set.equals(map.entrySet());
223 Clazz.defineMethod(c$,"clone",
226 return Clazz.superCall(this,java.util.IdentityHashMap,"clone",[]);
228 if(Clazz.instanceOf(e,CloneNotSupportedException)){
235 Clazz.overrideMethod(c$,"isEmpty",
237 return this.$size==0;
239 Clazz.overrideMethod(c$,"size",
243 Clazz.defineMethod(c$,"putAllImpl",
245 if(map.entrySet()!=null){
246 Clazz.superCall(this,java.util.IdentityHashMap,"putAll",[map]);
247 }},$fz.isPrivate=true,$fz),"java.util.Map");
248 c$.$IdentityHashMap$1$=function(){
250 c$=Clazz.declareAnonymous(java.util,"IdentityHashMap$1",java.util.AbstractSet);
251 Clazz.overrideMethod(c$,"contains",
253 return this.b$["java.util.IdentityHashMap"].containsKey(object);
255 Clazz.overrideMethod(c$,"size",
257 return this.b$["java.util.IdentityHashMap"].size();
259 Clazz.overrideMethod(c$,"clear",
261 this.b$["java.util.IdentityHashMap"].clear();
263 Clazz.overrideMethod(c$,"remove",
265 if(this.b$["java.util.IdentityHashMap"].containsKey(key)){
266 this.b$["java.util.IdentityHashMap"].remove(key);
270 Clazz.overrideMethod(c$,"iterator",
272 return new java.util.IdentityHashMap.IdentityHashMapIterator(((Clazz.isClassDefined("java.util.IdentityHashMap$1$1")?0:java.util.IdentityHashMap.$IdentityHashMap$1$1$()),Clazz.innerTypeInstance(java.util.IdentityHashMap$1$1,this,null)),this.b$["java.util.IdentityHashMap"]);
276 c$.$IdentityHashMap$1$1$=function(){
278 c$=Clazz.declareAnonymous(java.util,"IdentityHashMap$1$1",null,java.util.MapEntry.Type);
279 Clazz.overrideMethod(c$,"get",
282 },"java.util.MapEntry");
285 c$.$IdentityHashMap$2$=function(){
287 c$=Clazz.declareAnonymous(java.util,"IdentityHashMap$2",java.util.AbstractCollection);
288 Clazz.overrideMethod(c$,"contains",
290 return this.b$["java.util.IdentityHashMap"].containsValue(object);
292 Clazz.overrideMethod(c$,"size",
294 return this.b$["java.util.IdentityHashMap"].size();
296 Clazz.overrideMethod(c$,"clear",
298 this.b$["java.util.IdentityHashMap"].clear();
300 Clazz.overrideMethod(c$,"iterator",
302 return new java.util.IdentityHashMap.IdentityHashMapIterator(((Clazz.isClassDefined("java.util.IdentityHashMap$2$1")?0:java.util.IdentityHashMap.$IdentityHashMap$2$1$()),Clazz.innerTypeInstance(java.util.IdentityHashMap$2$1,this,null)),this.b$["java.util.IdentityHashMap"]);
304 Clazz.overrideMethod(c$,"remove",
306 var it=this.iterator();
308 if(object===it.next()){
316 c$.$IdentityHashMap$2$1$=function(){
318 c$=Clazz.declareAnonymous(java.util,"IdentityHashMap$2$1",null,java.util.MapEntry.Type);
319 Clazz.overrideMethod(c$,"get",
322 },"java.util.MapEntry");
326 c$=Clazz.declareType(java.util.IdentityHashMap,"IdentityHashMapEntry",java.util.MapEntry);
327 Clazz.overrideMethod(c$,"equals",
331 }if(Clazz.instanceOf(a,java.util.Map.Entry)){
333 return(this.key===b.getKey())&&(this.value===b.getValue());
336 Clazz.overrideMethod(c$,"hashCode",
338 return System.identityHashCode(this.key)^System.identityHashCode(this.value);
340 Clazz.overrideMethod(c$,"toString",
342 return this.key+"="+this.value;
346 c$=Clazz.decorateAsClass(function(){
349 this.associatedMap=null;
350 this.expectedModCount=0;
352 this.canRemove=false;
353 Clazz.instantialize(this,arguments);
354 },java.util.IdentityHashMap,"IdentityHashMapIterator",null,java.util.Iterator);
355 Clazz.makeConstructor(c$,
357 this.associatedMap=b;
359 this.expectedModCount=b.modCount;
360 },"java.util.MapEntry.Type,java.util.IdentityHashMap");
361 Clazz.overrideMethod(c$,"hasNext",
363 while(this.position<this.associatedMap.elementData.length){
364 if(this.associatedMap.elementData[this.position]==null){
371 Clazz.defineMethod(c$,"checkConcurrentMod",
373 if(this.expectedModCount!=this.associatedMap.modCount){
374 throw new java.util.ConcurrentModificationException();
376 Clazz.overrideMethod(c$,"next",
378 this.checkConcurrentMod();
380 throw new java.util.NoSuchElementException();
381 }var a=this.associatedMap.getEntry(this.position);
382 this.lastPosition=this.position;
385 return this.type.get(a);
387 Clazz.overrideMethod(c$,"remove",
389 this.checkConcurrentMod();
391 throw new IllegalStateException();
392 }this.canRemove=false;
393 this.associatedMap.remove(this.associatedMap.elementData[this.lastPosition]);
394 this.position=this.lastPosition;
395 this.expectedModCount++;
399 c$=Clazz.decorateAsClass(function(){
400 this.associatedMap=null;
401 Clazz.instantialize(this,arguments);
402 },java.util.IdentityHashMap,"IdentityHashMapEntrySet",java.util.AbstractSet);
403 Clazz.makeConstructor(c$,
405 Clazz.superConstructor(this,java.util.IdentityHashMap.IdentityHashMapEntrySet,[]);
406 this.associatedMap=a;
407 },"java.util.IdentityHashMap");
408 Clazz.defineMethod(c$,"hashMap",
410 return this.associatedMap;
412 Clazz.overrideMethod(c$,"size",
414 return this.associatedMap.$size;
416 Clazz.overrideMethod(c$,"clear",
418 this.associatedMap.clear();
420 Clazz.overrideMethod(c$,"remove",
422 if(this.contains(a)){
423 this.associatedMap.remove((a).getKey());
427 Clazz.overrideMethod(c$,"contains",
429 if(Clazz.instanceOf(a,java.util.Map.Entry)){
430 var b=this.associatedMap.getEntry((a).getKey());
431 return b!=null&&b.equals(a);
434 Clazz.overrideMethod(c$,"iterator",
436 return new java.util.IdentityHashMap.IdentityHashMapIterator(((Clazz.isClassDefined("java.util.IdentityHashMap$IdentityHashMapEntrySet$1")?0:java.util.IdentityHashMap.IdentityHashMapEntrySet.$IdentityHashMap$IdentityHashMapEntrySet$1$()),Clazz.innerTypeInstance(java.util.IdentityHashMap$IdentityHashMapEntrySet$1,this,null)),this.associatedMap);
438 c$.$IdentityHashMap$IdentityHashMapEntrySet$1$=function(){
440 c$=Clazz.declareAnonymous(java.util,"IdentityHashMap$IdentityHashMapEntrySet$1",null,java.util.MapEntry.Type);
441 Clazz.overrideMethod(c$,"get",
444 },"java.util.MapEntry");
448 Clazz.defineStatics(c$,
449 "DEFAULT_MAX_SIZE",21,
451 c$.NULL_OBJECT=c$.prototype.NULL_OBJECT=new Clazz._O();