home *** CD-ROM | disk | FTP | other *** search
- package java.io;
-
- import java.util.Arrays;
-
- class ObjectInputStream$HandleTable {
- private static final byte STATUS_OK = 1;
- private static final byte STATUS_UNKNOWN = 2;
- private static final byte STATUS_EXCEPTION = 3;
- byte[] status;
- Object[] entries;
- ObjectInputStream.HandleTable.HandleList[] deps;
- int lowDep = -1;
- int size = 0;
-
- ObjectInputStream$HandleTable(int var1) {
- this.status = new byte[var1];
- this.entries = new Object[var1];
- this.deps = new ObjectInputStream.HandleTable.HandleList[var1];
- }
-
- int assign(Object var1) {
- if (this.size >= this.entries.length) {
- this.grow();
- }
-
- this.status[this.size] = 2;
- this.entries[this.size] = var1;
- return this.size++;
- }
-
- void markDependency(int var1, int var2) {
- if (var1 != -1 && var2 != -1) {
- switch (this.status[var1]) {
- case 2:
- switch (this.status[var2]) {
- case 1:
- break;
- case 2:
- if (this.deps[var2] == null) {
- this.deps[var2] = new ObjectInputStream.HandleTable.HandleList();
- }
-
- this.deps[var2].add(var1);
- if (this.lowDep < 0 || this.lowDep > var2) {
- this.lowDep = var2;
- }
- break;
- case 3:
- this.markException(var1, (ClassNotFoundException)this.entries[var2]);
- break;
- default:
- throw new InternalError();
- }
- case 3:
- return;
- default:
- throw new InternalError();
- }
- }
- }
-
- void markException(int var1, ClassNotFoundException var2) {
- switch (this.status[var1]) {
- case 2:
- this.status[var1] = 3;
- this.entries[var1] = var2;
- ObjectInputStream.HandleTable.HandleList var3 = this.deps[var1];
- if (var3 != null) {
- int var4 = var3.size();
-
- for(int var5 = 0; var5 < var4; ++var5) {
- this.markException(var3.get(var5), var2);
- }
-
- this.deps[var1] = null;
- }
- case 3:
- return;
- default:
- throw new InternalError();
- }
- }
-
- void finish(int param1) {
- // $FF: Couldn't be decompiled
- }
-
- void setObject(int var1, Object var2) {
- switch (this.status[var1]) {
- case 1:
- case 2:
- this.entries[var1] = var2;
- case 3:
- return;
- default:
- throw new InternalError();
- }
- }
-
- Object lookupObject(int var1) {
- return var1 != -1 && this.status[var1] != 3 ? this.entries[var1] : null;
- }
-
- ClassNotFoundException lookupException(int var1) {
- return var1 != -1 && this.status[var1] == 3 ? (ClassNotFoundException)this.entries[var1] : null;
- }
-
- void clear() {
- Arrays.fill(this.status, 0, this.size, (byte)0);
- Arrays.fill(this.entries, 0, this.size, (Object)null);
- Arrays.fill(this.deps, 0, this.size, (Object)null);
- this.lowDep = -1;
- this.size = 0;
- }
-
- int size() {
- return this.size;
- }
-
- private void grow() {
- int var1 = (this.entries.length << 1) + 1;
- byte[] var2 = new byte[var1];
- Object[] var3 = new Object[var1];
- ObjectInputStream.HandleTable.HandleList[] var4 = new ObjectInputStream.HandleTable.HandleList[var1];
- System.arraycopy(this.status, 0, var2, 0, this.size);
- System.arraycopy(this.entries, 0, var3, 0, this.size);
- System.arraycopy(this.deps, 0, var4, 0, this.size);
- this.status = var2;
- this.entries = var3;
- this.deps = var4;
- }
- }
-