1 Clazz.load(["java.lang.ref.WeakReference","java.util.AbstractMap","$.Iterator","$.Map"],"java.util.WeakHashMap",["java.lang.IllegalArgumentException","$.IllegalStateException","java.lang.ref.ReferenceQueue","java.util.AbstractCollection","$.AbstractSet","$.Arrays","$.ConcurrentModificationException","$.NoSuchElementException"],function(){
2 c$=Clazz.decorateAsClass(function(){
3 this.referenceQueue=null;
9 if(!Clazz.isClassDefined("java.util.WeakHashMap.HashIterator")){
10 java.util.WeakHashMap.$WeakHashMap$HashIterator$();
12 Clazz.instantialize(this,arguments);
13 },java.util,"WeakHashMap",java.util.AbstractMap,java.util.Map);
14 c$.newEntryArray=Clazz.defineMethod(c$,"newEntryArray",
16 return new Array(size);
17 },$fz.isPrivate=true,$fz),"~N");
18 Clazz.makeConstructor(c$,
22 Clazz.makeConstructor(c$,
24 Clazz.superConstructor(this,java.util.WeakHashMap,[]);
27 this.elementData=java.util.WeakHashMap.newEntryArray(capacity==0?1:capacity);
29 this.computeMaxSize();
30 this.referenceQueue=new java.lang.ref.ReferenceQueue();
32 throw new IllegalArgumentException();
34 Clazz.makeConstructor(c$,
35 function(capacity,loadFactor){
36 Clazz.superConstructor(this,java.util.WeakHashMap,[]);
37 if(capacity>=0&&loadFactor>0){
39 this.elementData=java.util.WeakHashMap.newEntryArray(capacity==0?1:capacity);
40 this.loadFactor=Math.round((loadFactor*10000));
41 this.computeMaxSize();
42 this.referenceQueue=new java.lang.ref.ReferenceQueue();
44 throw new IllegalArgumentException();
46 Clazz.makeConstructor(c$,
48 this.construct(map.size()<6?11:map.size()*2);
51 Clazz.overrideMethod(c$,"clear",
53 if(this.elementCount>0){
55 java.util.Arrays.fill(this.elementData,null);
57 while(this.referenceQueue.poll()!=null){
60 Clazz.defineMethod(c$,"computeMaxSize",
62 this.threshold=(Math.floor(this.elementData.length*this.loadFactor/10000));
63 },$fz.isPrivate=true,$fz));
64 Clazz.overrideMethod(c$,"containsKey",
66 return this.getEntry(key)!=null;
68 Clazz.overrideMethod(c$,"entrySet",
71 return((Clazz.isClassDefined("java.util.WeakHashMap$1")?0:java.util.WeakHashMap.$WeakHashMap$1$()),Clazz.innerTypeInstance(java.util.WeakHashMap$1,this,null));
73 Clazz.overrideMethod(c$,"keySet",
76 if(this.$keySet==null){
77 this.$keySet=((Clazz.isClassDefined("java.util.WeakHashMap$2")?0:java.util.WeakHashMap.$WeakHashMap$2$()),Clazz.innerTypeInstance(java.util.WeakHashMap$2,this,null));
80 Clazz.overrideMethod(c$,"values",
83 if(this.valuesCollection==null){
84 this.valuesCollection=((Clazz.isClassDefined("java.util.WeakHashMap$3")?0:java.util.WeakHashMap.$WeakHashMap$3$()),Clazz.innerTypeInstance(java.util.WeakHashMap$3,this,null));
85 }return this.valuesCollection;
87 Clazz.overrideMethod(c$,"get",
91 var index=(key.hashCode()&0x7FFFFFFF)%this.elementData.length;
92 var entry=this.elementData[index];
94 if(key.equals(entry.get())){
99 }var entry=this.elementData[0];
107 Clazz.defineMethod(c$,"getEntry",
111 var index=(key.hashCode()&0x7FFFFFFF)%this.elementData.length;
112 var entry=this.elementData[index];
114 if(key.equals(entry.get())){
119 }var entry=this.elementData[0];
127 Clazz.overrideMethod(c$,"containsValue",
131 for(var i=this.elementData.length;--i>=0;){
132 var entry=this.elementData[i];
135 if((key!=null||entry.isNull)&&value.equals(entry.value)){
141 for(var i=this.elementData.length;--i>=0;){
142 var entry=this.elementData[i];
145 if((key!=null||entry.isNull)&&entry.value==null){
152 Clazz.overrideMethod(c$,"isEmpty",
154 return this.size()==0;
156 Clazz.defineMethod(c$,"poll",
159 while((toRemove=this.referenceQueue.poll())!=null){
160 this.removeEntry(toRemove);
163 Clazz.defineMethod(c$,"removeEntry",
167 var index=(toRemove.hash&0x7FFFFFFF)%this.elementData.length;
168 entry=this.elementData[index];
170 if(toRemove===entry){
173 this.elementData[index]=entry.$next;
175 last.$next=entry.$next;
176 }this.elementCount--;
181 },"java.util.WeakHashMap.Entry");
182 Clazz.overrideMethod(c$,"put",
188 index=(key.hashCode()&0x7FFFFFFF)%this.elementData.length;
189 entry=this.elementData[index];
190 while(entry!=null&&!key.equals(entry.get())){
194 entry=this.elementData[0];
195 while(entry!=null&&!entry.isNull){
200 if(++this.elementCount>this.threshold){
202 index=key==null?0:(key.hashCode()&0x7FFFFFFF)%this.elementData.length;
203 }entry=new java.util.WeakHashMap.Entry(key,value,this.referenceQueue);
204 entry.$next=this.elementData[index];
205 this.elementData[index]=entry;
207 }var result=entry.value;
211 Clazz.defineMethod(c$,"rehash",
213 var length=this.elementData.length<<1;
216 }var newData=java.util.WeakHashMap.newEntryArray(length);
217 for(var i=0;i<this.elementData.length;i++){
218 var entry=this.elementData[i];
220 var index=entry.isNull?0:(entry.hash&0x7FFFFFFF)%length;
221 var next=entry.$next;
222 entry.$next=newData[index];
223 newData[index]=entry;
227 this.elementData=newData;
228 this.computeMaxSize();
229 },$fz.isPrivate=true,$fz));
230 Clazz.overrideMethod(c$,"putAll",
232 this.putAllImpl(map);
234 Clazz.overrideMethod(c$,"remove",
241 index=(key.hashCode()&0x7FFFFFFF)%this.elementData.length;
242 entry=this.elementData[index];
243 while(entry!=null&&!key.equals(entry.get())){
248 entry=this.elementData[0];
249 while(entry!=null&&!entry.isNull){
256 this.elementData[index]=entry.$next;
258 last.$next=entry.$next;
259 }this.elementCount--;
263 Clazz.overrideMethod(c$,"size",
266 return this.elementCount;
268 Clazz.defineMethod(c$,"putAllImpl",
270 if(map.entrySet()!=null){
271 Clazz.superCall(this,java.util.WeakHashMap,"putAll",[map]);
272 }},$fz.isPrivate=true,$fz),"java.util.Map");
273 c$.$WeakHashMap$HashIterator$=function(){
275 c$=Clazz.decorateAsClass(function(){
276 Clazz.prepareCallback(this,arguments);
278 this.expectedModCount=0;
279 this.currentEntry=null;
283 Clazz.instantialize(this,arguments);
284 },java.util.WeakHashMap,"HashIterator",null,java.util.Iterator);
285 Clazz.makeConstructor(c$,
288 this.expectedModCount=this.b$["java.util.WeakHashMap"].modCount;
289 },"java.util.WeakHashMap.Entry.Type");
290 Clazz.overrideMethod(c$,"hasNext",
292 if(this.nextEntry!=null){
295 if(this.nextEntry==null){
296 while(this.position<this.b$["java.util.WeakHashMap"].elementData.length){
297 if((this.nextEntry=this.b$["java.util.WeakHashMap"].elementData[this.position++])!=null){
300 if(this.nextEntry==null){
302 }}this.nextKey=this.nextEntry.get();
303 if(this.nextKey!=null||this.nextEntry.isNull){
305 }this.nextEntry=this.nextEntry.$next;
308 Clazz.overrideMethod(c$,"next",
310 if(this.expectedModCount==this.b$["java.util.WeakHashMap"].modCount){
312 this.currentEntry=this.nextEntry;
313 this.nextEntry=this.currentEntry.$next;
314 var a=this.type.get(this.currentEntry);
317 }throw new java.util.NoSuchElementException();
318 }throw new java.util.ConcurrentModificationException();
320 Clazz.overrideMethod(c$,"remove",
322 if(this.expectedModCount==this.b$["java.util.WeakHashMap"].modCount){
323 if(this.currentEntry!=null){
324 this.b$["java.util.WeakHashMap"].removeEntry(this.currentEntry);
325 this.currentEntry=null;
326 this.expectedModCount++;
328 throw new IllegalStateException();
330 throw new java.util.ConcurrentModificationException();
334 c$.$WeakHashMap$1$=function(){
336 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$1",java.util.AbstractSet);
337 Clazz.overrideMethod(c$,"size",
339 return this.b$["java.util.WeakHashMap"].size();
341 Clazz.overrideMethod(c$,"clear",
343 this.b$["java.util.WeakHashMap"].clear();
345 Clazz.overrideMethod(c$,"remove",
347 if(this.contains(object)){
348 this.b$["java.util.WeakHashMap"].remove((object).getKey());
352 Clazz.overrideMethod(c$,"contains",
354 if(Clazz.instanceOf(object,java.util.Map.Entry)){
355 var entry=this.b$["java.util.WeakHashMap"].getEntry((object).getKey());
358 if(key!=null||entry.isNull){
359 return object.equals(entry);
362 Clazz.overrideMethod(c$,"iterator",
364 return Clazz.innerTypeInstance(java.util.WeakHashMap.HashIterator,this,null,((Clazz.isClassDefined("java.util.WeakHashMap$1$1")?0:java.util.WeakHashMap.$WeakHashMap$1$1$()),Clazz.innerTypeInstance(java.util.WeakHashMap$1$1,this,null)));
368 c$.$WeakHashMap$1$1$=function(){
370 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$1$1",null,java.util.WeakHashMap.Entry.Type);
371 Clazz.overrideMethod(c$,"get",
374 },"java.util.Map.Entry");
377 c$.$WeakHashMap$2$=function(){
379 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$2",java.util.AbstractSet);
380 Clazz.overrideMethod(c$,"contains",
382 return this.b$["java.util.WeakHashMap"].containsKey(object);
384 Clazz.overrideMethod(c$,"size",
386 return this.b$["java.util.WeakHashMap"].size();
388 Clazz.overrideMethod(c$,"clear",
390 this.b$["java.util.WeakHashMap"].clear();
392 Clazz.overrideMethod(c$,"remove",
394 if(this.b$["java.util.WeakHashMap"].containsKey(key)){
395 this.b$["java.util.WeakHashMap"].remove(key);
399 Clazz.overrideMethod(c$,"iterator",
401 return Clazz.innerTypeInstance(java.util.WeakHashMap.HashIterator,this,null,((Clazz.isClassDefined("java.util.WeakHashMap$2$1")?0:java.util.WeakHashMap.$WeakHashMap$2$1$()),Clazz.innerTypeInstance(java.util.WeakHashMap$2$1,this,null)));
405 c$.$WeakHashMap$2$1$=function(){
407 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$2$1",null,java.util.WeakHashMap.Entry.Type);
408 Clazz.overrideMethod(c$,"get",
410 return entry.getKey();
411 },"java.util.Map.Entry");
414 c$.$WeakHashMap$3$=function(){
416 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$3",java.util.AbstractCollection);
417 Clazz.overrideMethod(c$,"size",
419 return this.b$["java.util.WeakHashMap"].size();
421 Clazz.overrideMethod(c$,"clear",
423 this.b$["java.util.WeakHashMap"].clear();
425 Clazz.overrideMethod(c$,"contains",
427 return this.b$["java.util.WeakHashMap"].containsValue(object);
429 Clazz.overrideMethod(c$,"iterator",
431 return Clazz.innerTypeInstance(java.util.WeakHashMap.HashIterator,this,null,((Clazz.isClassDefined("java.util.WeakHashMap$3$1")?0:java.util.WeakHashMap.$WeakHashMap$3$1$()),Clazz.innerTypeInstance(java.util.WeakHashMap$3$1,this,null)));
435 c$.$WeakHashMap$3$1$=function(){
437 c$=Clazz.declareAnonymous(java.util,"WeakHashMap$3$1",null,java.util.WeakHashMap.Entry.Type);
438 Clazz.overrideMethod(c$,"get",
440 return entry.getValue();
441 },"java.util.Map.Entry");
445 c$=Clazz.decorateAsClass(function(){
450 Clazz.instantialize(this,arguments);
451 },java.util.WeakHashMap,"Entry",java.lang.ref.WeakReference,java.util.Map.Entry);
452 Clazz.makeConstructor(c$,
454 Clazz.superConstructor(this,java.util.WeakHashMap.Entry,[a,c]);
456 this.hash=this.isNull?0:a.hashCode();
458 },"~O,~O,java.lang.ref.ReferenceQueue");
459 Clazz.overrideMethod(c$,"getKey",
461 return Clazz.superCall(this,java.util.WeakHashMap.Entry,"get",[]);
463 Clazz.overrideMethod(c$,"getValue",
467 Clazz.overrideMethod(c$,"setValue",
473 Clazz.overrideMethod(c$,"equals",
475 if(!(Clazz.instanceOf(a,java.util.Map.Entry))){
478 var c=Clazz.superCall(this,java.util.WeakHashMap.Entry,"get",[]);
479 return(c==null?c===b.getKey():c.equals(b.getKey()))&&(this.value==null?this.value===b.getValue():this.value.equals(b.getValue()));
481 Clazz.overrideMethod(c$,"hashCode",
483 return this.hash+(this.value==null?0:this.value.hashCode());
485 Clazz.overrideMethod(c$,"toString",
487 return Clazz.superCall(this,java.util.WeakHashMap.Entry,"get",[])+"="+this.value;
489 Clazz.declareInterface(java.util.WeakHashMap.Entry,"Type");
491 Clazz.defineStatics(c$,