From 73725fe78ef70b2b45a5f552fae10c0180fc6165 Mon Sep 17 00:00:00 2001 From: "igor%mir2.org" Date: Wed, 15 Sep 2004 13:42:26 +0000 Subject: [PATCH] Added UniqueTag.DOUBLE_MARK for better debug printouts in interpreter and potential support for serialization of Interpreter.CallFrame. git-svn-id: svn://10.0.0.236/trunk@162356 18797224-902f-48f8-a5cc-f745e15eee43 --- .../src/org/mozilla/javascript/UniqueTag.java | 93 ++++++++++++------- 1 file changed, 62 insertions(+), 31 deletions(-) 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); - }