diff --git a/mozilla/js/rhino/src/org/mozilla/javascript/UniqueTag.java b/mozilla/js/rhino/src/org/mozilla/javascript/UniqueTag.java index 7e0c45a713f..437d0ae3b09 100644 --- a/mozilla/js/rhino/src/org/mozilla/javascript/UniqueTag.java +++ b/mozilla/js/rhino/src/org/mozilla/javascript/UniqueTag.java @@ -38,47 +38,78 @@ package org.mozilla.javascript; import java.io.Serializable; /** -Class instances represent serializable tags to mark special values of Object references. -

-Compatibility note: under jdk 1.1 use org.mozilla.javascript.serialize.ScriptableInputStream to read serialized instances of UniqueTag as under this JDK version the default ObjectInputStream would not restore them correctly as it lacks support for readResolve method -*/ + * Class instances represent serializable tags to mark special Object values. + *

+ * Compatibility note: under jdk 1.1 use + * org.mozilla.javascript.serialize.ScriptableInputStream to read serialized + * instances of UniqueTag as under this JDK version the default + * ObjectInputStream would not restore them correctly as it lacks support + * for readResolve method + */ public final class UniqueTag implements Serializable { - private UniqueTag(int tagId) { - _tagId = tagId; + private static final int ID_NOT_FOUND = 1; + private static final int ID_NULL_VALUE = 2; + private static final int ID_DOUBLE_MARK = 3; + + /** + * Tag to mark non-existing values. + */ + public static final UniqueTag + NOT_FOUND = new UniqueTag(ID_NOT_FOUND); + + /** + * Tag to distinguish between uninitialized and null values. + */ + public static final UniqueTag + NULL_VALUE = new UniqueTag(ID_NULL_VALUE); + + /** + * Tag to indicate that a object represents "double" with the real value + * stored somewhere else. + */ + public static final UniqueTag + DOUBLE_MARK = new UniqueTag(ID_DOUBLE_MARK); + + private final int tagId; + + private UniqueTag(int tagId) + { + this.tagId = tagId; } - public Object readResolve() { - if (_tagId == ID_NOT_FOUND) { return NOT_FOUND; } - else if (_tagId == ID_NULL_VALUE) { return NULL_VALUE; } - Kit.codeBug(); - return null; + public Object readResolve() + { + switch (tagId) { + case ID_NOT_FOUND: + return NOT_FOUND; + case ID_NULL_VALUE: + return NULL_VALUE; + case ID_DOUBLE_MARK: + return DOUBLE_MARK; + } + throw new IllegalStateException(String.valueOf(tagId)); } // Overridden for better debug printouts - public String toString() { + public String toString() + { String name; - if (_tagId == ID_NOT_FOUND) { name = "NOT_FOUND"; } - else if (_tagId == ID_NULL_VALUE) { name = "NULL_VALUE"; } - else { Kit.codeBug(); name = null; } + switch (tagId) { + case ID_NOT_FOUND: + name = "NOT_FOUND"; + break; + case ID_NULL_VALUE: + name = "NULL_VALUE"; + break; + case ID_DOUBLE_MARK: + name = "DOUBLE_MARK"; + break; + default: + throw Kit.codeBug(); + } return super.toString()+": "+name; - } - private static final int ID_NOT_FOUND = 1; - private static final int ID_NULL_VALUE = 2; - - private int _tagId; - -/** -NOT_FOUND is useful to mark non-existing values. -*/ - public static final UniqueTag NOT_FOUND = new UniqueTag(ID_NOT_FOUND); - -/** -NULL_VALUE is useful to distinguish between uninitialized and null values -*/ - public static final UniqueTag NULL_VALUE = new UniqueTag(ID_NULL_VALUE); - }