- // FEATURE: replicate some code from a superclass to avoid double object creation
- return new Enumeration.JavaIterator(null, new LinearStore.IndexIterator() {
- public Object next() { return entries[nextIndex()]; } });
+ return new Enumeration(null) {
+ private int dest = -1, next = -1;
+ public boolean _hasNext() {
+ for (int i = Math.max(0, dest); i < usedslots; i++)
+ if (i > 0 ? entries[i * indexmultiple] != null : true &&
+ entries[i * indexmultiple] != this) { next = i; return true; }
+ return false;
+ }
+ public JS _next() throws JSExn {
+ if (next < 0 && !hasNext()) throw new NoSuchElementException();
+ int index = next; dest = next; next = -1;
+ return (JS)entries[index * indexmultiple];
+ }
+ };