package org.ibex.nestedvm.util;
-import java.util.Arrays;
-
// Based on the various org.xwt.util.* classes by Adam Megacz
public class InodeCache {
clear();
}
+ private static void fill(Object[] a,Object o) { for(int i=0;i<a.length;i++) a[i] = o; }
+ private static void fill(short[] a, short s) { for(int i=0;i<a.length;i++) a[i] = s; }
public final void clear() {
size = usedSlots = 0;
mru = lru = -1;
- Arrays.fill(keys,null);
- Arrays.fill(inodes,SHORT_NULL);
- Arrays.fill(reverse,SHORT_NULL);
+ fill(keys,null);
+ fill(inodes,SHORT_NULL);
+ fill(reverse,SHORT_NULL);
}
public final short get(Object key) {
while((k = keys[dest]) != null) {
if(k == PLACEHOLDER) {
- if(placeholder == -1) placeholder = dest;
+ if(placeholder == -1) placeholder = dest;
} else if(k.equals(key)) {
short inode = inodes[dest];
if(dest == mru) return inode;
reverse[dest] = (short) slot;
inodes[slot] = (short) inode;
if(mru != -1) {
- prev[slot] = mru;
- next[mru] = (short) slot;
+ prev[slot] = mru;
+ next[mru] = (short) slot;
}
mru = (short) slot;
return (short) inode;
return null;
}
- private void dump() {
+ /*private void dump() {
System.err.println("Size " + size);
System.err.println("UsedSlots " + usedSlots);
System.err.println("MRU " + mru);
String s;
boolean good = false;
try {
- while((s = br.readLine()) != null) {
+ while((s = br.readLine()) != null) {
if(s.charAt(0) == '#') {
short n = Short.parseShort(s.substring(1));
- System.err.println("" + n + " -> " + c.reverse(n));
+ System.err.println("" + n + " -> " + c.reverse(n));
} else {
- //System.err.println("Adding " + s);
- short n = c.get(s);
- System.err.println("Added " + s + " -> " + n);
- //c.dump();
+ //System.err.println("Adding " + s);
+ short n = c.get(s);
+ System.err.println("Added " + s + " -> " + n);
+ //c.dump();
}
}
good = true;
} finally {
if(!good) c.stats();
}
- }
+ }*/
}