Merge tracemonkey to mozilla-central.
authorRobert Sayre <sayrer@gmail.com>
Mon, 09 Mar 2009 14:45:46 -0400
changeset 25943 b8ac55cfa0f7bd1e32e42d3529a48f3bc653e551
parent 25878 068da717ab6d2d808d884f1c162f8460878afd0c (current diff)
parent 25942 fb9d906c42c197014c3eb7c27124c47692241fd7 (diff)
child 25944 f2816d1a110da6cfcff6139be4a80a5f54afce01
push id5803
push userrsayre@mozilla.com
push dateMon, 09 Mar 2009 18:47:08 +0000
treeherdermozilla-central@b8ac55cfa0f7 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone1.9.2a1pre
Merge tracemonkey to mozilla-central.
configure.in
js/src/configure.in
js/src/jsobj.cpp
js/src/win32.order
js/tests/js1_8/extensions/regress-300079.js
nsprpub/configure
--- a/configure.in
+++ b/configure.in
@@ -6596,24 +6596,16 @@ if test "$MOZ_MEMORY"; then
     dnl Also pass this to NSPR/NSS
     DLLFLAGS="$DLLFLAGS -MANIFEST:NO"
     export DLLFLAGS
     ;;
   *)
     AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
     ;;
   esac
-
-  AC_ARG_WITH([valgrind],
-    [  --with-valgrind         Enable valgrind integration hooks],
-    [enable_valgrind="yes"], [enable_valgrind="no"])
-  AC_CHECK_HEADER([valgrind/valgrind.h], [], [enable_valgrind="no"])
-  if test "x$enable_valgrind" = "xyes" ; then
-    AC_DEFINE(MOZ_VALGRIND)
-  fi
 fi
 AC_SUBST(MOZ_MEMORY)
 AC_SUBST(WIN32_CRT_SRC_DIR)
 AC_SUBST(WIN32_CUSTOM_CRT_DIR)
 AC_SUBST(MOZ_LIB)
 AC_SUBST(MOZ_PATH)
 dnl Need to set this for make because NSS doesn't have configure
 AC_SUBST(DLLFLAGS)
@@ -6636,16 +6628,30 @@ fi
 dnl ========================================================
 dnl = Location of malloc wrapper lib
 dnl ========================================================
 MOZ_ARG_WITH_STRING(wrap-malloc,
 [  --with-wrap-malloc=DIR  Location of malloc wrapper library],
     WRAP_MALLOC_LIB=$withval)
 
 dnl ========================================================
+dnl = Use Valgrind
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(valgrind,
+[  --enable-valgrind       Enable Valgrind integration hooks (default=no)],
+    MOZ_VALGRIND=1,
+    MOZ_VALGRIND= )
+if test -n "$MOZ_VALGRIND"; then
+    AC_CHECK_HEADER([valgrind/valgrind.h], [],
+        AC_MSG_ERROR(
+            [--enable-valgrind specified but Valgrind is not installed]))
+    AC_DEFINE(MOZ_VALGRIND)
+fi
+
+dnl ========================================================
 dnl = Use Electric Fence
 dnl ========================================================
 MOZ_ARG_ENABLE_BOOL(efence,
 [  --enable-efence         Link with Electric Fence],
     _ENABLE_EFENCE=1,
     _ENABLE_EFENCE= )
 if test -n "$_ENABLE_EFENCE"; then
     AC_CHECK_LIB(efence,malloc)
--- a/dom/src/base/nsDOMClassInfo.cpp
+++ b/dom/src/base/nsDOMClassInfo.cpp
@@ -6364,17 +6364,17 @@ nsWindowSH::NewResolve(nsIXPConnectWrapp
       // readwrite "replaceable" property is being set w/o being
       // fully qualified. Define the property on obj with the value
       // undefined to override the predefined property. This is done
       // for compatibility with other browsers.
       JSAutoRequest ar(cx);
 
       if (!::JS_DefineUCProperty(cx, obj, ::JS_GetStringChars(str),
                                  ::JS_GetStringLength(str),
-                                 JSVAL_VOID, nsnull, nsnull,
+                                 JSVAL_VOID, JS_PropertyStub, JS_PropertyStub,
                                  JSPROP_ENUMERATE)) {
         return NS_ERROR_FAILURE;
       }
       *objp = obj;
 
       return NS_OK;
     }
   } else {
--- a/js/src/Makefile.in
+++ b/js/src/Makefile.in
@@ -349,16 +349,24 @@ ifdef MOZ_SYNC_BUILD_FILES
 # js/config/autoconf.mk.in doesn't need most of the stuff in
 # config/autoconf.mk.in.
 check-sync-dirs = $(PYTHON) $(srcdir)/config/check-sync-dirs.py
 check::
 	$(check-sync-dirs) $(srcdir)/config $(MOZ_SYNC_BUILD_FILES)/config
 	$(check-sync-dirs) $(srcdir)/build $(MOZ_SYNC_BUILD_FILES)/build
 endif
 
+# Temporarily disable - backout of bug 473989.
+#ifdef ENABLE_JIT
+#check::
+#	$(wildcard $(RUN_TEST_PROGRAM)) ./js$(BIN_SUFFIX) -j -e \
+#		"var gSrcdir='$(srcdir)'; var gSkipSlowTests=true; var gReportSummary=false;" \
+#		$(srcdir)/trace-test.js
+#endif
+
 # our build system doesn't handle subdir srcs very gracefully today
 export::
 	mkdir -p nanojit
 
 DEFINES		+= -DEXPORT_JS_API 
 
 INCLUDES	+= -I$(srcdir)
 
--- a/js/src/builtins.tbl
+++ b/js/src/builtins.tbl
@@ -74,17 +74,16 @@ BUILTIN2(extern, DOUBLE,    js_dmod, DOU
 BUILTIN2(extern, INT32,     js_imod, INT32, INT32,                              1, 1)
 BUILTIN1(extern, INT32,     js_DoubleToInt32, DOUBLE,                           1, 1)
 BUILTIN1(extern, UINT32,    js_DoubleToUint32, DOUBLE,                          1, 1)
 
 BUILTIN2(extern, DOUBLE,    js_StringToNumber, CONTEXT, STRING,                 1, 1)
 BUILTIN2(extern, INT32,     js_StringToInt32, CONTEXT, STRING,                  1, 1)
 BUILTIN2(FRIEND, BOOL,      js_CloseIterator, CONTEXT, JSVAL,                   0, 0)
 BUILTIN2(extern, SIDEEXIT,  js_CallTree, INTERPSTATE, FRAGMENT,                 0, 0)
-BUILTIN2(extern, OBJECT,    js_FastNewObject, CONTEXT, OBJECT,                  0, 0)
 BUILTIN3(extern, BOOL,      js_AddProperty, CONTEXT, OBJECT, SCOPEPROP,         0, 0)
 BUILTIN3(extern, BOOL,      js_HasNamedProperty, CONTEXT, OBJECT, STRING,       0, 0)
 BUILTIN3(extern, BOOL,      js_HasNamedPropertyInt32, CONTEXT, OBJECT, INT32,   0, 0)
 BUILTIN3(extern, JSVAL,     js_CallGetter, CONTEXT, OBJECT, SCOPEPROP,          0, 0)
 BUILTIN2(extern, STRING,    js_TypeOfObject, CONTEXT, OBJECT,                   1, 1)
 BUILTIN2(extern, STRING,    js_TypeOfBoolean, CONTEXT, INT32,                   1, 1)
 BUILTIN2(extern, DOUBLE,    js_BooleanOrUndefinedToNumber, CONTEXT, INT32,      1, 1)
 BUILTIN2(extern, STRING,    js_BooleanOrUndefinedToString, CONTEXT, INT32,      1, 1)
--- a/js/src/configure.in
+++ b/js/src/configure.in
@@ -4267,24 +4267,16 @@ if test "$MOZ_MEMORY"; then
     dnl Also pass this to NSPR/NSS
     DLLFLAGS="$DLLFLAGS -MANIFEST:NO"
     export DLLFLAGS
     ;;
   *)
     AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
     ;;
   esac
-
-  AC_ARG_WITH([valgrind],
-    [  --with-valgrind         Enable valgrind integration hooks],
-    [enable_valgrind="yes"], [enable_valgrind="no"])
-  AC_CHECK_HEADER([valgrind/valgrind.h], [], [enable_valgrind="no"])
-  if test "x$enable_valgrind" = "xyes" ; then
-    AC_DEFINE(MOZ_VALGRIND)
-  fi
 fi
 AC_SUBST(MOZ_MEMORY)
 AC_SUBST(WIN32_CRT_SRC_DIR)
 AC_SUBST(WIN32_CUSTOM_CRT_DIR)
 AC_SUBST(MOZ_LIB)
 AC_SUBST(MOZ_PATH)
 dnl Need to set this for make because NSS doesn't have configure
 AC_SUBST(DLLFLAGS)
@@ -4307,16 +4299,30 @@ fi
 dnl ========================================================
 dnl = Location of malloc wrapper lib
 dnl ========================================================
 MOZ_ARG_WITH_STRING(wrap-malloc,
 [  --with-wrap-malloc=DIR  Location of malloc wrapper library],
     WRAP_MALLOC_LIB=$withval)
 
 dnl ========================================================
+dnl = Use Valgrind
+dnl ========================================================
+MOZ_ARG_ENABLE_BOOL(valgrind,
+[  --enable-valgrind       Enable Valgrind integration hooks (default=no)],
+    MOZ_VALGRIND=1,
+    MOZ_VALGRIND= )
+if test -n "$MOZ_VALGRIND"; then
+    AC_CHECK_HEADER([valgrind/valgrind.h], [],
+        AC_MSG_ERROR(
+            [--enable-valgrind specified but Valgrind is not installed]))
+    AC_DEFINE(MOZ_VALGRIND)
+fi
+
+dnl ========================================================
 dnl = Use Electric Fence
 dnl ========================================================
 MOZ_ARG_ENABLE_BOOL(efence,
 [  --enable-efence         Link with Electric Fence],
     _ENABLE_EFENCE=1,
     _ENABLE_EFENCE= )
 if test -n "$_ENABLE_EFENCE"; then
     AC_CHECK_LIB(efence,malloc)
--- a/js/src/jsapi.cpp
+++ b/js/src/jsapi.cpp
@@ -99,16 +99,24 @@
 
 #if defined(JS_THREADSAFE)
 #define CHECK_REQUEST(cx)                                                   \
     JS_ASSERT((cx)->requestDepth || (cx)->thread == (cx)->runtime->gcThread)
 #else
 #define CHECK_REQUEST(cx)       ((void)0)
 #endif
 
+/* Check that we can cast JSObject* as jsval without tag bit manipulations. */
+JS_STATIC_ASSERT(JSVAL_OBJECT == 0);
+
+/* Check that JSVAL_TRACE_KIND works. */
+JS_STATIC_ASSERT(JSVAL_TRACE_KIND(JSVAL_OBJECT) == JSTRACE_OBJECT);
+JS_STATIC_ASSERT(JSVAL_TRACE_KIND(JSVAL_DOUBLE) == JSTRACE_DOUBLE);
+JS_STATIC_ASSERT(JSVAL_TRACE_KIND(JSVAL_STRING) == JSTRACE_STRING);
+
 JS_PUBLIC_API(int64)
 JS_Now()
 {
     return PRMJ_Now();
 }
 
 JS_PUBLIC_API(jsval)
 JS_GetNaNValue(JSContext *cx)
@@ -2745,146 +2753,19 @@ JS_FinalizeStub(JSContext *cx, JSObject 
 }
 
 JS_PUBLIC_API(JSObject *)
 JS_InitClass(JSContext *cx, JSObject *obj, JSObject *parent_proto,
              JSClass *clasp, JSNative constructor, uintN nargs,
              JSPropertySpec *ps, JSFunctionSpec *fs,
              JSPropertySpec *static_ps, JSFunctionSpec *static_fs)
 {
-    JSAtom *atom;
-    JSProtoKey key;
-    JSObject *proto, *ctor;
-    JSTempValueRooter tvr;
-    jsval cval, rval;
-    JSBool named;
-    JSFunction *fun;
-
     CHECK_REQUEST(cx);
-    atom = js_Atomize(cx, clasp->name, strlen(clasp->name), 0);
-    if (!atom)
-        return NULL;
-
-    /*
-     * When initializing a standard class, if no parent_proto (grand-proto of
-     * instances of the class, parent-proto of the class's prototype object)
-     * is given, we must use Object.prototype if it is available.  Otherwise,
-     * we could look up the wrong binding for a class name in obj.  Example:
-     *
-     *   String = Array;
-     *   print("hi there".join);
-     *
-     * should print undefined, not Array.prototype.join.  This is required by
-     * ECMA-262, alas.  It might have been better to make String readonly and
-     * permanent in the global object, instead -- but that's too big a change
-     * to swallow at this point.
-     */
-    key = JSCLASS_CACHED_PROTO_KEY(clasp);
-    if (key != JSProto_Null &&
-        !parent_proto &&
-        !js_GetClassPrototype(cx, obj, INT_TO_JSID(JSProto_Object),
-                              &parent_proto)) {
-        return NULL;
-    }
-
-    /* Create a prototype object for this class. */
-    proto = js_NewObject(cx, clasp, parent_proto, obj, 0);
-    if (!proto)
-        return NULL;
-
-    /* After this point, control must exit via label bad or out. */
-    JS_PUSH_TEMP_ROOT_OBJECT(cx, proto, &tvr);
-
-    if (!constructor) {
-        /*
-         * Lacking a constructor, name the prototype (e.g., Math) unless this
-         * class (a) is anonymous, i.e. for internal use only; (b) the class
-         * of obj (the global object) is has a reserved slot indexed by key;
-         * and (c) key is not the null key.
-         */
-        if ((clasp->flags & JSCLASS_IS_ANONYMOUS) &&
-            (OBJ_GET_CLASS(cx, obj)->flags & JSCLASS_IS_GLOBAL) &&
-            key != JSProto_Null) {
-            named = JS_FALSE;
-        } else {
-            named = OBJ_DEFINE_PROPERTY(cx, obj, ATOM_TO_JSID(atom),
-                                        OBJECT_TO_JSVAL(proto),
-                                        JS_PropertyStub, JS_PropertyStub,
-                                        (clasp->flags & JSCLASS_IS_ANONYMOUS)
-                                        ? JSPROP_READONLY | JSPROP_PERMANENT
-                                        : 0,
-                                        NULL);
-            if (!named)
-                goto bad;
-        }
-
-        ctor = proto;
-    } else {
-        /* Define the constructor function in obj's scope. */
-        fun = js_DefineFunction(cx, obj, atom, constructor, nargs,
-                                JSFUN_STUB_GSOPS);
-        named = (fun != NULL);
-        if (!fun)
-            goto bad;
-
-        /*
-         * Remember the class this function is a constructor for so that
-         * we know to create an object of this class when we call the
-         * constructor.
-         */
-        FUN_CLASP(fun) = clasp;
-
-        /*
-         * Optionally construct the prototype object, before the class has
-         * been fully initialized.  Allow the ctor to replace proto with a
-         * different object, as is done for operator new -- and as at least
-         * XML support requires.
-         */
-        ctor = FUN_OBJECT(fun);
-        if (clasp->flags & JSCLASS_CONSTRUCT_PROTOTYPE) {
-            cval = OBJECT_TO_JSVAL(ctor);
-            if (!js_InternalConstruct(cx, proto, cval, 0, NULL, &rval))
-                goto bad;
-            if (!JSVAL_IS_PRIMITIVE(rval) && JSVAL_TO_OBJECT(rval) != proto)
-                proto = JSVAL_TO_OBJECT(rval);
-        }
-
-        /* Connect constructor and prototype by named properties. */
-        if (!js_SetClassPrototype(cx, ctor, proto,
-                                  JSPROP_READONLY | JSPROP_PERMANENT)) {
-            goto bad;
-        }
-
-        /* Bootstrap Function.prototype (see also JS_InitStandardClasses). */
-        if (OBJ_GET_CLASS(cx, ctor) == clasp) {
-            OBJ_SET_PROTO(cx, ctor, proto);
-        }
-    }
-
-    /* Add properties and methods to the prototype and the constructor. */
-    if ((ps && !JS_DefineProperties(cx, proto, ps)) ||
-        (fs && !JS_DefineFunctions(cx, proto, fs)) ||
-        (static_ps && !JS_DefineProperties(cx, ctor, static_ps)) ||
-        (static_fs && !JS_DefineFunctions(cx, ctor, static_fs))) {
-        goto bad;
-    }
-
-    /* If this is a standard class, cache its prototype. */
-    if (key != JSProto_Null && !js_SetClassObject(cx, obj, key, ctor))
-        goto bad;
-
-out:
-    JS_POP_TEMP_ROOT(cx, &tvr);
-    return proto;
-
-bad:
-    if (named)
-        (void) OBJ_DELETE_PROPERTY(cx, obj, ATOM_TO_JSID(atom), &rval);
-    proto = NULL;
-    goto out;
+    return js_InitClass(cx, obj, parent_proto, clasp, constructor, nargs,
+                        ps, fs, static_ps, static_fs, NULL);
 }
 
 #ifdef JS_THREADSAFE
 JS_PUBLIC_API(JSClass *)
 JS_GetClass(JSContext *cx, JSObject *obj)
 {
     return OBJ_GET_CLASS(cx, obj);
 }
--- a/js/src/jsapi.h
+++ b/js/src/jsapi.h
@@ -110,17 +110,16 @@ JSVAL_TO_STRING(jsval v)
 {
     JS_ASSERT(JSVAL_IS_STRING(v));
     return (JSString *) JSVAL_TO_GCTHING(v);
 }
 
 static JS_ALWAYS_INLINE jsval
 OBJECT_TO_JSVAL(JSObject *obj)
 {
-    JS_STATIC_ASSERT(JSVAL_OBJECT == 0);
     JS_ASSERT(((jsval) obj & JSVAL_TAGMASK) == JSVAL_OBJECT);
     return (jsval) obj;
 }
 
 static JS_ALWAYS_INLINE jsval
 DOUBLE_TO_JSVAL(jsdouble *dp)
 {
     JS_ASSERT(((jsword) dp & JSVAL_TAGMASK) == 0);
@@ -1011,20 +1010,16 @@ JS_MarkGCThing(JSContext *cx, void *thin
 /*
  * Use the following macros to check if a particular jsval is a traceable
  * thing and to extract the thing and its kind to pass to JS_CallTracer.
  */
 #define JSVAL_IS_TRACEABLE(v)   (JSVAL_IS_GCTHING(v) && !JSVAL_IS_NULL(v))
 #define JSVAL_TO_TRACEABLE(v)   (JSVAL_TO_GCTHING(v))
 #define JSVAL_TRACE_KIND(v)     (JSVAL_TAG(v) >> 1)
 
-JS_STATIC_ASSERT(JSVAL_TRACE_KIND(JSVAL_OBJECT) == JSTRACE_OBJECT);
-JS_STATIC_ASSERT(JSVAL_TRACE_KIND(JSVAL_DOUBLE) == JSTRACE_DOUBLE);
-JS_STATIC_ASSERT(JSVAL_TRACE_KIND(JSVAL_STRING) == JSTRACE_STRING);
-
 struct JSTracer {
     JSContext           *context;
     JSTraceCallback     callback;
 #ifdef DEBUG
     JSTraceNamePrinter  debugPrinter;
     const void          *debugPrintArg;
     size_t              debugPrintIndex;
 #endif
--- a/js/src/jsarray.cpp
+++ b/js/src/jsarray.cpp
@@ -36,17 +36,17 @@
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 /*
  * JS array class.
  *
- * Array objects begin as "dense" arrays, optimized for numeric-only property
+ * Array objects begin as "dense" arrays, optimized for index-only property
  * access over a vector of slots (obj->dslots) with high load factor.  Array
  * methods optimize for denseness by testing that the object's class is
  * &js_ArrayClass, and can then directly manipulate the slots for efficiency.
  *
  * We track these pieces of metadata for arrays in dense mode:
  *  - the array's length property as a uint32, in JSSLOT_ARRAY_LENGTH,
  *  - the number of indices that are filled (non-holes), in JSSLOT_ARRAY_COUNT,
  *  - the net number of slots starting at dslots (capacity), in dslots[-1] if
@@ -55,17 +55,17 @@
  * In dense mode, holes in the array are represented by JSVAL_HOLE.  The final
  * slot in fslots (JSSLOT_ARRAY_LOOKUP_HOLDER) is used to store the single jsid
  * "in use" by a lookupProperty caller.
  *
  * Arrays are converted to use js_SlowArrayClass when any of these conditions
  * are met:
  *  - the load factor (COUNT / capacity) is less than 0.25, and there are
  *    more than MIN_SPARSE_INDEX slots total
- *  - a property is set that is non-numeric (and not "length"); or
+ *  - a property is set that is not indexed (and not "length"); or
  *  - a property is defined that has non-default property attributes.
  *
  * Dense arrays do not track property creation order, so unlike other native
  * objects and slow arrays, enumerating an array does not necessarily visit the
  * properties in the order they were created.  We could instead maintain the
  * scope to track property enumeration order, but still use the fast slot
  * access.  That would have the same memory cost as just using a
  * js_SlowArrayClass, but have the same performance characteristics as a dense
@@ -817,16 +817,38 @@ array_setProperty(JSContext *cx, JSObjec
     if (i >= (uint32)obj->fslots[JSSLOT_ARRAY_LENGTH])
         obj->fslots[JSSLOT_ARRAY_LENGTH] = i + 1;
     if (obj->dslots[i] == JSVAL_HOLE)
         obj->fslots[JSSLOT_ARRAY_COUNT]++;
     obj->dslots[i] = *vp;
     return JS_TRUE;
 }
 
+JSBool
+js_PrototypeHasIndexedProperties(JSContext *cx, JSObject *obj)
+{
+    /*
+     * Walk up the prototype chain and see if this indexed element already
+     * exists. If we hit the end of the prototype chain, it's safe to set the
+     * element on the original object.
+     */
+   while ((obj = JSVAL_TO_OBJECT(obj->fslots[JSSLOT_PROTO])) != NULL) {
+        /*
+         * If the prototype is a non-native object (possibly a dense array), or
+         * a native object (possibly a slow array) that has indexed properties,
+         * return true.
+         */
+        if (!OBJ_IS_NATIVE(obj))
+            return JS_TRUE;
+        if (SCOPE_HAS_INDEXED_PROPERTIES(OBJ_SCOPE(obj)))
+            return JS_TRUE;
+    }
+    return JS_FALSE;
+}
+
 #ifdef JS_TRACER
 JSBool FASTCALL
 js_Array_dense_setelem(JSContext* cx, JSObject* obj, jsint i, jsval v)
 {
     JS_ASSERT(OBJ_IS_DENSE_ARRAY(cx, obj));
 
     /*
      * Let the interpreter worry about negative array indexes.
@@ -838,18 +860,19 @@ js_Array_dense_setelem(JSContext* cx, JS
      * If needed, grow the array as long it remains dense, otherwise fall off trace.
      */
     jsuint u = jsuint(i);
     jsuint capacity = js_DenseArrayCapacity(obj);
     if ((u >= capacity) && (INDEX_TOO_SPARSE(obj, u) || !EnsureCapacity(cx, obj, u + 1)))
         return JS_FALSE;
 
     if (obj->dslots[u] == JSVAL_HOLE) {
-        if (cx->runtime->anyArrayProtoHasElement)
+        if (js_PrototypeHasIndexedProperties(cx, obj))
             return JS_FALSE;
+
         if (u >= jsuint(obj->fslots[JSSLOT_ARRAY_LENGTH]))
             obj->fslots[JSSLOT_ARRAY_LENGTH] = u + 1;
         ++obj->fslots[JSSLOT_ARRAY_COUNT];
     }
 
     obj->dslots[u] = v;
     return JS_TRUE;
 }
--- a/js/src/jsarray.h
+++ b/js/src/jsarray.h
@@ -58,16 +58,38 @@ js_IdIsIndex(jsval id, jsuint *indexp);
 
 extern JSClass js_ArrayClass, js_SlowArrayClass;
 
 #define OBJ_IS_DENSE_ARRAY(cx,obj)  (OBJ_GET_CLASS(cx, obj) == &js_ArrayClass)
 
 #define OBJ_IS_ARRAY(cx,obj)    (OBJ_IS_DENSE_ARRAY(cx, obj) ||               \
                                  OBJ_GET_CLASS(cx, obj) == &js_SlowArrayClass)
 
+/*
+ * Dense arrays are not native (OBJ_IS_NATIVE(cx, aobj) for a dense array aobj
+ * results in false, meaning aobj->map does not point to a JSScope).
+ *
+ * But Array methods are called via aobj.sort(), e.g., and the interpreter and
+ * the trace recorder must consult the property cache in order to perform well.
+ * The cache works only for native objects.
+ *
+ * Therefore the interpreter (js_Interpret in JSOP_GETPROP and JSOP_CALLPROP)
+ * and js_GetPropertyHelper use this inline function to skip up one link in the
+ * prototype chain when obj is a dense array, in order to find a likely-native
+ * object (to wit, Array.prototype) in which to probe for cached methods.
+ *
+ * Callers of js_GetProtoIfDenseArray must take care to use the original object
+ * (obj) for the |this| value of a getter, setter, or method call (bug 476447).
+ */
+static JS_INLINE JSObject *
+js_GetProtoIfDenseArray(JSContext *cx, JSObject *obj)
+{
+    return OBJ_IS_DENSE_ARRAY(cx, obj) ? OBJ_GET_PROTO(cx, obj) : obj;
+}
+
 extern JSObject *
 js_InitArrayClass(JSContext *cx, JSObject *obj);
 
 extern JSObject *
 js_NewArrayObject(JSContext *cx, jsuint length, jsval *vector,
                   JSBool holey = JS_FALSE);
 
 /* Create an array object that starts out already made slow/sparse. */
@@ -193,11 +215,14 @@ js_ArrayToJSInt16Buffer(JSContext *cx, J
 JS_FRIEND_API(JSBool)
 js_ArrayToJSInt32Buffer(JSContext *cx, JSObject *obj, jsuint offset, jsuint count,
                         JSInt32 *dest);
 
 JS_FRIEND_API(JSBool)
 js_ArrayToJSDoubleBuffer(JSContext *cx, JSObject *obj, jsuint offset, jsuint count,
                          jsdouble *dest);
 
+JSBool
+js_PrototypeHasIndexedProperties(JSContext *cx, JSObject *obj);
+
 JS_END_EXTERN_C
 
 #endif /* jsarray_h___ */
--- a/js/src/jsatom.cpp
+++ b/js/src/jsatom.cpp
@@ -51,16 +51,38 @@
 #include "jscntxt.h"
 #include "jsversion.h"
 #include "jsgc.h"
 #include "jslock.h"
 #include "jsnum.h"
 #include "jsscan.h"
 #include "jsstr.h"
 
+/*
+ * ATOM_HASH assumes that JSHashNumber is 32-bit even on 64-bit systems.
+ */
+JS_STATIC_ASSERT(sizeof(JSHashNumber) == 4);
+JS_STATIC_ASSERT(sizeof(JSAtom *) == JS_BYTES_PER_WORD);
+
+/*
+ * Start and limit offsets for atom pointers in JSAtomState must be aligned
+ * on the word boundary.
+ */
+JS_STATIC_ASSERT(ATOM_OFFSET_START % sizeof(JSAtom *) == 0);
+JS_STATIC_ASSERT(ATOM_OFFSET_LIMIT % sizeof(JSAtom *) == 0);
+
+/*
+ * JS_BOOLEAN_STR and JS_TYPE_STR assume that boolean names starts from the
+ * index 1 and type name starts from the index 1+2 atoms in JSAtomState.
+ */
+JS_STATIC_ASSERT(1 * sizeof(JSAtom *) ==
+                 offsetof(JSAtomState, booleanAtoms) - ATOM_OFFSET_START);
+JS_STATIC_ASSERT((1 + 2) * sizeof(JSAtom *) ==
+                 offsetof(JSAtomState, typeAtoms) - ATOM_OFFSET_START);
+
 const char *
 js_AtomToPrintableString(JSContext *cx, JSAtom *atom)
 {
     return js_ValueToPrintableString(cx, ATOM_KEY(atom));
 }
 
 #define JS_PROTO(name,code,init) const char js_##name##_str[] = #name;
 #include "jsproto.tbl"
--- a/js/src/jsatom.h
+++ b/js/src/jsatom.h
@@ -60,19 +60,16 @@ JS_BEGIN_EXTERN_C
 #define ATOM_TMPSTR     0x8       /* internal, to avoid extra string */
 
 #define ATOM_KEY(atom)            ((jsval)(atom))
 #define ATOM_IS_DOUBLE(atom)      JSVAL_IS_DOUBLE(ATOM_KEY(atom))
 #define ATOM_TO_DOUBLE(atom)      JSVAL_TO_DOUBLE(ATOM_KEY(atom))
 #define ATOM_IS_STRING(atom)      JSVAL_IS_STRING(ATOM_KEY(atom))
 #define ATOM_TO_STRING(atom)      JSVAL_TO_STRING(ATOM_KEY(atom))
 
-JS_STATIC_ASSERT(sizeof(JSHashNumber) == 4);
-JS_STATIC_ASSERT(sizeof(JSAtom *) == JS_BYTES_PER_WORD);
-
 #if JS_BYTES_PER_WORD == 4
 # define ATOM_HASH(atom)          ((JSHashNumber)(atom) >> 2)
 #elif JS_BYTES_PER_WORD == 8
 # define ATOM_HASH(atom)          (((JSHashNumber)(jsuword)(atom) >> 3) ^     \
                                    (JSHashNumber)((jsuword)(atom) >> 32))
 #else
 # error "Unsupported configuration"
 #endif
@@ -269,42 +266,32 @@ struct JSAtomState {
     ((JSAtom **)((uint8 *)(state) + ATOM_OFFSET_START))
 #define COMMON_ATOM_INDEX(name)                                               \
     ((offsetof(JSAtomState, name##Atom) - ATOM_OFFSET_START)                  \
      / sizeof(JSAtom*))
 #define COMMON_TYPE_ATOM_INDEX(type)                                          \
     ((offsetof(JSAtomState, typeAtoms[type]) - ATOM_OFFSET_START)             \
      / sizeof(JSAtom*))
 
-/* Start and limit offsets should correspond to atoms. */
-JS_STATIC_ASSERT(ATOM_OFFSET_START % sizeof(JSAtom *) == 0);
-JS_STATIC_ASSERT(ATOM_OFFSET_LIMIT % sizeof(JSAtom *) == 0);
-
 #define ATOM_OFFSET(name)       offsetof(JSAtomState, name##Atom)
 #define OFFSET_TO_ATOM(rt,off)  (*(JSAtom **)((char*)&(rt)->atomState + (off)))
 #define CLASS_ATOM_OFFSET(name) offsetof(JSAtomState,classAtoms[JSProto_##name])
 
 #define CLASS_ATOM(cx,name) \
     ((cx)->runtime->atomState.classAtoms[JSProto_##name])
 
 extern const char *const js_common_atom_names[];
 extern const size_t      js_common_atom_count;
 
 /*
- * Macros to access C strings for JSType and boolean literals together with
- * checks that boolean names start from index 1 and type names from 1+2.
+ * Macros to access C strings for JSType and boolean literals.
  */
 #define JS_BOOLEAN_STR(type) (js_common_atom_names[1 + (type)])
 #define JS_TYPE_STR(type)    (js_common_atom_names[1 + 2 + (type)])
 
-JS_STATIC_ASSERT(1 * sizeof(JSAtom *) ==
-                 offsetof(JSAtomState, booleanAtoms) - ATOM_OFFSET_START);
-JS_STATIC_ASSERT((1 + 2) * sizeof(JSAtom *) ==
-                 offsetof(JSAtomState, typeAtoms) - ATOM_OFFSET_START);
-
 /* Well-known predefined C strings. */
 #define JS_PROTO(name,code,init) extern const char js_##name##_str[];
 #include "jsproto.tbl"
 #undef JS_PROTO
 
 extern const char   js_anonymous_str[];
 extern const char   js_apply_str[];
 extern const char   js_arguments_str[];
--- a/js/src/jsbit.h
+++ b/js/src/jsbit.h
@@ -124,17 +124,16 @@ unsigned char _BitScanReverse(unsigned l
 #ifdef JS_HAS_BUILTIN_BITSCAN32
 /*
  * Use intrinsic function or count-leading-zeros to calculate ceil(log2(_n)).
  * The macro checks for "n <= 1" and not "n != 0" as js_bitscan_clz32(0) is
  * undefined.
  */
 # define JS_CEILING_LOG2(_log2,_n)                                            \
     JS_BEGIN_MACRO                                                            \
-        JS_STATIC_ASSERT(sizeof(unsigned int) == sizeof(JSUint32));           \
         unsigned int j_ = (unsigned int)(_n);                                 \
         (_log2) = (j_ <= 1 ? 0 : 32 - js_bitscan_clz32(j_ - 1));              \
     JS_END_MACRO
 #else
 # define JS_CEILING_LOG2(_log2,_n)                                            \
     JS_BEGIN_MACRO                                                            \
         JSUint32 j_ = (JSUint32)(_n);                                         \
         (_log2) = 0;                                                          \
@@ -162,17 +161,16 @@ unsigned char _BitScanReverse(unsigned l
 #ifdef JS_HAS_BUILTIN_BITSCAN32
 /*
  * Use js_bitscan_clz32 or count-leading-zeros to calculate floor(log2(_n)).
  * Since js_bitscan_clz32(0) is undefined, the macro set the loweset bit to 1
  * to ensure 0 result when _n == 0.
  */
 # define JS_FLOOR_LOG2(_log2,_n)                                              \
     JS_BEGIN_MACRO                                                            \
-        JS_STATIC_ASSERT(sizeof(unsigned int) == sizeof(JSUint32));           \
         (_log2) = 31 - js_bitscan_clz32(((unsigned int)(_n)) | 1);            \
     JS_END_MACRO
 #else
 # define JS_FLOOR_LOG2(_log2,_n)                                              \
     JS_BEGIN_MACRO                                                            \
         JSUint32 j_ = (JSUint32)(_n);                                         \
         (_log2) = 0;                                                          \
         if ((j_) >> 16)                                                       \
@@ -202,27 +200,25 @@ unsigned char _BitScanReverse(unsigned l
  * This is a version of JS_FloorLog2 that operates on jsuword with
  * CPU-dependant size and requires that n != 0.
  */
 #define JS_FLOOR_LOG2W(n) (JS_ASSERT((n) != 0), js_FloorLog2wImpl(n))
 
 #if JS_BYTES_PER_WORD == 4
 
 # ifdef JS_HAS_BUILTIN_BITSCAN32
-JS_STATIC_ASSERT(sizeof(unsigned) == sizeof(JSUword));
 #  define js_FloorLog2wImpl(n)                                                \
     ((JSUword)(JS_BITS_PER_WORD - 1 - js_bitscan_clz32(n)))
 # else
 #  define js_FloorLog2wImpl(n) ((JSUword)JS_FloorLog2(n))
 #endif
 
 #elif JS_BYTES_PER_WORD == 8
 
 # ifdef JS_HAS_BUILTIN_BITSCAN64
-JS_STATIC_ASSERT(sizeof(unsigned long long) == sizeof(JSUword));
 #  define js_FloorLog2wImpl(n)                                                \
     ((JSUword)(JS_BITS_PER_WORD - 1 - js_bitscan_clz64(n)))
 # else
 extern JSUword js_FloorLog2wImpl(JSUword n);
 # endif
 
 #else
 
--- a/js/src/jsbuiltins.cpp
+++ b/js/src/jsbuiltins.cpp
@@ -216,62 +216,16 @@ js_CallTree(InterpState* state, Fragment
            with that guard. If we mismatch on a tree call guard, this will contain the last
            non-nested guard we encountered, which is the innermost loop or branch guard. */
         state->lastTreeExitGuard = lr;
     }
 
     return lr;
 }
 
-JSObject* FASTCALL
-js_FastNewObject(JSContext* cx, JSObject* ctor)
-{
-    JS_ASSERT(HAS_FUNCTION_CLASS(ctor));
-    JSFunction* fun = GET_FUNCTION_PRIVATE(cx, ctor);
-    JSClass* clasp = (FUN_INTERPRETED(fun) || (fun->flags & JSFUN_TRACEABLE))
-                     ? &js_ObjectClass
-                     : FUN_CLASP(fun);
-    JS_ASSERT(clasp != &js_ArrayClass);
-
-    JS_LOCK_OBJ(cx, ctor);
-    JSScope *scope = OBJ_SCOPE(ctor);
-    JS_ASSERT(scope->object == ctor);
-    JSAtom* atom = cx->runtime->atomState.classPrototypeAtom;
-
-    JSScopeProperty *sprop = SCOPE_GET_PROPERTY(scope, ATOM_TO_JSID(atom));
-    JS_ASSERT(SPROP_HAS_VALID_SLOT(sprop, scope));
-    jsval v = LOCKED_OBJ_GET_SLOT(ctor, sprop->slot);
-    JS_UNLOCK_SCOPE(cx, scope);
-
-    JSObject* proto;
-    if (JSVAL_IS_PRIMITIVE(v)) {
-        if (!js_GetClassPrototype(cx, JSVAL_TO_OBJECT(ctor->fslots[JSSLOT_PARENT]), 
-                                  INT_TO_JSID(JSProto_Object), &proto)) {
-            return NULL;
-        }
-    } else {
-        proto = JSVAL_TO_OBJECT(v);
-    }
-
-    JS_ASSERT(JS_ON_TRACE(cx));
-    JSObject* obj = (JSObject*) js_NewGCThing(cx, GCX_OBJECT, sizeof(JSObject));
-    if (!obj)
-        return NULL;
-
-    obj->classword = jsuword(clasp);
-    obj->fslots[JSSLOT_PROTO] = OBJECT_TO_JSVAL(proto);
-    obj->fslots[JSSLOT_PARENT] = ctor->fslots[JSSLOT_PARENT];
-    for (unsigned i = JSSLOT_PRIVATE; i != JS_INITIAL_NSLOTS; ++i)
-        obj->fslots[i] = JSVAL_VOID;
-
-    obj->map = js_HoldObjectMap(cx, proto->map);
-    obj->dslots = NULL;
-    return obj;
-}
-
 JSBool FASTCALL
 js_AddProperty(JSContext* cx, JSObject* obj, JSScopeProperty* sprop)
 {
     JSScopeProperty* sprop2 = NULL; // initialize early to make MSVC happy
 
     JS_ASSERT(OBJ_IS_NATIVE(obj));
     JS_ASSERT(SPROP_HAS_STUB_SETTER(sprop));
 
--- a/js/src/jsbuiltins.h
+++ b/js/src/jsbuiltins.h
@@ -45,17 +45,18 @@
 #include "nanojit/nanojit.h"
 #include "jstracer.h"
 
 #ifdef THIS
 #undef THIS
 #endif
 
 enum JSTNErrType { INFALLIBLE, FAIL_STATUS, FAIL_NULL, FAIL_NEG, FAIL_VOID, FAIL_COOKIE };
-enum { JSTN_ERRTYPE_MASK = 0x07, JSTN_UNBOX_AFTER = 0x08, JSTN_MORE = 0x10 };
+enum { JSTN_ERRTYPE_MASK = 0x07, JSTN_UNBOX_AFTER = 0x08, JSTN_MORE = 0x10,
+       JSTN_CONSTRUCTOR = 0x20 };
 
 #define JSTN_ERRTYPE(jstn)  ((jstn)->flags & JSTN_ERRTYPE_MASK)
 
 /*
  * |prefix| and |argtypes| declare what arguments should be passed to the
  * native function.  |prefix| can contain the following characters:
  *
  * 'C': a JSContext* argument
@@ -80,17 +81,18 @@ enum { JSTN_ERRTYPE_MASK = 0x07, JSTN_UN
  * 'f': a JSObject* argument that is of class js_FunctionClass
  * 'v': a jsval argument (boxing whatever value is actually being passed in)
  */
 struct JSTraceableNative {
     JSFastNative            native;
     const nanojit::CallInfo *builtin;
     const char              *prefix;
     const char              *argtypes;
-    uintN                   flags;  /* JSTNErrType | JSTN_UNBOX_AFTER | JSTN_MORE */
+    uintN                   flags;  /* JSTNErrType | JSTN_UNBOX_AFTER | JSTN_MORE | 
+                                       JSTN_CONSTRUCTOR */
 };
 
 /*
  * We use a magic boxed pointer value to represent error conditions that
  * trigger a side exit. The address is so low that it should never be actually
  * in use. If it is, a performance regression occurs, not an actual runtime
  * error.
  */
@@ -172,33 +174,37 @@ struct JSTraceableNative {
 #define _JS_CTYPE(ctype, size, pch, ach, flags)     (ctype, size, pch, ach, flags)
 #define _JS_JSVAL_CTYPE(size, pch, ach, flags)  (jsval, size, pch, ach, (flags | JSTN_UNBOX_AFTER))
 
 #define _JS_CTYPE_CONTEXT           _JS_CTYPE(JSContext *,            _JS_PTR,"C", "", INFALLIBLE)
 #define _JS_CTYPE_RUNTIME           _JS_CTYPE(JSRuntime *,            _JS_PTR,"R", "", INFALLIBLE)
 #define _JS_CTYPE_THIS              _JS_CTYPE(JSObject *,             _JS_PTR,"T", "", INFALLIBLE)
 #define _JS_CTYPE_THIS_DOUBLE       _JS_CTYPE(jsdouble,               _JS_F64,"D", "", INFALLIBLE)
 #define _JS_CTYPE_THIS_STRING       _JS_CTYPE(JSString *,             _JS_PTR,"S", "", INFALLIBLE)
+#define _JS_CTYPE_CALLEE            _JS_CTYPE(JSObject *,             _JS_PTR,"f","",  INFALLIBLE)
+#define _JS_CTYPE_CALLEE_PROTOTYPE  _JS_CTYPE(JSObject *,             _JS_PTR,"p","",  INFALLIBLE)
 #define _JS_CTYPE_PC                _JS_CTYPE(jsbytecode *,           _JS_PTR,"P", "", INFALLIBLE)
 #define _JS_CTYPE_JSVAL             _JS_JSVAL_CTYPE(                  _JS_PTR, "","v", INFALLIBLE)
 #define _JS_CTYPE_JSVAL_RETRY       _JS_JSVAL_CTYPE(                  _JS_PTR, --, --, FAIL_COOKIE)
 #define _JS_CTYPE_JSVAL_FAIL        _JS_JSVAL_CTYPE(                  _JS_PTR, --, --, FAIL_STATUS)
 #define _JS_CTYPE_BOOL              _JS_CTYPE(JSBool,                 _JS_I32, "","i", INFALLIBLE)
 #define _JS_CTYPE_BOOL_RETRY        _JS_CTYPE(int32,                  _JS_I32, --, --, FAIL_VOID)
 #define _JS_CTYPE_BOOL_FAIL         _JS_CTYPE(int32,                  _JS_I32, --, --, FAIL_STATUS)
 #define _JS_CTYPE_INT32             _JS_CTYPE(int32,                  _JS_I32, "","i", INFALLIBLE)
 #define _JS_CTYPE_INT32_RETRY       _JS_CTYPE(int32,                  _JS_I32, --, --, FAIL_NEG)
 #define _JS_CTYPE_UINT32            _JS_CTYPE(uint32,                 _JS_I32, --, --, INFALLIBLE)
 #define _JS_CTYPE_DOUBLE            _JS_CTYPE(jsdouble,               _JS_F64, "","d", INFALLIBLE)
 #define _JS_CTYPE_STRING            _JS_CTYPE(JSString *,             _JS_PTR, "","s", INFALLIBLE)
 #define _JS_CTYPE_STRING_RETRY      _JS_CTYPE(JSString *,             _JS_PTR, --, --, FAIL_NULL)
 #define _JS_CTYPE_STRING_FAIL       _JS_CTYPE(JSString *,             _JS_PTR, --, --, FAIL_STATUS)
 #define _JS_CTYPE_OBJECT            _JS_CTYPE(JSObject *,             _JS_PTR, "","o", INFALLIBLE)
-#define _JS_CTYPE_OBJECT_RETRY_NULL _JS_CTYPE(JSObject *,             _JS_PTR, --, --, FAIL_NULL)
+#define _JS_CTYPE_OBJECT_RETRY      _JS_CTYPE(JSObject *,             _JS_PTR, --, --, FAIL_NULL)
 #define _JS_CTYPE_OBJECT_FAIL       _JS_CTYPE(JSObject *,             _JS_PTR, --, --, FAIL_STATUS)
+#define _JS_CTYPE_CONSTRUCTOR_RETRY _JS_CTYPE(JSObject *,             _JS_PTR, --, --, FAIL_NULL | \
+                                                                                  JSTN_CONSTRUCTOR)
 #define _JS_CTYPE_REGEXP            _JS_CTYPE(JSObject *,             _JS_PTR, "","r", INFALLIBLE)
 #define _JS_CTYPE_SCOPEPROP         _JS_CTYPE(JSScopeProperty *,      _JS_PTR, --, --, INFALLIBLE)
 #define _JS_CTYPE_SIDEEXIT          _JS_CTYPE(SideExit *,             _JS_PTR, --, --, INFALLIBLE)
 #define _JS_CTYPE_INTERPSTATE       _JS_CTYPE(InterpState *,          _JS_PTR, --, --, INFALLIBLE)
 #define _JS_CTYPE_FRAGMENT          _JS_CTYPE(nanojit::Fragment *,    _JS_PTR, --, --, INFALLIBLE)
 
 #define _JS_EXPAND(tokens)  tokens
 
@@ -310,47 +316,47 @@ struct JSTraceableNative {
         _JS_CTYPE_PCH(at0),                                                                       \
     _JS_CTYPE_ACH(at4) _JS_CTYPE_ACH(at3) _JS_CTYPE_ACH(at2) _JS_CTYPE_ACH(at1)                   \
         _JS_CTYPE_ACH(at0),                                                                       \
     _JS_CTYPE_FLAGS(rt)
 
 #define JS_DEFINE_TRCINFO_1(name, tn0)                                                            \
     _JS_DEFINE_CALLINFO_n tn0                                                                     \
     JSTraceableNative name##_trcinfo[] = {                                                        \
-        { name, _JS_TN_INIT_HELPER_n tn0 }                                                        \
+        { (JSFastNative)name, _JS_TN_INIT_HELPER_n tn0 }                                          \
     };
 
 #define JS_DEFINE_TRCINFO_2(name, tn0, tn1)                                                       \
     _JS_DEFINE_CALLINFO_n tn0                                                                     \
     _JS_DEFINE_CALLINFO_n tn1                                                                     \
     JSTraceableNative name##_trcinfo[] = {                                                        \
-        { name, _JS_TN_INIT_HELPER_n tn0 | JSTN_MORE },                                           \
-        { name, _JS_TN_INIT_HELPER_n tn1 }                                                        \
+        { (JSFastNative)name, _JS_TN_INIT_HELPER_n tn0 | JSTN_MORE },                             \
+        { (JSFastNative)name, _JS_TN_INIT_HELPER_n tn1 }                                          \
     };
 
 #define JS_DEFINE_TRCINFO_3(name, tn0, tn1, tn2)                                                  \
     _JS_DEFINE_CALLINFO_n tn0                                                                     \
     _JS_DEFINE_CALLINFO_n tn1                                                                     \
     _JS_DEFINE_CALLINFO_n tn2                                                                     \
     JSTraceableNative name##_trcinfo[] = {                                                        \
-        { name, _JS_TN_INIT_HELPER_n tn0 | JSTN_MORE },                                           \
-        { name, _JS_TN_INIT_HELPER_n tn1 | JSTN_MORE },                                           \
-        { name, _JS_TN_INIT_HELPER_n tn2 }                                                        \
+        { (JSFastNative)name, _JS_TN_INIT_HELPER_n tn0 | JSTN_MORE },                             \
+        { (JSFastNative)name, _JS_TN_INIT_HELPER_n tn1 | JSTN_MORE },                             \
+        { (JSFastNative)name, _JS_TN_INIT_HELPER_n tn2 }                                          \
     };
 
 #define JS_DEFINE_TRCINFO_4(name, tn0, tn1, tn2, tn3)                                             \
     _JS_DEFINE_CALLINFO_n tn0                                                                     \
     _JS_DEFINE_CALLINFO_n tn1                                                                     \
     _JS_DEFINE_CALLINFO_n tn2                                                                     \
     _JS_DEFINE_CALLINFO_n tn3                                                                     \
     JSTraceableNative name##_trcinfo[] = {                                                        \
-        { name, _JS_TN_INIT_HELPER_n tn0 | JSTN_MORE },                                           \
-        { name, _JS_TN_INIT_HELPER_n tn1 | JSTN_MORE },                                           \
-        { name, _JS_TN_INIT_HELPER_n tn2 | JSTN_MORE },                                           \
-        { name, _JS_TN_INIT_HELPER_n tn3 }                                                        \
+        { (JSFastNative)name, _JS_TN_INIT_HELPER_n tn0 | JSTN_MORE },                             \
+        { (JSFastNative)name, _JS_TN_INIT_HELPER_n tn1 | JSTN_MORE },                             \
+        { (JSFastNative)name, _JS_TN_INIT_HELPER_n tn2 | JSTN_MORE },                             \
+        { (JSFastNative)name, _JS_TN_INIT_HELPER_n tn3 }                                          \
     };
 
 #define _JS_DEFINE_CALLINFO_n(n, args)  JS_DEFINE_CALLINFO_##n args
 
 jsdouble FASTCALL
 js_StringToNumber(JSContext* cx, JSString* str);
 
 jsdouble FASTCALL
@@ -379,41 +385,42 @@ js_Int32ToId(JSContext* cx, int32 index,
 #define JS_DECLARE_CALLINFO(name)
 #define JS_DEFINE_TRCINFO_1(name, tn0)
 #define JS_DEFINE_TRCINFO_2(name, tn0, tn1)
 #define JS_DEFINE_TRCINFO_3(name, tn0, tn1, tn2)
 #define JS_DEFINE_TRCINFO_4(name, tn0, tn1, tn2, tn3)
 
 #endif /* !JS_TRACER */
 
-/* Defined in jsarray.cpp */
+/* Defined in jsobj.cpp. */
+JS_DECLARE_CALLINFO(js_Object_tn)
+JS_DECLARE_CALLINFO(js_NewInstance)
+
+/* Defined in jsarray.cpp. */
+JS_DECLARE_CALLINFO(js_ArrayCompPush)
+JS_DECLARE_CALLINFO(js_Array_1str)
 JS_DECLARE_CALLINFO(js_Array_dense_setelem)
 JS_DECLARE_CALLINFO(js_FastNewArray)
+JS_DECLARE_CALLINFO(js_FastNewArrayWithLength)
 JS_DECLARE_CALLINFO(js_NewUninitializedArray)
-JS_DECLARE_CALLINFO(js_FastNewArrayWithLength)
-JS_DECLARE_CALLINFO(js_Array_1str)
-JS_DECLARE_CALLINFO(js_ArrayCompPush)
 
-/* Defined in jsdate.cpp */
-JS_DECLARE_CALLINFO(js_FastNewDate)
-
-/* Defined in jsnum.cpp */
+/* Defined in jsnum.cpp. */
 JS_DECLARE_CALLINFO(js_NumberToString)
 
-/* Defined in jsstr.cpp */
+/* Defined in jsstr.cpp. */
+JS_DECLARE_CALLINFO(js_CompareStrings)
 JS_DECLARE_CALLINFO(js_ConcatStrings)
+JS_DECLARE_CALLINFO(js_EqualStrings)
 JS_DECLARE_CALLINFO(js_String_getelem)
+JS_DECLARE_CALLINFO(js_String_p_charCodeAt)
 JS_DECLARE_CALLINFO(js_String_p_charCodeAt0)
 JS_DECLARE_CALLINFO(js_String_p_charCodeAt0_int)
-JS_DECLARE_CALLINFO(js_String_p_charCodeAt)
 JS_DECLARE_CALLINFO(js_String_p_charCodeAt_int)
-JS_DECLARE_CALLINFO(js_EqualStrings)
-JS_DECLARE_CALLINFO(js_CompareStrings)
 
-/* Defined in jsbuiltins.cpp */
+/* Defined in jsbuiltins.cpp. */
 #define BUILTIN1(linkage, rt, op, at0,                     cse, fold)  JS_DECLARE_CALLINFO(op)
 #define BUILTIN2(linkage, rt, op, at0, at1,                cse, fold)  JS_DECLARE_CALLINFO(op)
 #define BUILTIN3(linkage, rt, op, at0, at1, at2,           cse, fold)  JS_DECLARE_CALLINFO(op)
 #define BUILTIN4(linkage, rt, op, at0, at1, at2, at3,      cse, fold)  JS_DECLARE_CALLINFO(op)
 #define BUILTIN5(linkage, rt, op, at0, at1, at2, at3, at4, cse, fold)  JS_DECLARE_CALLINFO(op)
 #include "builtins.tbl"
 #undef BUILTIN
 #undef BUILTIN1
--- a/js/src/jscntxt.h
+++ b/js/src/jscntxt.h
@@ -572,25 +572,16 @@ struct JSRuntime {
 #define NATIVE_ENUM_CACHE_SIZE  JS_BIT(NATIVE_ENUM_CACHE_LOG2)
 
 #define NATIVE_ENUM_CACHE_HASH(shape)                                         \
     ((((shape) >> NATIVE_ENUM_CACHE_LOG2) ^ (shape)) & NATIVE_ENUM_CACHE_MASK)
 
     jsuword             nativeEnumCache[NATIVE_ENUM_CACHE_SIZE];
 
     /*
-     * Runtime-wide flag set to true when any Array prototype has an indexed
-     * property defined on it, creating a hazard for code reading or writing
-     * over a hole from a dense Array instance that is not prepared to look up
-     * the proto chain (the writing case must involve a check for a read-only
-     * element, which cannot be shadowed).
-     */
-    JSBool              anyArrayProtoHasElement;
-
-    /*
      * Various metering fields are defined at the end of JSRuntime. In this
      * way there is no need to recompile all the code that refers to other
      * fields of JSRuntime after enabling the corresponding metering macro.
      */
 #ifdef JS_DUMP_ENUM_CACHE_STATS
     int32               nativeEnumProbes;
     int32               nativeEnumMisses;
 # define ENUM_CACHE_METER(name)     JS_ATOMIC_INCREMENT(&cx->runtime->name)
@@ -773,22 +764,17 @@ typedef struct JSLocalRootStack {
  * Here single JSTVU_SINGLE covers both jsval and pointers to any GC-thing via
  * reinterpreting the thing as JSVAL_OBJECT. It works because the GC-thing is
  * aligned on a 0 mod 8 boundary, and object has the 0 jsval tag. So any
  * GC-thing may be tagged as if it were an object and untagged, if it's then
  * used only as an opaque pointer until discriminated by other means than tag
  * bits. This is how, for example, js_GetGCThingTraceKind uses its |thing|
  * parameter -- it consults GC-thing flags stored separately from the thing to
  * decide the kind of thing.
- *
- * The following checks that this type-punning is possible.
  */
-JS_STATIC_ASSERT(sizeof(JSTempValueUnion) == sizeof(jsval));
-JS_STATIC_ASSERT(sizeof(JSTempValueUnion) == sizeof(void *));
-
 #define JS_PUSH_TEMP_ROOT_COMMON(cx,x,tvr,cnt,kind)                           \
     JS_BEGIN_MACRO                                                            \
         JS_ASSERT((cx)->tempValueRooters != (tvr));                           \
         (tvr)->count = (cnt);                                                 \
         (tvr)->u.kind = (x);                                                  \
         (tvr)->down = (cx)->tempValueRooters;                                 \
         (cx)->tempValueRooters = (tvr);                                       \
     JS_END_MACRO
--- a/js/src/jsdate.cpp
+++ b/js/src/jsdate.cpp
@@ -2017,18 +2017,16 @@ date_valueOf(JSContext *cx, uintN argc, 
     if (!str)
         return JS_FALSE;
     number_str = ATOM_TO_STRING(cx->runtime->atomState.typeAtoms[JSTYPE_NUMBER]);
     if (js_EqualStrings(str, number_str))
         return date_getTime(cx, argc, vp);
     return date_toString(cx, argc, vp);
 }
 
-JS_DEFINE_CALLINFO_2(extern, OBJECT, js_FastNewDate, CONTEXT, OBJECT, 0, 0)
-
 // Don't really need an argument here, but we don't support arg-less builtins
 JS_DEFINE_TRCINFO_1(date_now,
     (1, (static, DOUBLE, date_now_tn, CONTEXT, 0, 0)))
 
 static JSFunctionSpec date_static_methods[] = {
     JS_FN("UTC",                 date_UTC,                MAXARGS,0),
     JS_FN("parse",               date_parse,              1,0),
     JS_TN("now",                 date_now,                0,0, date_now_trcinfo),
@@ -2167,57 +2165,55 @@ js_Date(JSContext *cx, JSObject *obj, ui
     }
     return JS_TRUE;
 }
 
 JS_STATIC_ASSERT(JSSLOT_PRIVATE == JSSLOT_UTC_TIME);
 JS_STATIC_ASSERT(JSSLOT_UTC_TIME + 1 == JSSLOT_LOCAL_TIME);
 
 #ifdef JS_TRACER
-JSObject* FASTCALL
-js_FastNewDate(JSContext* cx, JSObject* proto)
+
+static JSObject* FASTCALL
+Date_tn(JSContext* cx, JSObject* proto)
 {
     JS_ASSERT(JS_ON_TRACE(cx));
-    JSObject* obj = (JSObject*) js_NewGCThing(cx, GCX_OBJECT, sizeof(JSObject));
+    JSObject* obj = js_NewNativeObject(cx, &js_DateClass, proto, JSSLOT_LOCAL_TIME + 1);
     if (!obj)
         return NULL;
 
-    JSClass* clasp = &js_DateClass;
-    obj->classword = jsuword(clasp);
-
-    obj->fslots[JSSLOT_PROTO] = OBJECT_TO_JSVAL(proto);
-    obj->fslots[JSSLOT_PARENT] = proto->fslots[JSSLOT_PARENT];
-
     jsdouble* date = js_NewWeaklyRootedDouble(cx, 0.0);
     if (!date)
         return NULL;
     *date = date_now_tn(cx);
+
     obj->fslots[JSSLOT_UTC_TIME] = DOUBLE_TO_JSVAL(date);
     obj->fslots[JSSLOT_LOCAL_TIME] = DOUBLE_TO_JSVAL(cx->runtime->jsNaN);
-    for (unsigned i = JSSLOT_LOCAL_TIME + 1; i != JS_INITIAL_NSLOTS; ++i)
-        obj->fslots[i] = JSVAL_VOID;
-    
-    JS_ASSERT(!clasp->getObjectOps);
-    JS_ASSERT(proto->map->ops == &js_ObjectOps);
-    obj->map = js_HoldObjectMap(cx, proto->map);
-    obj->dslots = NULL;
     return obj;    
 }
-#endif
+
+JS_DEFINE_TRCINFO_1(js_Date,
+    (2, (static, CONSTRUCTOR_RETRY, Date_tn, CONTEXT, CALLEE_PROTOTYPE, 0, 0)))
+
+#else  /* !JS_TRACER */
+
+# define js_Date_trcinfo NULL
+
+#endif /* !JS_TRACER */
 
 JSObject *
 js_InitDateClass(JSContext *cx, JSObject *obj)
 {
     JSObject *proto;
     jsdouble *proto_date;
 
     /* set static LocalTZA */
     LocalTZA = -(PRMJ_LocalGMTDifference() * msPerSecond);
-    proto = JS_InitClass(cx, obj, NULL, &js_DateClass, js_Date, MAXARGS,
-                         NULL, date_methods, NULL, date_static_methods);
+    proto = js_InitClass(cx, obj, NULL, &js_DateClass, js_Date, MAXARGS,
+                         NULL, date_methods, NULL, date_static_methods,
+                         js_Date_trcinfo);
     if (!proto)
         return NULL;
 
     /* Alias toUTCString with toGMTString.  (ECMA B.2.6) */
     if (!JS_AliasProperty(cx, proto, "toUTCString", "toGMTString"))
         return NULL;
 
     /* Set the value of the Date.prototype date to NaN */
--- a/js/src/jsfun.cpp
+++ b/js/src/jsfun.cpp
@@ -2110,28 +2110,29 @@ js_NewFunction(JSContext *cx, JSObject *
         fun->u.i.nupvars = 0;
         fun->u.i.script = NULL;
 #ifdef DEBUG
         fun->u.i.names.taggedAtom = 0;
 #endif
     } else {
         fun->u.n.extra = 0;
         fun->u.n.spare = 0;
+        fun->u.n.clasp = NULL;
         if (flags & JSFUN_TRACEABLE) {
 #ifdef JS_TRACER
             JSTraceableNative *trcinfo =
                 JS_FUNC_TO_DATA_PTR(JSTraceableNative *, native);
             fun->u.n.native = (JSNative) trcinfo->native;
-            FUN_TRCINFO(fun) = trcinfo;
+            fun->u.n.trcinfo = trcinfo;
 #else
-            JS_ASSERT(0);
+            fun->u.n.trcinfo = NULL;
 #endif
         } else {
             fun->u.n.native = native;
-            FUN_CLASP(fun) = NULL;
+            fun->u.n.trcinfo = NULL;
         }
     }
     fun->atom = atom;
 
     /* Set private to self to indicate non-cloned fully initialized function. */
     FUN_OBJECT(fun)->fslots[JSSLOT_PRIVATE] = PRIVATE_TO_JSVAL(fun);
     return fun;
 }
--- a/js/src/jsfun.h
+++ b/js/src/jsfun.h
@@ -68,22 +68,20 @@ struct JSFunction {
     uint16          nargs;        /* maximum number of specified arguments,
                                      reflected as f.length/f.arity */
     uint16          flags;        /* flags, see JSFUN_* below and in jsapi.h */
     union {
         struct {
             uint16      extra;    /* number of arg slots for local GC roots */
             uint16      spare;    /* reserved for future use */
             JSNative    native;   /* native method pointer or null */
-            union {
-                JSClass             *clasp;    /* class of objects constructed
-                                                  by this function */
-                JSTraceableNative   *trcinfo;  /* tracer metadata; can be first
-                                                  element of array */
-            } u;
+            JSClass     *clasp;   /* class of objects constructed
+                                     by this function */
+            JSTraceableNative *trcinfo;  /* tracer metadata; can be first
+                                            element of array */
         } n;
         struct {
             uint16      nvars;    /* number of local variables */
             uint16      nupvars;  /* number of upvars (computable from script
                                      but here for faster access) */
             JSScript    *script;  /* interpreted bytecode descriptor or null */
             JSLocalNames names;   /* argument and variable names */
         } i;
@@ -106,21 +104,20 @@ struct JSFunction {
 #define FUN_NATIVE(fun)      (FUN_SLOW_NATIVE(fun) ? (fun)->u.n.native : NULL)
 #define FUN_FAST_NATIVE(fun) (((fun)->flags & JSFUN_FAST_NATIVE)              \
                               ? (JSFastNative) (fun)->u.n.native              \
                               : NULL)
 #define FUN_MINARGS(fun)     (((fun)->flags & JSFUN_FAST_NATIVE)              \
                               ? 0                                             \
                               : (fun)->nargs)
 #define FUN_CLASP(fun)       (JS_ASSERT(!FUN_INTERPRETED(fun)),               \
-                              JS_ASSERT(!((fun)->flags & JSFUN_TRACEABLE)),   \
-                              fun->u.n.u.clasp)
+                              fun->u.n.clasp)
 #define FUN_TRCINFO(fun)     (JS_ASSERT(!FUN_INTERPRETED(fun)),               \
                               JS_ASSERT((fun)->flags & JSFUN_TRACEABLE),      \
-                              fun->u.n.u.trcinfo)
+                              fun->u.n.trcinfo)
 
 /*
  * Traceable native.  This expands to a JSFunctionSpec initializer (like JS_FN
  * in jsapi.h).  fastcall is a JSFastNative; trcinfo is a JSTraceableNative *.
  */
 #ifdef JS_TRACER
 /* MSVC demands the intermediate (void *) cast here. */
 # define JS_TN(name,fastcall,nargs,flags,trcinfo)                             \
--- a/js/src/jsgc.cpp
+++ b/js/src/jsgc.cpp
@@ -127,16 +127,57 @@ extern "C" {
 #   if JS_GC_USE_MMAP
 #    error "JS_GC_USE_MMAP is set when mmap is not available"
 #   endif
 #  endif
 # endif
 #endif
 
 /*
+ * Check JSTempValueUnion has the size of jsval and void * so we can
+ * reinterpret jsval as void* GC-thing pointer and use JSTVU_SINGLE for
+ * different GC-things.
+ */
+JS_STATIC_ASSERT(sizeof(JSTempValueUnion) == sizeof(jsval));
+JS_STATIC_ASSERT(sizeof(JSTempValueUnion) == sizeof(void *));
+
+
+/*
+ * Check that JSTRACE_XML follows JSTRACE_OBJECT, JSTRACE_DOUBLE and
+ * JSTRACE_STRING.
+ */
+JS_STATIC_ASSERT(JSTRACE_OBJECT == 0);
+JS_STATIC_ASSERT(JSTRACE_DOUBLE == 1);
+JS_STATIC_ASSERT(JSTRACE_STRING == 2);
+JS_STATIC_ASSERT(JSTRACE_XML    == 3);
+
+/*
+ * JS_IS_VALID_TRACE_KIND assumes that JSTRACE_STRING is the last non-xml
+ * trace kind when JS_HAS_XML_SUPPORT is false.
+ */
+JS_STATIC_ASSERT(JSTRACE_STRING + 1 == JSTRACE_XML);
+
+/*
+ * The number of used GCX-types must stay within GCX_LIMIT.
+ */
+JS_STATIC_ASSERT(GCX_NTYPES <= GCX_LIMIT);
+
+
+/*
+ * Check that we can reinterpret double as JSGCDoubleCell.
+ */
+JS_STATIC_ASSERT(sizeof(JSGCDoubleCell) == sizeof(double));
+
+/*
+ * Check that we can use memset(p, 0, ...) to implement JS_CLEAR_WEAK_ROOTS.
+ */
+JS_STATIC_ASSERT(JSVAL_NULL == 0);
+
+
+/*
  * A GC arena contains a fixed number of flag bits for each thing in its heap,
  * and supports O(1) lookup of a flag given its thing's address.
  *
  * To implement this, we allocate things of the same size from a GC arena
  * containing GC_ARENA_SIZE bytes aligned on GC_ARENA_SIZE boundary. The
  * following picture shows arena's layout:
  *
  *  +------------------------------+--------------------+---------------+
--- a/js/src/jsgc.h
+++ b/js/src/jsgc.h
@@ -45,18 +45,16 @@
 #include "jsprvtd.h"
 #include "jspubtd.h"
 #include "jsdhash.h"
 #include "jsbit.h"
 #include "jsutil.h"
 
 JS_BEGIN_EXTERN_C
 
-JS_STATIC_ASSERT(JSTRACE_STRING == 2);
-
 #define JSTRACE_XML         3
 
 /*
  * One past the maximum trace kind.
  */
 #define JSTRACE_LIMIT       4
 
 /*
@@ -65,28 +63,23 @@ JS_STATIC_ASSERT(JSTRACE_STRING == 2);
  */
 #define GCX_OBJECT              JSTRACE_OBJECT      /* JSObject */
 #define GCX_DOUBLE              JSTRACE_DOUBLE      /* jsdouble */
 #define GCX_STRING              JSTRACE_STRING      /* JSString */
 #define GCX_XML                 JSTRACE_XML         /* JSXML */
 #define GCX_EXTERNAL_STRING     JSTRACE_LIMIT       /* JSString with external
                                                        chars */
 /*
- * The number of defined GC types.
+ * The number of defined GC types and the maximum limit for the number of
+ * possible GC types.
  */
 #define GCX_NTYPES              (GCX_EXTERNAL_STRING + 8)
-
-/*
- * The maximum limit for the number of GC types.
- */
 #define GCX_LIMIT_LOG2         4           /* type index bits */
 #define GCX_LIMIT              JS_BIT(GCX_LIMIT_LOG2)
 
-JS_STATIC_ASSERT(GCX_NTYPES <= GCX_LIMIT);
-
 /* GC flag definitions, must fit in 8 bits (type index goes in the low bits). */
 #define GCF_TYPEMASK    JS_BITMASK(GCX_LIMIT_LOG2)
 #define GCF_MARK        JS_BIT(GCX_LIMIT_LOG2)
 #define GCF_FINAL       JS_BIT(GCX_LIMIT_LOG2 + 1)
 #define GCF_LOCKSHIFT   (GCX_LIMIT_LOG2 + 2)   /* lock bit shift */
 #define GCF_LOCK        JS_BIT(GCF_LOCKSHIFT)   /* lock request bit in API */
 
 /*
@@ -233,22 +226,16 @@ js_IsAboutToBeFinalized(JSContext *cx, v
 
 #if JS_HAS_XML_SUPPORT
 # define JS_IS_VALID_TRACE_KIND(kind) ((uint32)(kind) < JSTRACE_LIMIT)
 #else
 # define JS_IS_VALID_TRACE_KIND(kind) ((uint32)(kind) <= JSTRACE_STRING)
 #endif
 
 /*
- * JS_IS_VALID_TRACE_KIND assumes that JSTRACE_STRING is the last non-xml
- * trace kind when JS_HAS_XML_SUPPORT is false.
- */
-JS_STATIC_ASSERT(JSTRACE_STRING + 1 == JSTRACE_XML);
-
-/*
  * Trace jsval when JSVAL_IS_OBJECT(v) can be an arbitrary GC thing casted as
  * JSVAL_OBJECT and js_GetGCThingTraceKind has to be used to find the real
  * type behind v.
  */
 extern void
 js_CallValueTracerIfGCThing(JSTracer *trc, jsval v);
 
 extern void
@@ -330,18 +317,16 @@ struct JSGCArenaList {
 
 typedef union JSGCDoubleCell JSGCDoubleCell;
 
 union JSGCDoubleCell {
     double          number;
     JSGCDoubleCell  *link;
 };
 
-JS_STATIC_ASSERT(sizeof(JSGCDoubleCell) == sizeof(double));
-
 typedef struct JSGCDoubleArenaList {
     JSGCArenaInfo   *first;             /* first allocated GC arena */
     jsbitmap        *nextDoubleFlags;   /* bitmask with flags to check for free
                                            things */
 } JSGCDoubleArenaList;
 
 typedef struct JSGCFreeListSet JSGCFreeListSet;
 
@@ -361,17 +346,16 @@ struct JSWeakRoots {
 
     /* Atom root for the last-looked-up atom on this context. */
     jsval           lastAtom;
 
     /* Root for the result of the most recent js_InternalInvoke call. */
     jsval           lastInternalResult;
 };
 
-JS_STATIC_ASSERT(JSVAL_NULL == 0);
 #define JS_CLEAR_WEAK_ROOTS(wr) (memset((wr), 0, sizeof(JSWeakRoots)))
 
 /*
  * Increase runtime->gcBytes by sz bytes to account for an allocation outside
  * the GC that will be freed only after the GC is run. The function may run
  * the last ditch GC to ensure that gcBytes does not exceed gcMaxBytes. It will
  * fail if the latter is not possible.
  *
--- a/js/src/jsinterp.cpp
+++ b/js/src/jsinterp.cpp
@@ -1783,21 +1783,18 @@ js_InvokeConstructor(JSContext *cx, uint
             return JS_FALSE;
         }
         rval = vp[1];
         proto = JSVAL_IS_OBJECT(rval) ? JSVAL_TO_OBJECT(rval) : NULL;
         parent = OBJ_GET_PARENT(cx, obj2);
 
         if (OBJ_GET_CLASS(cx, obj2) == &js_FunctionClass) {
             fun2 = GET_FUNCTION_PRIVATE(cx, obj2);
-            if (!FUN_INTERPRETED(fun2) &&
-                !(fun2->flags & JSFUN_TRACEABLE) &&
-                fun2->u.n.u.clasp) {
-                clasp = fun2->u.n.u.clasp;
-            }
+            if (!FUN_INTERPRETED(fun2) && fun2->u.n.clasp)
+                clasp = fun2->u.n.clasp;
         }
     }
     obj = js_NewObject(cx, clasp, proto, parent, 0);
     if (!obj)
         return JS_FALSE;
 
     /* Now we have an object with a constructor method; call it. */
     vp[1] = OBJECT_TO_JSVAL(obj);
@@ -4261,17 +4258,17 @@ js_Interpret(JSContext *cx)
           do_getprop_with_lval:
             VALUE_TO_OBJECT(cx, -1, lval, obj);
 
           do_getprop_with_obj:
             do {
                 JSObject *aobj;
                 JSPropCacheEntry *entry;
 
-                aobj = OBJ_IS_DENSE_ARRAY(cx, obj) ? OBJ_GET_PROTO(cx, obj) : obj;
+                aobj = js_GetProtoIfDenseArray(cx, obj);
                 if (JS_LIKELY(aobj->map->ops->getProperty == js_GetProperty)) {
                     PROPERTY_CACHE_TEST(cx, regs.pc, aobj, obj2, entry, atom);
                     if (!atom) {
                         ASSERT_VALID_PROPERTY_CACHE_HIT(i, aobj, obj2, entry);
                         if (PCVAL_IS_OBJECT(entry->vword)) {
                             rval = PCVAL_OBJECT_TO_JSVAL(entry->vword);
                         } else if (PCVAL_IS_SLOT(entry->vword)) {
                             slot = PCVAL_TO_SLOT(entry->vword);
@@ -4289,17 +4286,17 @@ js_Interpret(JSContext *cx)
                     entry = NULL;
                     if (i < 0)
                         atom = rt->atomState.lengthAtom;
                     else
                         LOAD_ATOM(i);
                 }
                 id = ATOM_TO_JSID(atom);
                 if (entry
-                    ? !js_GetPropertyHelper(cx, aobj, id, &rval, &entry)
+                    ? !js_GetPropertyHelper(cx, obj, id, &rval, &entry)
                     : !OBJ_GET_PROPERTY(cx, obj, id, &rval)) {
                     goto error;
                 }
             } while (0);
 
             STORE_OPND(-1, rval);
             JS_ASSERT(JSOP_GETPROP_LENGTH + i == js_CodeSpec[op].length);
             len = JSOP_GETPROP_LENGTH + i;
@@ -4352,17 +4349,17 @@ js_Interpret(JSContext *cx)
                     js_ReportIsNullOrUndefined(cx, -1, lval, NULL);
                     goto error;
                 }
 
                 if (!js_GetClassPrototype(cx, NULL, INT_TO_JSID(i), &obj))
                     goto error;
             }
 
-            aobj = OBJ_IS_DENSE_ARRAY(cx, obj) ? OBJ_GET_PROTO(cx, obj) : obj;
+            aobj = js_GetProtoIfDenseArray(cx, obj);
             if (JS_LIKELY(aobj->map->ops->getProperty == js_GetProperty)) {
                 PROPERTY_CACHE_TEST(cx, regs.pc, aobj, obj2, entry, atom);
                 if (!atom) {
                     ASSERT_VALID_PROPERTY_CACHE_HIT(0, aobj, obj2, entry);
                     if (PCVAL_IS_OBJECT(entry->vword)) {
                         rval = PCVAL_OBJECT_TO_JSVAL(entry->vword);
                     } else if (PCVAL_IS_SLOT(entry->vword)) {
                         slot = PCVAL_TO_SLOT(entry->vword);
@@ -4397,17 +4394,17 @@ js_Interpret(JSContext *cx)
 
                     ops = (JSXMLObjectOps *) obj->map->ops;
                     obj = ops->getMethod(cx, obj, id, &rval);
                     if (!obj)
                         goto error;
                 } else
 #endif
                 if (entry
-                    ? !js_GetPropertyHelper(cx, aobj, id, &rval, &entry)
+                    ? !js_GetPropertyHelper(cx, obj, id, &rval, &entry)
                     : !OBJ_GET_PROPERTY(cx, obj, id, &rval)) {
                     goto error;
                 }
                 STORE_OPND(-1, OBJECT_TO_JSVAL(obj));
                 STORE_OPND(-2, rval);
             } else {
                 JS_ASSERT(obj->map->ops->getProperty == js_GetProperty);
                 if (!js_GetPropertyHelper(cx, obj, id, &rval, &entry))
@@ -4587,16 +4584,25 @@ js_Interpret(JSContext *cx)
                                     scope->lastProp = sprop;
                                 }
 
                                 GC_WRITE_BARRIER(cx, scope,
                                                  LOCKED_OBJ_GET_SLOT(obj, slot),
                                                  rval);
                                 LOCKED_OBJ_SET_SLOT(obj, slot, rval);
                                 JS_UNLOCK_SCOPE(cx, scope);
+
+                                /*
+                                 * Purge the property cache of the id we may
+                                 * have just shadowed in obj's scope and proto
+                                 * chains. We do this after unlocking obj's
+                                 * scope to avoid lock nesting.
+                                 */
+                                js_PurgeScopeChain(cx, obj, sprop->id);
+
                                 TRACE_2(SetPropHit, entry, sprop);
                                 break;
                             }
 
                             PCMETER(cache->setpcmisses++);
                             atom = NULL;
                         }
 
@@ -4720,17 +4726,17 @@ js_Interpret(JSContext *cx)
             do {
                 if (OBJ_IS_DENSE_ARRAY(cx, obj) && JSID_IS_INT(id)) {
                     jsuint length;
 
                     length = js_DenseArrayCapacity(obj);
                     i = JSID_TO_INT(id);
                     if ((jsuint)i < length) {
                         if (obj->dslots[i] == JSVAL_HOLE) {
-                            if (rt->anyArrayProtoHasElement)
+                            if (js_PrototypeHasIndexedProperties(cx, obj))
                                 break;
                             if (i >= obj->fslots[JSSLOT_ARRAY_LENGTH])
                                 obj->fslots[JSSLOT_ARRAY_LENGTH] = i + 1;
                             obj->fslots[JSSLOT_ARRAY_COUNT]++;
                         }
                         obj->dslots[i] = rval;
                         goto end_setelem;
                     }
@@ -6173,18 +6179,16 @@ js_Interpret(JSContext *cx)
                     /*
                      * Detect a repeated property name and force a miss to
                      * share the strict warning code and cope with complexity
                      * managed by js_AddScopeProperty.
                      */
                     if (sprop->parent != scope->lastProp)
                         goto do_initprop_miss;
 
-                    TRACE_2(SetPropHit, entry, sprop);
-
                     /*
                      * Otherwise this entry must be for a direct property of
                      * obj, not a proto-property, and there cannot have been
                      * any deletions of prior properties.
                      */
                     JS_ASSERT(PCVCAP_MAKE(sprop->shape, 0, 0) == entry->vcap);
                     JS_ASSERT(!SCOPE_HAD_MIDDLE_DELETE(scope));
                     JS_ASSERT(!scope->table ||
@@ -6222,16 +6226,18 @@ js_Interpret(JSContext *cx)
                         scope->lastProp = sprop;
                     }
 
                     GC_WRITE_BARRIER(cx, scope,
                                      LOCKED_OBJ_GET_SLOT(obj, slot),
                                      rval);
                     LOCKED_OBJ_SET_SLOT(obj, slot, rval);
                     JS_UNLOCK_SCOPE(cx, scope);
+
+                    TRACE_2(SetPropHit, entry, sprop);
                     break;
                 }
 
               do_initprop_miss:
                 PCMETER(cache->inipcmisses++);
                 JS_UNLOCK_SCOPE(cx, scope);
 
                 /* Get the immediate property name into id. */
--- a/js/src/jslock.cpp
+++ b/js/src/jslock.cpp
@@ -51,16 +51,21 @@
 #include "jscntxt.h"
 #include "jsdtoa.h"
 #include "jsgc.h"
 #include "jsfun.h"      /* for VALUE_IS_FUNCTION used by *_WRITE_BARRIER */
 #include "jslock.h"
 #include "jsscope.h"
 #include "jsstr.h"
 
+/*
+ * Check that we can cast the data after JSObjectMap as JSTitle.
+ */
+JS_STATIC_ASSERT(offsetof(JSScope, title) == sizeof(JSObjectMap));
+
 #define ReadWord(W) (W)
 
 /* Implement NativeCompareAndSwap. */
 
 #if defined(_WIN32) && defined(_M_IX86)
 #pragma warning( disable : 4035 )
 JS_BEGIN_EXTERN_C
 extern long __cdecl
--- a/js/src/jslog2.cpp
+++ b/js/src/jslog2.cpp
@@ -35,31 +35,48 @@
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #include "jsbit.h"
 #include "jsutil.h"
 
 /*
-** Compute the log of the least power of 2 greater than or equal to n
-*/
-JS_PUBLIC_API(JSIntn) JS_CeilingLog2(JSUint32 n)
+ * Check that we can use js_bitscan_clz32 to implement JS_FLOOR_LOG2 and
+ * JS_FLOOR_LOG2W and js_bitscan_clz64 to implement JS_FLOOR_LOG2W on 64-bit
+ * systems.
+ */
+#ifdef JS_HAS_BUILTIN_BITSCAN32
+JS_STATIC_ASSERT(sizeof(unsigned int) == sizeof(JSUint32));
+JS_STATIC_ASSERT_IF(JS_BYTES_PER_WORD == 4,
+                    sizeof(unsigned int) == sizeof(JSUword));
+#endif
+#ifdef JS_HAS_BUILTIN_BITSCAN64
+JS_STATIC_ASSERT_IF(JS_BYTES_PER_WORD == 8,
+                    sizeof(unsigned long long) == sizeof(JSUword));
+#endif
+
+/*
+ * Compute the log of the least power of 2 greater than or equal to n
+ */
+JS_PUBLIC_API(JSIntn)
+JS_CeilingLog2(JSUint32 n)
 {
     JSIntn log2;
 
     JS_CEILING_LOG2(log2, n);
     return log2;
 }
 
 /*
-** Compute the log of the greatest power of 2 less than or equal to n.
-** This really just finds the highest set bit in the word.
-*/
-JS_PUBLIC_API(JSIntn) JS_FloorLog2(JSUint32 n)
+ * Compute the log of the greatest power of 2 less than or equal to n.
+ * This really just finds the highest set bit in the word.
+ */
+JS_PUBLIC_API(JSIntn)
+JS_FloorLog2(JSUint32 n)
 {
     JSIntn log2;
 
     JS_FLOOR_LOG2(log2, n);
     return log2;
 }
 
 /*
--- a/js/src/jsobj.cpp
+++ b/js/src/jsobj.cpp
@@ -316,33 +316,16 @@ js_SetProtoOrParent(JSContext *cx, JSObj
 #else
                                  (slot == JSSLOT_PROTO) ? js_proto_str
                                                         : js_parent_str
 #endif
                                  );
         }
         return JS_FALSE;
     }
-
-    /*
-     * Maintain the "any Array prototype has indexed properties hazard" flag by
-     * conservatively setting it. We simply don't know what pobj has in the way
-     * of indexed properties, either directly or along its prototype chain, and
-     * we won't expend effort here to find out. We do know that if obj is not
-     * an array or a prototype (delegate), then we're ok. And, of course, pobj
-     * must be non-null.
-     *
-     * This pessimistic approach could be improved, but setting __proto__ is
-     * quite rare and arguably deserving of deoptimization.
-     */
-    if (slot == JSSLOT_PROTO &&
-        pobj &&
-        (OBJ_IS_ARRAY(cx, obj) || OBJ_IS_DELEGATE(cx, obj))) {
-        rt->anyArrayProtoHasElement = JS_TRUE;
-    }
     return JS_TRUE;
 }
 
 static JSHashNumber
 js_hash_object(const void *key)
 {
     return (JSHashNumber)JS_PTR_TO_UINT32(key) >> JSVAL_TAGBITS;
 }
@@ -2016,16 +1999,101 @@ js_Object(JSContext *cx, JSObject *obj, 
         obj = js_NewObject(cx, &js_ObjectClass, NULL, NULL, 0);
         if (!obj)
             return JS_FALSE;
     }
     *rval = OBJECT_TO_JSVAL(obj);
     return JS_TRUE;
 }
 
+#ifdef JS_TRACER
+
+static inline JSObject*
+NewNativeObject(JSContext* cx, JSObject* proto, JSObject *parent)
+{
+    JS_ASSERT(JS_ON_TRACE(cx));
+    JSObject* obj = (JSObject*) js_NewGCThing(cx, GCX_OBJECT, sizeof(JSObject));
+    if (!obj)
+        return NULL;
+
+    obj->classword = jsuword(&js_ObjectClass);
+    obj->fslots[JSSLOT_PROTO] = OBJECT_TO_JSVAL(proto);
+    obj->fslots[JSSLOT_PARENT] = OBJECT_TO_JSVAL(parent);
+    for (unsigned i = JSSLOT_PRIVATE; i < JS_INITIAL_NSLOTS; ++i)
+        obj->fslots[i] = JSVAL_VOID;
+
+    JS_ASSERT(!OBJ_GET_CLASS(cx, proto)->getObjectOps);
+    JS_ASSERT(proto->map->ops == &js_ObjectOps);
+    obj->map = js_HoldObjectMap(cx, proto->map);
+    obj->dslots = NULL;
+    return obj;
+}
+
+JSObject* FASTCALL
+js_Object_tn(JSContext* cx, JSObject* proto)
+{
+    return NewNativeObject(cx, proto, JSVAL_TO_OBJECT(proto->fslots[JSSLOT_PARENT]));
+}
+
+JS_DEFINE_TRCINFO_1(js_Object,
+    (2, (extern, CONSTRUCTOR_RETRY, js_Object_tn, CONTEXT, CALLEE_PROTOTYPE, 0, 0)))
+
+JSObject* FASTCALL
+js_NewInstance(JSContext* cx, JSObject *ctor)
+{
+    JS_ASSERT(HAS_FUNCTION_CLASS(ctor));
+#ifdef DEBUG
+    JSFunction* fun = GET_FUNCTION_PRIVATE(cx, ctor);
+    JS_ASSERT(FUN_INTERPRETED(fun));
+#endif
+
+    JSAtom* atom = cx->runtime->atomState.classPrototypeAtom;
+
+    JS_LOCK_OBJ(cx, ctor);
+    JSScope *scope = OBJ_SCOPE(ctor);
+    if (scope->object != ctor) {
+        scope = js_GetMutableScope(cx, ctor);
+        if (!scope)
+            return NULL;
+    }
+
+    JSScopeProperty* sprop = SCOPE_GET_PROPERTY(scope, ATOM_TO_JSID(atom));
+    jsval pval = sprop ? LOCKED_OBJ_GET_SLOT(ctor, sprop->slot) : JSVAL_HOLE;
+    JS_UNLOCK_SCOPE(cx, scope);
+
+    JSObject* proto;
+    if (!JSVAL_IS_PRIMITIVE(pval)) {
+        /* An object in ctor.prototype, let's use it as the new instance's proto. */
+        proto = JSVAL_TO_OBJECT(pval);
+    } else if (pval == JSVAL_HOLE) {
+        /* No ctor.prototype yet, inline and optimize fun_resolve's prototype code. */
+        proto = js_NewObject(cx, &js_ObjectClass, NULL, OBJ_GET_PARENT(cx, ctor), 0);
+        if (!proto)
+            return NULL;
+        if (!js_SetClassPrototype(cx, ctor, proto, JSPROP_ENUMERATE | JSPROP_PERMANENT))
+            return NULL;
+    } else {
+        /* Primitive value in .prototype means we use Object.prototype for proto. */
+        if (!js_GetClassPrototype(cx, JSVAL_TO_OBJECT(ctor->fslots[JSSLOT_PARENT]),
+                                  INT_TO_JSID(JSProto_Object), &proto)) {
+            return NULL;
+        }
+    }
+
+    return NewNativeObject(cx, proto, JSVAL_TO_OBJECT(ctor->fslots[JSSLOT_PARENT]));
+}
+
+JS_DEFINE_CALLINFO_2(extern, CONSTRUCTOR_RETRY, js_NewInstance, CONTEXT, CALLEE_PROTOTYPE, 0, 0)
+
+#else  /* !JS_TRACER */
+
+# define js_Object_trcinfo NULL
+
+#endif /* !JS_TRACER */
+
 /*
  * Given pc pointing after a property accessing bytecode, return true if the
  * access is "object-detecting" in the sense used by web scripts, e.g., when
  * checking whether document.all is defined.
  */
 static JS_REQUIRES_STACK JSBool
 Detecting(JSContext *cx, jsbytecode *pc)
 {
@@ -2588,19 +2656,167 @@ js_InitEval(JSContext *cx, JSObject *obj
     }
 
     return obj;
 }
 
 JSObject *
 js_InitObjectClass(JSContext *cx, JSObject *obj)
 {
-    return JS_InitClass(cx, obj, NULL, &js_ObjectClass, js_Object, 1,
-                        object_props, object_methods, NULL,
-                        object_static_methods);
+    return js_InitClass(cx, obj, NULL, &js_ObjectClass, js_Object, 1,
+                        object_props, object_methods, NULL, object_static_methods,
+                        js_Object_trcinfo);
+}
+
+JSObject *
+js_InitClass(JSContext *cx, JSObject *obj, JSObject *parent_proto,
+             JSClass *clasp, JSNative constructor, uintN nargs,
+             JSPropertySpec *ps, JSFunctionSpec *fs,
+             JSPropertySpec *static_ps, JSFunctionSpec *static_fs,
+             JSTraceableNative *trcinfo)
+{
+    JSAtom *atom;
+    JSProtoKey key;
+    JSObject *proto, *ctor;
+    JSTempValueRooter tvr;
+    jsval cval, rval;
+    JSBool named;
+    JSFunction *fun;
+
+    atom = js_Atomize(cx, clasp->name, strlen(clasp->name), 0);
+    if (!atom)
+        return NULL;
+
+    /*
+     * When initializing a standard class, if no parent_proto (grand-proto of
+     * instances of the class, parent-proto of the class's prototype object)
+     * is given, we must use Object.prototype if it is available.  Otherwise,
+     * we could look up the wrong binding for a class name in obj.  Example:
+     *
+     *   String = Array;
+     *   print("hi there".join);
+     *
+     * should print undefined, not Array.prototype.join.  This is required by
+     * ECMA-262, alas.  It might have been better to make String readonly and
+     * permanent in the global object, instead -- but that's too big a change
+     * to swallow at this point.
+     */
+    key = JSCLASS_CACHED_PROTO_KEY(clasp);
+    if (key != JSProto_Null &&
+        !parent_proto &&
+        !js_GetClassPrototype(cx, obj, INT_TO_JSID(JSProto_Object),
+                              &parent_proto)) {
+        return NULL;
+    }
+
+    /* Create a prototype object for this class. */
+    proto = js_NewObject(cx, clasp, parent_proto, obj, 0);
+    if (!proto)
+        return NULL;
+
+    /* After this point, control must exit via label bad or out. */
+    JS_PUSH_TEMP_ROOT_OBJECT(cx, proto, &tvr);
+
+    if (!constructor) {
+        JS_ASSERT(!trcinfo);
+
+        /*
+         * Lacking a constructor, name the prototype (e.g., Math) unless this
+         * class (a) is anonymous, i.e. for internal use only; (b) the class
+         * of obj (the global object) is has a reserved slot indexed by key;
+         * and (c) key is not the null key.
+         */
+        if ((clasp->flags & JSCLASS_IS_ANONYMOUS) &&
+            (OBJ_GET_CLASS(cx, obj)->flags & JSCLASS_IS_GLOBAL) &&
+            key != JSProto_Null) {
+            named = JS_FALSE;
+        } else {
+            named = OBJ_DEFINE_PROPERTY(cx, obj, ATOM_TO_JSID(atom),
+                                        OBJECT_TO_JSVAL(proto),
+                                        JS_PropertyStub, JS_PropertyStub,
+                                        (clasp->flags & JSCLASS_IS_ANONYMOUS)
+                                        ? JSPROP_READONLY | JSPROP_PERMANENT
+                                        : 0,
+                                        NULL);
+            if (!named)
+                goto bad;
+        }
+
+        ctor = proto;
+    } else {
+        /* Define the constructor function in obj's scope. */
+        fun = js_DefineFunction(cx, obj, atom, constructor, nargs,
+                                JSFUN_STUB_GSOPS);
+        named = (fun != NULL);
+        if (!fun)
+            goto bad;
+
+        /*
+         * Remember the class this function is a constructor for so that
+         * we know to create an object of this class when we call the
+         * constructor.
+         */
+        FUN_CLASP(fun) = clasp;
+
+        /*
+         * If we have a traceable native constructor, update the function to
+         * point at the given trcinfo and flag it.
+         */
+        if (trcinfo) {
+            fun->u.n.trcinfo = trcinfo;
+            fun->flags |= JSFUN_TRACEABLE;
+        }
+
+        /*
+         * Optionally construct the prototype object, before the class has
+         * been fully initialized.  Allow the ctor to replace proto with a
+         * different object, as is done for operator new -- and as at least
+         * XML support requires.
+         */
+        ctor = FUN_OBJECT(fun);
+        if (clasp->flags & JSCLASS_CONSTRUCT_PROTOTYPE) {
+            cval = OBJECT_TO_JSVAL(ctor);
+            if (!js_InternalConstruct(cx, proto, cval, 0, NULL, &rval))
+                goto bad;
+            if (!JSVAL_IS_PRIMITIVE(rval) && JSVAL_TO_OBJECT(rval) != proto)
+                proto = JSVAL_TO_OBJECT(rval);
+        }
+
+        /* Connect constructor and prototype by named properties. */
+        if (!js_SetClassPrototype(cx, ctor, proto,
+                                  JSPROP_READONLY | JSPROP_PERMANENT)) {
+            goto bad;
+        }
+
+        /* Bootstrap Function.prototype (see also JS_InitStandardClasses). */
+        if (OBJ_GET_CLASS(cx, ctor) == clasp)
+            OBJ_SET_PROTO(cx, ctor, proto);
+    }
+
+    /* Add properties and methods to the prototype and the constructor. */
+    if ((ps && !JS_DefineProperties(cx, proto, ps)) ||
+        (fs && !JS_DefineFunctions(cx, proto, fs)) ||
+        (static_ps && !JS_DefineProperties(cx, ctor, static_ps)) ||
+        (static_fs && !JS_DefineFunctions(cx, ctor, static_fs))) {
+        goto bad;
+    }
+
+    /* If this is a standard class, cache its prototype. */
+    if (key != JSProto_Null && !js_SetClassObject(cx, obj, key, ctor))
+        goto bad;
+
+out:
+    JS_POP_TEMP_ROOT(cx, &tvr);
+    return proto;
+
+bad:
+    if (named)
+        (void) OBJ_DELETE_PROPERTY(cx, obj, ATOM_TO_JSID(atom), &rval);
+    proto = NULL;
+    goto out;
 }
 
 void
 js_InitObjectMap(JSObjectMap *map, jsrefcount nrefs, JSObjectOps *ops,
                  JSClass *clasp)
 {
     map->nrefs = nrefs;
     map->ops = ops;
@@ -2872,17 +3088,17 @@ js_NewObjectWithGivenProto(JSContext *cx
     JS_ASSERT(!STOBJ_IS_DELEGATE(obj));
     JS_ASSERT(!STOBJ_IS_SYSTEM(obj));
 
     /* Set the proto and parent properties. */
     STOBJ_SET_PROTO(obj, proto);
     STOBJ_SET_PARENT(obj, parent);
 
     /* Initialize the remaining fixed slots. */
-    for (i = JSSLOT_PRIVATE; i != JS_INITIAL_NSLOTS; ++i)
+    for (i = JSSLOT_PRIVATE; i < JS_INITIAL_NSLOTS; ++i)
         obj->fslots[i] = JSVAL_VOID;
 
 #ifdef DEBUG
     memset((uint8 *) obj + sizeof(JSObject), JS_FREE_PATTERN,
            objectSize - sizeof(JSObject));
 #endif
 
     /*
@@ -2966,16 +3182,38 @@ earlybad:
     if (JAVASCRIPT_OBJECT_CREATE_ENABLED())
         jsdtrace_object_create(cx, clasp, NULL);
     if (JAVASCRIPT_OBJECT_CREATE_DONE_ENABLED())
         jsdtrace_object_create_done(cx->fp, clasp);
 #endif
     return NULL;
 }
 
+JSObject*
+js_NewNativeObject(JSContext *cx, JSClass *clasp, JSObject *proto, uint32 slot)
+{
+    JSObject* obj = (JSObject*) js_NewGCThing(cx, GCX_OBJECT, sizeof(JSObject));
+    if (!obj)
+        return NULL;
+
+    obj->classword = jsuword(clasp);
+    obj->fslots[JSSLOT_PROTO] = OBJECT_TO_JSVAL(proto);
+    obj->fslots[JSSLOT_PARENT] = proto->fslots[JSSLOT_PARENT];
+
+    JS_ASSERT(slot > JSSLOT_PARENT);
+    while (slot < JS_INITIAL_NSLOTS)
+        obj->fslots[slot++] = JSVAL_VOID;
+
+    JS_ASSERT(!clasp->getObjectOps);
+    JS_ASSERT(proto->map->ops == &js_ObjectOps);
+    obj->map = js_HoldObjectMap(cx, proto->map);
+    obj->dslots = NULL;
+    return obj;
+}
+
 JS_BEGIN_EXTERN_C
 
 static JSObject *
 js_InitNullClass(JSContext *cx, JSObject *obj)
 {
     JS_ASSERT(0);
     return NULL;
 }
@@ -3338,21 +3576,20 @@ PurgeProtoChain(JSContext *cx, JSObject 
             return JS_TRUE;
         }
         obj = LOCKED_OBJ_GET_PROTO(scope->object);
         JS_UNLOCK_SCOPE(cx, scope);
     }
     return JS_FALSE;
 }
 
-static void
-PurgeScopeChain(JSContext *cx, JSObject *obj, jsid id)
+void
+js_PurgeScopeChainHelper(JSContext *cx, JSObject *obj, jsid id)
 {
-    if (!OBJ_IS_DELEGATE(cx, obj))
-        return;
+    JS_ASSERT(OBJ_IS_DELEGATE(cx, obj));
 
     /*
      * All scope chains end in a global object, so this will change the global
      * shape. jstracer.cpp assumes that the global shape never changes on
      * trace, so we must deep-bail here.
      */
     js_LeaveTrace(cx);
 
@@ -3371,17 +3608,17 @@ js_AddNativeProperty(JSContext *cx, JSOb
     JSScope *scope;
     JSScopeProperty *sprop;
 
     /*
      * Purge the property cache of now-shadowed id in obj's scope chain. Do
      * this optimistically (assuming no failure below) before locking obj, so
      * we can lock the shadowed scope.
      */
-    PurgeScopeChain(cx, obj, id);
+    js_PurgeScopeChain(cx, obj, id);
 
     JS_LOCK_OBJ(cx, obj);
     scope = js_GetMutableScope(cx, obj);
     if (!scope) {
         sprop = NULL;
     } else {
         /* Convert string indices to integers if appropriate. */
         CHECK_FOR_STRING_INDEX(id);
@@ -3436,18 +3673,16 @@ js_DefineProperty(JSContext *cx, JSObjec
             if (!(clasp)->addProperty(cx, obj, SPROP_USERID(sprop), vp)) {    \
                 cleanup;                                                      \
             }                                                                 \
             if (*(vp) != nominal_) {                                          \
                 if (SPROP_HAS_VALID_SLOT(sprop, scope))                       \
                     LOCKED_OBJ_WRITE_BARRIER(cx, obj, (sprop)->slot, *(vp));  \
             }                                                                 \
         }                                                                     \
-        if (STOBJ_IS_DELEGATE(obj) && JSID_IS_INT(sprop->id))                 \
-            cx->runtime->anyArrayProtoHasElement = JS_TRUE;                   \
     JS_END_MACRO
 
 JSBool
 js_DefineNativeProperty(JSContext *cx, JSObject *obj, jsid id, jsval value,
                         JSPropertyOp getter, JSPropertyOp setter, uintN attrs,
                         uintN flags, intN shortid, JSProperty **propp,
                         JSPropCacheEntry** entryp /* = NULL */)
 {
@@ -3505,17 +3740,17 @@ js_DefineNativeProperty(JSContext *cx, J
         }
     }
 #endif /* JS_HAS_GETTER_SETTER */
 
     /*
      * Purge the property cache of now-shadowed id in obj's scope chain.
      * Do this early, before locking obj to avoid nesting locks.
      */
-    PurgeScopeChain(cx, obj, id);
+    js_PurgeScopeChain(cx, obj, id);
 
     /* Lock if object locking is required by this implementation. */
     JS_LOCK_OBJ(cx, obj);
 
     /* Use the object's class getter and setter by default. */
     clasp = LOCKED_OBJ_GET_CLASS(obj);
     if (!getter)
         getter = clasp->getProperty;
@@ -3980,28 +4215,29 @@ js_GetCurrentBytecodePC(JSContext* cx)
      */
     return (*pc == JSOP_CALL && imacpc) ? imacpc : pc;
 }
 
 JSBool
 js_GetPropertyHelper(JSContext *cx, JSObject *obj, jsid id, jsval *vp,
                      JSPropCacheEntry **entryp)
 {
+    JSObject *aobj, *obj2;
     uint32 shape;
     int protoIndex;
-    JSObject *obj2;
     JSProperty *prop;
     JSScopeProperty *sprop;
 
     JS_ASSERT_IF(entryp, !JS_ON_TRACE(cx));
     /* Convert string indices to integers if appropriate. */
     CHECK_FOR_STRING_INDEX(id);
 
-    shape = OBJ_SHAPE(obj);
-    protoIndex = js_LookupPropertyWithFlags(cx, obj, id, cx->resolveFlags,
+    aobj = js_GetProtoIfDenseArray(cx, obj);
+    shape = OBJ_SHAPE(aobj);
+    protoIndex = js_LookupPropertyWithFlags(cx, aobj, id, cx->resolveFlags,
                                             &obj2, &prop);
     if (protoIndex < 0)
         return JS_FALSE;
     if (!prop) {
         *vp = JSVAL_VOID;
 
         if (!OBJ_GET_CLASS(cx, obj)->getProperty(cx, obj, ID_TO_VALUE(id), vp))
             return JS_FALSE;
@@ -4069,17 +4305,17 @@ js_GetPropertyHelper(JSContext *cx, JSOb
     }
 
     sprop = (JSScopeProperty *) prop;
     if (!js_NativeGet(cx, obj, obj2, sprop, vp))
         return JS_FALSE;
 
     if (entryp) {
         JS_ASSERT_NOT_ON_TRACE(cx);
-        js_FillPropertyCache(cx, obj, shape, 0, protoIndex, obj2, sprop, entryp);
+        js_FillPropertyCache(cx, aobj, shape, 0, protoIndex, obj2, sprop, entryp);
     }
     JS_UNLOCK_OBJ(cx, obj2);
     return JS_TRUE;
 }
 
 JSBool
 js_GetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
 {
@@ -4236,17 +4472,17 @@ js_SetPropertyHelper(JSContext *cx, JSOb
 #endif
     }
 
     if (!sprop) {
         /*
          * Purge the property cache of now-shadowed id in obj's scope chain.
          * Do this early, before locking obj to avoid nesting locks.
          */
-        PurgeScopeChain(cx, obj, id);
+        js_PurgeScopeChain(cx, obj, id);
 
         /* Find or make a property descriptor with the right heritage. */
         JS_LOCK_OBJ(cx, obj);
         scope = js_GetMutableScope(cx, obj);
         if (!scope) {
             JS_UNLOCK_OBJ(cx, obj);
             return JS_FALSE;
         }
@@ -5587,16 +5823,17 @@ js_SetRequiredSlot(JSContext *cx, JSObje
         }
     }
 
     /* Whether or not we grew nslots, we may need to advance freeslot. */
     if (scope->object == obj && slot >= scope->map.freeslot)
         scope->map.freeslot = slot + 1;
 
     STOBJ_SET_SLOT(obj, slot, v);
+    GC_POKE(cx, JS_NULL);
     JS_UNLOCK_SCOPE(cx, scope);
     return JS_TRUE;
 }
 
 JSObject *
 js_GetWrappedObject(JSContext *cx, JSObject *obj)
 {
     JSClass *clasp;
--- a/js/src/jsobj.h
+++ b/js/src/jsobj.h
@@ -433,16 +433,23 @@ extern JSObject *
 js_InitBlockClass(JSContext *cx, JSObject* obj);
 
 extern JSObject *
 js_InitEval(JSContext *cx, JSObject *obj);
 
 extern JSObject *
 js_InitObjectClass(JSContext *cx, JSObject *obj);
 
+extern JSObject *
+js_InitClass(JSContext *cx, JSObject *obj, JSObject *parent_proto,
+             JSClass *clasp, JSNative constructor, uintN nargs,
+             JSPropertySpec *ps, JSFunctionSpec *fs,
+             JSPropertySpec *static_ps, JSFunctionSpec *static_fs,
+             JSTraceableNative *trcinfo);
+
 /*
  * Select Object.prototype method names shared between jsapi.cpp and jsobj.cpp.
  */
 extern const char js_watch_str[];
 extern const char js_unwatch_str[];
 extern const char js_hasOwnProperty_str[];
 extern const char js_isPrototypeOf_str[];
 extern const char js_propertyIsEnumerable_str[];
@@ -481,16 +488,29 @@ js_NewObject(JSContext *cx, JSClass *cla
  * objectSize is either the explicit size for the allocated object or 0
  * indicating to use the default size based on object's class.
  */
 extern JSObject *
 js_NewObjectWithGivenProto(JSContext *cx, JSClass *clasp, JSObject *proto,
                            JSObject *parent, uintN objectSize);
 
 /*
+ * Allocate a new native object and initialize all fslots with JSVAL_VOID
+ * starting with the specified slot. The parent slot is set to the value of
+ * proto's parent slot.
+ *
+ * Note that this is the correct global object for native class instances, but
+ * not for user-defined functions called as constructors.  Functions used as
+ * constructors must create instances parented by the parent of the function
+ * object, not by the parent of its .prototype object value.
+ */
+extern JSObject*
+js_NewNativeObject(JSContext *cx, JSClass *clasp, JSObject *proto, uint32 slot);
+
+/*
  * Fast access to immutable standard objects (constructors and prototypes).
  */
 extern JSBool
 js_GetClassObject(JSContext *cx, JSObject *obj, JSProtoKey key,
                   JSObject **objp);
 
 extern JSBool
 js_SetClassObject(JSContext *cx, JSObject *obj, JSProtoKey key, JSObject *cobj);
@@ -536,16 +556,32 @@ js_FreeSlot(JSContext *cx, JSObject *obj
         }                                                                     \
     JS_END_MACRO
 
 extern jsid
 js_CheckForStringIndex(jsid id, const jschar *cp, const jschar *end,
                        JSBool negative);
 
 /*
+ * js_PurgeScopeChain does nothing if obj is not itself a prototype or parent
+ * scope, else it reshapes the scope and prototype chains it links. It calls
+ * js_PurgeScopeChainHelper, which asserts that obj is flagged as a delegate
+ * (i.e., obj has ever been on a prototype or parent chain).
+ */
+extern void
+js_PurgeScopeChainHelper(JSContext *cx, JSObject *obj, jsid id);
+
+static JS_INLINE void
+js_PurgeScopeChain(JSContext *cx, JSObject *obj, jsid id)
+{
+    if (OBJ_IS_DELEGATE(cx, obj))
+        js_PurgeScopeChainHelper(cx, obj, id);
+}
+
+/*
  * Find or create a property named by id in obj's scope, with the given getter
  * and setter, slot, attributes, and other members.
  */
 extern JSScopeProperty *
 js_AddNativeProperty(JSContext *cx, JSObject *obj, jsid id,
                      JSPropertyOp getter, JSPropertyOp setter, uint32 slot,
                      uintN attrs, uintN flags, intN shortid);
 
--- a/js/src/jsopcode.cpp
+++ b/js/src/jsopcode.cpp
@@ -70,16 +70,21 @@
 #include "jsscope.h"
 #include "jsscript.h"
 #include "jsstr.h"
 #include "jsstaticcheck.h"
 #include "jstracer.h"
 
 #include "jsautooplen.h"
 
+/*
+ * Index limit must stay within 32 bits.
+ */
+JS_STATIC_ASSERT(sizeof(uint32) * JS_BITS_PER_BYTE >= INDEX_LIMIT_LOG2 + 1);
+
 /* Verify JSOP_XXX_LENGTH constant definitions. */
 #define OPDEF(op,val,name,token,length,nuses,ndefs,prec,format)               \
     JS_STATIC_ASSERT(op##_LENGTH == length);
 #include "jsopcode.tbl"
 #undef OPDEF
 
 static const char js_incop_strs[][3] = {"++", "--"};
 static const char js_for_each_str[]  = "for each";
--- a/js/src/jsopcode.h
+++ b/js/src/jsopcode.h
@@ -220,18 +220,16 @@ typedef enum JSOp {
                                  (pc)[2] = (jsbytecode)((uint32)(i) >> 16),   \
                                  (pc)[3] = (jsbytecode)((uint32)(i) >> 8),    \
                                  (pc)[4] = (jsbytecode)(uint32)(i))
 
 /* Index limit is determined by SN_3BYTE_OFFSET_FLAG, see jsemit.h. */
 #define INDEX_LIMIT_LOG2        23
 #define INDEX_LIMIT             ((uint32)1 << INDEX_LIMIT_LOG2)
 
-JS_STATIC_ASSERT(sizeof(uint32) * JS_BITS_PER_BYTE >= INDEX_LIMIT_LOG2 + 1);
-
 /* Actual argument count operand format helpers. */
 #define ARGC_HI(argc)           UINT16_HI(argc)
 #define ARGC_LO(argc)           UINT16_LO(argc)
 #define GET_ARGC(pc)            GET_UINT16(pc)
 #define ARGC_LIMIT              UINT16_LIMIT
 
 /* Synonyms for quick JOF_QARG and JOF_LOCAL bytecodes. */
 #define GET_ARGNO(pc)           GET_UINT16(pc)
--- a/js/src/jsprvtd.h
+++ b/js/src/jsprvtd.h
@@ -256,24 +256,9 @@ struct JSTempValueRooter {
  * treat char[] as utf-8 or simply as bytes that need to be inflated/deflated.
  */
 #ifdef JS_C_STRINGS_ARE_UTF8
 # define js_CStringsAreUTF8 JS_TRUE
 #else
 extern JSBool js_CStringsAreUTF8;
 #endif
 
-/*
- * Helper macros to convert between function and data pointers assuming that
- * they have the same size.
- */
-JS_STATIC_ASSERT(sizeof(void *) == sizeof(void (*)()));
-
-#ifdef __GNUC__
-# define JS_FUNC_TO_DATA_PTR(type, fun) (__extension__ (type) (fun))
-# define JS_DATA_TO_FUNC_PTR(type, ptr) (__extension__ (type) (ptr))
-#else
-/* Use an extra (void *) cast for MSVC. */
-# define JS_FUNC_TO_DATA_PTR(type, fun) ((type) (void *) (fun))
-# define JS_DATA_TO_FUNC_PTR(type, ptr) ((type) (void *) (ptr))
-#endif
-
 #endif /* jsprvtd_h___ */
--- a/js/src/jsregexp.cpp
+++ b/js/src/jsregexp.cpp
@@ -2144,17 +2144,17 @@ class RegExpNativeCompiler {
             mask.c[1] = mask2 ? 0x0020 : 0x0;
 
             if (mask.i) {
                 word |= mask.i;
                 useFastCI = JS_TRUE;
             }
         }
 
-        LIns* to_fail = lir->insBranch(LIR_jf, lir->ins2(LIR_lt, pos, cpend), 0);
+        LIns* to_fail = lir->insBranch(LIR_jf, lir->ins2(LIR_lt, pos, lir->ins2(LIR_sub, cpend, lir->insImm(2))), 0);
         fails.add(to_fail);
         LIns* text_word = lir->insLoad(LIR_ld, pos, lir->insImm(0));
         LIns* comp_word = useFastCI ?
             lir->ins2(LIR_or, text_word, lir->insImm(mask.i)) :
             text_word;
         fails.add(lir->insBranch(LIR_jf, lir->ins2(LIR_eq, comp_word, lir->insImm(word)), 0));
 
         return lir->ins2(LIR_piadd, pos, lir->insImm(4));
@@ -4945,45 +4945,90 @@ RegExp(JSContext *cx, JSObject *obj, uin
          * regexp_compile_sub does not use rval to root its temporaries so we
          * can use it to root obj.
          */
         *rval = OBJECT_TO_JSVAL(obj);
     }
     return regexp_compile_sub(cx, obj, argc, argv, rval);
 }
 
+#ifdef JS_TRACER
+
+static JSObject* FASTCALL
+RegExp_tn1(JSContext *cx, JSObject *proto, JSString *str)
+{
+    JSObject* obj = js_NewNativeObject(cx, &js_RegExpClass, proto, JSSLOT_PRIVATE);
+    if (!obj)
+        return NULL;
+
+    jsval argv[] = { JSVAL_NULL, OBJECT_TO_JSVAL(obj), STRING_TO_JSVAL(str) };
+    jsval rval;
+
+    if (!regexp_compile_sub(cx, obj, 1, argv + 2, &rval))
+        return NULL;
+
+    JS_ASSERT(JSVAL_IS_OBJECT(rval));
+    return JSVAL_TO_OBJECT(rval);
+}
+
+static JSObject* FASTCALL
+RegExp_tn2(JSContext *cx, JSObject *proto, JSString *str, JSString *opt)
+{
+    JSObject* obj = js_NewNativeObject(cx, &js_RegExpClass, proto, JSSLOT_PRIVATE);
+    if (!obj)
+        return NULL;
+
+    jsval argv[] = { JSVAL_NULL, OBJECT_TO_JSVAL(obj), STRING_TO_JSVAL(str), STRING_TO_JSVAL(opt) };
+    jsval rval;
+
+    if (!regexp_compile_sub(cx, obj, 2, argv + 2, &rval))
+        return NULL;
+
+    JS_ASSERT(JSVAL_IS_OBJECT(rval));
+    return JSVAL_TO_OBJECT(rval);
+}
+
+JS_DEFINE_TRCINFO_2(RegExp,
+    (3, (extern, CONSTRUCTOR_RETRY, RegExp_tn1, CONTEXT, CALLEE_PROTOTYPE, STRING,         0, 0)),
+    (4, (extern, CONSTRUCTOR_RETRY, RegExp_tn2, CONTEXT, CALLEE_PROTOTYPE, STRING, STRING, 0, 0)))
+
+#else  /* !JS_TRACER */
+
+# define RegExp_trcinfo NULL
+
+#endif /* !JS_TRACER */
+
 JSObject *
 js_InitRegExpClass(JSContext *cx, JSObject *obj)
 {
-    JSObject *proto, *ctor;
+    JSObject *proto = js_InitClass(cx, obj, NULL, &js_RegExpClass, RegExp, 1,
+                                   regexp_props, regexp_methods,
+                                   regexp_static_props, NULL,
+                                   RegExp_trcinfo);
+
+    if (!proto)
+        return NULL;
+
+    JSObject *ctor = JS_GetConstructor(cx, proto);
+    if (!ctor)
+        return NULL;
+
+    /* Give RegExp.prototype private data so it matches the empty string. */
     jsval rval;
-
-    proto = JS_InitClass(cx, obj, NULL, &js_RegExpClass, RegExp, 1,
-                         regexp_props, regexp_methods,
-                         regexp_static_props, NULL);
-
-    if (!proto || !(ctor = JS_GetConstructor(cx, proto)))
-        return NULL;
     if (!JS_AliasProperty(cx, ctor, "input",        "$_") ||
         !JS_AliasProperty(cx, ctor, "multiline",    "$*") ||
         !JS_AliasProperty(cx, ctor, "lastMatch",    "$&") ||
         !JS_AliasProperty(cx, ctor, "lastParen",    "$+") ||
         !JS_AliasProperty(cx, ctor, "leftContext",  "$`") ||
-        !JS_AliasProperty(cx, ctor, "rightContext", "$'")) {
-        goto bad;
+        !JS_AliasProperty(cx, ctor, "rightContext", "$'") ||
+        !regexp_compile_sub(cx, proto, 0, NULL, &rval)) {
+        return NULL;
     }
 
-    /* Give RegExp.prototype private data so it matches the empty string. */
-    if (!regexp_compile_sub(cx, proto, 0, NULL, &rval))
-        goto bad;
     return proto;
-
-bad:
-    JS_DeleteProperty(cx, obj, js_RegExpClass.name);
-    return NULL;
 }
 
 JSObject *
 js_NewRegExpObject(JSContext *cx, JSTokenStream *ts,
                    jschar *chars, size_t length, uintN flags)
 {
     JSString *str;
     JSObject *obj;
--- a/js/src/jsscope.cpp
+++ b/js/src/jsscope.cpp
@@ -52,16 +52,17 @@
 #include "jsapi.h"
 #include "jsatom.h"
 #include "jscntxt.h"
 #include "jsdbgapi.h"
 #include "jslock.h"
 #include "jsnum.h"
 #include "jsscope.h"
 #include "jsstr.h"
+#include "jsarray.h"
 
 JSScope *
 js_GetMutableScope(JSContext *cx, JSObject *obj)
 {
     JSScope *scope, *newscope;
     JSClass *clasp;
     uint32 freeslot;
 
@@ -1299,16 +1300,20 @@ js_AddScopeProperty(JSContext *cx, JSSco
          * this little set-back.  Therefore we must test !scope->table and
          * scope->entryCount >= SCOPE_HASH_THRESHOLD, not merely whether the
          * entry count just reached the threshold.
          */
         if (!scope->table && scope->entryCount >= SCOPE_HASH_THRESHOLD)
             (void) CreateScopeTable(cx, scope, JS_FALSE);
     }
 
+    jsuint index;
+    if (js_IdIsIndex(sprop->id, &index))
+        SCOPE_SET_INDEXED_PROPERTIES(scope);
+
     METER(adds);
     return sprop;
 
 fail_overwrite:
     if (overwriting) {
         /*
          * We may or may not have forked overwriting out of scope's ancestor
          * line, so we must check (the alternative is to set a flag above, but
--- a/js/src/jsscope.h
+++ b/js/src/jsscope.h
@@ -206,20 +206,16 @@ struct JSScope {
     int8            hashShift;          /* multiplicative hash shift */
     uint16          spare;              /* reserved */
     uint32          entryCount;         /* number of entries in table */
     uint32          removedCount;       /* removed entry sentinels in table */
     JSScopeProperty **table;            /* table of ptrs to shared tree nodes */
     JSScopeProperty *lastProp;          /* pointer to last property added */
 };
 
-#ifdef JS_THREADSAFE
-JS_STATIC_ASSERT(offsetof(JSScope, title) == sizeof(JSObjectMap));
-#endif
-
 #define JS_IS_SCOPE_LOCKED(cx, scope)   JS_IS_TITLE_LOCKED(cx, &(scope)->title)
 
 #define OBJ_SCOPE(obj)                  ((JSScope *)(obj)->map)
 #define OBJ_SHAPE(obj)                  (OBJ_SCOPE(obj)->shape)
 
 #define SCOPE_MAKE_UNIQUE_SHAPE(cx,scope)                                     \
     ((scope)->shape = js_GenerateShape((cx), JS_FALSE, NULL))
 
@@ -235,20 +231,23 @@ JS_STATIC_ASSERT(offsetof(JSScope, title
 
 /* By definition, hashShift = JS_DHASH_BITS - log2(capacity). */
 #define SCOPE_CAPACITY(scope)           JS_BIT(JS_DHASH_BITS-(scope)->hashShift)
 
 /* Scope flags and some macros to hide them from other files than jsscope.c. */
 #define SCOPE_MIDDLE_DELETE             0x0001
 #define SCOPE_SEALED                    0x0002
 #define SCOPE_BRANDED                   0x0004
+#define SCOPE_INDEXED_PROPERTIES        0x0008
 
 #define SCOPE_HAD_MIDDLE_DELETE(scope)  ((scope)->flags & SCOPE_MIDDLE_DELETE)
 #define SCOPE_SET_MIDDLE_DELETE(scope)  ((scope)->flags |= SCOPE_MIDDLE_DELETE)
 #define SCOPE_CLR_MIDDLE_DELETE(scope)  ((scope)->flags &= ~SCOPE_MIDDLE_DELETE)
+#define SCOPE_HAS_INDEXED_PROPERTIES(scope)  ((scope)->flags & SCOPE_INDEXED_PROPERTIES)
+#define SCOPE_SET_INDEXED_PROPERTIES(scope)  ((scope)->flags |= SCOPE_INDEXED_PROPERTIES)
 
 #define SCOPE_IS_SEALED(scope)          ((scope)->flags & SCOPE_SEALED)
 #define SCOPE_SET_SEALED(scope)         ((scope)->flags |= SCOPE_SEALED)
 #if 0
 /*
  * Don't define this, it can't be done safely because JS_LOCK_OBJ will avoid
  * taking the lock if the object owns its scope and the scope is sealed.
  */
--- a/js/src/jsstr.cpp
+++ b/js/src/jsstr.cpp
@@ -2551,17 +2551,17 @@ JS_DEFINE_TRCINFO_4(str_concat,
 JS_DEFINE_TRCINFO_2(str_match,
     (4, (static, JSVAL_FAIL,        String_p_match, CONTEXT, THIS_STRING, PC, REGEXP,         1, 1)),
     (4, (static, JSVAL_FAIL,        String_p_match_obj, CONTEXT, THIS, PC, REGEXP,            1, 1)))
 JS_DEFINE_TRCINFO_3(str_replace,
     (4, (static, STRING_RETRY,      String_p_replace_str, CONTEXT, THIS_STRING, REGEXP, STRING, 1, 1)),
     (4, (static, STRING_RETRY,      String_p_replace_str2, CONTEXT, THIS_STRING, STRING, STRING, 1, 1)),
     (5, (static, STRING_RETRY,      String_p_replace_str3, CONTEXT, THIS_STRING, STRING, STRING, STRING, 1, 1)))
 JS_DEFINE_TRCINFO_1(str_split,
-    (3, (static, OBJECT_RETRY_NULL, String_p_split, CONTEXT, THIS_STRING, STRING,             0, 0)))
+    (3, (static, OBJECT_RETRY,      String_p_split, CONTEXT, THIS_STRING, STRING,             0, 0)))
 JS_DEFINE_TRCINFO_1(str_toLowerCase,
     (2, (extern, STRING_RETRY,      js_toLowerCase, CONTEXT, THIS_STRING,                     1, 1)))
 JS_DEFINE_TRCINFO_1(str_toUpperCase,
     (2, (extern, STRING_RETRY,      js_toUpperCase, CONTEXT, THIS_STRING,                     1, 1)))
 
 #define GENERIC           JSFUN_GENERIC_NATIVE
 #define PRIMITIVE         JSFUN_THISP_PRIMITIVE
 #define GENERIC_PRIMITIVE (GENERIC | PRIMITIVE)
--- a/js/src/jstracer.cpp
+++ b/js/src/jstracer.cpp
@@ -92,17 +92,17 @@ static const char tagChar[]  = "OIDISIBI
 
 /* Blacklist parameters. */
 
 /* Number of iterations of a loop where we start tracing.  That is, we don't
    start tracing until the beginning of the HOTLOOP-th iteration. */
 #define HOTLOOP 2
 
 /* Attempt recording this many times before blacklisting permanently. */
-#define BL_ATTEMPTS 6
+#define BL_ATTEMPTS 2
 
 /* Skip this many future hits before allowing recording again after blacklisting. */
 #define BL_BACKOFF 32
 
 /* Number of times we wait to exit on a side exit before we try to extend the tree. */
 #define HOTEXIT 1
 
 /* Number of times we try to extend the tree along a side exit. */
@@ -236,16 +236,17 @@ js_DumpPeerStability(JSTraceMonitor* tm,
 /* We really need a better way to configure the JIT. Shaver, where is my fancy JIT object? */
 static bool nesting_enabled = true;
 #if defined(NANOJIT_IA32)
 static bool did_we_check_sse2 = false;
 #endif
 
 #ifdef JS_JIT_SPEW
 bool js_verboseDebug = getenv("TRACEMONKEY") && strstr(getenv("TRACEMONKEY"), "verbose");
+bool js_verboseStats = getenv("TRACEMONKEY") && strstr(getenv("TRACEMONKEY"), "stats");
 #endif
 
 /* The entire VM shares one oracle. Collisions and concurrent updates are tolerated and worst
    case cause performance regressions. */
 static Oracle oracle;
 
 Tracker::Tracker()
 {
@@ -469,23 +470,16 @@ js_Backoff(Fragment* tree, const jsbytec
     JS_ASSERT(tree->root == tree);
     if (++tree->recordAttempts > BL_ATTEMPTS) {
         js_Blacklist(tree);
         return;
     }
     tree->hits() -= BL_BACKOFF;
 }
 
-static void
-js_AttemptCompilation(Fragment* tree)
-{
-    --tree->recordAttempts;
-    tree->hits() = 0;
-}
-
 static inline size_t
 fragmentHash(const void *ip, uint32 globalShape)
 {
     uintptr_t h = HASH_SEED;
     hash_accum(h, uintptr_t(ip), FRAGMENT_TABLE_MASK);
     hash_accum(h, uintptr_t(globalShape), FRAGMENT_TABLE_MASK);
     return size_t(h);
 }
@@ -544,16 +538,35 @@ getAnchor(JSTraceMonitor* tm, const void
         tm->vmfragments[h] = f;
     }
     f->anchor = f;
     f->root = f;
     f->kind = LoopTrace;
     return f;
 }
 
+static void
+js_AttemptCompilation(JSTraceMonitor* tm, JSObject* globalObj, jsbytecode* pc)
+{
+    Fragment* f = getLoop(tm, pc, OBJ_SHAPE(globalObj));
+    JS_ASSERT(f->root == f);
+    /*
+     * Breath new live into all peer fragments at the designated loop header. If we already
+     * permanently blacklisted the location, undo that.
+     */
+    f = f->first;
+    while (f) {
+        JS_ASSERT(f->root == f);
+        JS_ASSERT(*(jsbytecode*)f->ip == JSOP_NOP || *(jsbytecode*)f->ip == JSOP_LOOP);
+        *(jsbytecode*)f->ip = JSOP_LOOP;
+        --f->recordAttempts;
+        f->hits() = HOTLOOP;
+        f = f->peer;
+    }
+}
 
 #if defined(NJ_SOFTFLOAT)
 JS_DEFINE_CALLINFO_1(static, DOUBLE,    i2f, INT32,                 1, 1)
 JS_DEFINE_CALLINFO_1(static, DOUBLE,    u2f, UINT32,                1, 1)
 #endif
 
 static bool isi2f(LInsp i)
 {
@@ -1178,17 +1191,17 @@ specializeTreesToMissingGlobals(JSContex
 }
 
 static void
 js_TrashTree(JSContext* cx, Fragment* f);
 
 JS_REQUIRES_STACK
 TraceRecorder::TraceRecorder(JSContext* cx, VMSideExit* _anchor, Fragment* _fragment,
         TreeInfo* ti, unsigned stackSlots, unsigned ngslots, uint8* typeMap,
-        VMSideExit* innermostNestedGuard, Fragment* outer)
+        VMSideExit* innermostNestedGuard, jsbytecode* outer)
 {
     JS_ASSERT(!_fragment->vmprivate && ti);
 
     this->cx = cx;
     this->traceMonitor = &JS_TRACE_MONITOR(cx);
     this->globalObj = JS_GetGlobalForObject(cx, cx->fp->scopeChain);
     this->anchor = _anchor;
     this->fragment = _fragment;
@@ -1807,16 +1820,37 @@ TraceRecorder::import(TreeInfo* treeInfo
     ptrdiff_t offset = -treeInfo->nativeStackBase;
     m = typeMap;
     FORALL_SLOTS_IN_PENDING_FRAMES(cx, callDepth,
         import(sp, offset, vp, *m, vpname, vpnum, fp);
         m++; offset += sizeof(double);
     );
 }
 
+JS_REQUIRES_STACK bool
+TraceRecorder::isValidSlot(JSScope* scope, JSScopeProperty* sprop)
+{
+    uint32 setflags = (js_CodeSpec[*cx->fp->regs->pc].format & (JOF_SET | JOF_INCDEC | JOF_FOR));
+
+    if (setflags) {
+        if (!SPROP_HAS_STUB_SETTER(sprop))
+            ABORT_TRACE("non-stub setter");
+        if (sprop->attrs & JSPROP_READONLY)
+            ABORT_TRACE("writing to a read-only property");
+    }
+    /* This check applies even when setflags == 0. */
+    if (setflags != JOF_SET && !SPROP_HAS_STUB_GETTER(sprop))
+        ABORT_TRACE("non-stub getter");
+
+    if (!SPROP_HAS_VALID_SLOT(sprop, scope))
+        ABORT_TRACE("slotless obj property");
+
+    return true;
+}
+
 /* Lazily import a global slot if we don't already have it in the tracker. */
 JS_REQUIRES_STACK bool
 TraceRecorder::lazilyImportGlobalSlot(unsigned slot)
 {
     if (slot != uint16(slot)) /* we use a table of 16-bit ints, bail out if that's not enough */
         return false;
     jsval* vp = &STOBJ_GET_SLOT(globalObj, slot);
     if (known(vp))
@@ -2452,31 +2486,31 @@ TraceRecorder::isLoopHeader(JSContext* c
 
 /* Compile the current fragment. */
 JS_REQUIRES_STACK void
 TraceRecorder::compile(JSTraceMonitor* tm)
 {
     Fragmento* fragmento = tm->fragmento;
     if (treeInfo->maxNativeStackSlots >= MAX_NATIVE_STACK_SLOTS) {
         debug_only_v(printf("Blacklist: excessive stack use.\n"));
-        js_Blacklist(fragment);
+        js_Blacklist(fragment->root);
         return;
     }
     if (anchor && anchor->exitType != CASE_EXIT)
         ++treeInfo->branchCount;
     if (lirbuf->outOMem()) {
         fragmento->assm()->setError(nanojit::OutOMem);
         return;
     }
     ::compile(fragmento->assm(), fragment);
     if (fragmento->assm()->error() == nanojit::OutOMem)
         return;
     if (fragmento->assm()->error() != nanojit::None) {
         debug_only_v(printf("Blacklisted: error during compilation\n");)
-        js_Blacklist(fragment);
+        js_Blacklist(fragment->root);
         return;
     }
     if (anchor) {
 #ifdef NANOJIT_IA32
         if (anchor->exitType == CASE_EXIT)
             fragmento->assm()->patch(anchor, anchor->switchInfo);
         else
 #endif
@@ -2530,17 +2564,17 @@ TraceRecorder::closeLoop(JSTraceMonitor*
     Fragment* peer_root;
     Fragmento* fragmento = tm->fragmento;
 
     exitIns = snapshot(UNSTABLE_LOOP_EXIT);
     exit = (VMSideExit*)((GuardRecord*)exitIns->payload())->exit;
 
     if (callDepth != 0) {
         debug_only_v(printf("Blacklisted: stack depth mismatch, possible recursion.\n");)
-        js_Blacklist(fragment);
+        js_Blacklist(fragment->root);
         trashSelf = true;
         return false;
     }
 
     JS_ASSERT(exit->numStackSlots == treeInfo->nStackTypes);
 
     peer_root = getLoop(traceMonitor, fragment->root->ip, treeInfo->globalShape);
     JS_ASSERT(peer_root != NULL);
@@ -2614,18 +2648,18 @@ TraceRecorder::closeLoop(JSTraceMonitor*
     debug_only_v(printf("updating specializations on dependent and linked trees\n"))
     if (fragment->root->vmprivate)
         specializeTreesToMissingGlobals(cx, (TreeInfo*)fragment->root->vmprivate);
 
     /* 
      * If this is a newly formed tree, and the outer tree has not been compiled yet, we
      * should try to compile the outer tree again.
      */
-    if (outer && fragment == fragment->root)
-        js_AttemptCompilation(outer);
+    if (outer)
+        js_AttemptCompilation(tm, globalObj, outer);
     
     debug_only_v(printf("recording completed at %s:%u@%u via closeLoop\n",
                         cx->fp->script->filename,
                         js_FramePCToLineNumber(cx, cx->fp),
                         FramePCOffset(cx->fp));)
     return true;
 }
 
@@ -2711,17 +2745,17 @@ TraceRecorder::joinEdgesToEntry(Fragment
 /* Emit an always-exit guard and compile the tree (used for break statements. */
 JS_REQUIRES_STACK void
 TraceRecorder::endLoop(JSTraceMonitor* tm)
 {
     LIns* exitIns = snapshot(LOOP_EXIT);
 
     if (callDepth != 0) {
         debug_only_v(printf("Blacklisted: stack depth mismatch, possible recursion.\n");)
-        js_Blacklist(fragment);
+        js_Blacklist(fragment->root);
         trashSelf = true;
         return;
     }
 
     fragment->lastIns = lir->insGuard(LIR_x, lir->insImm(1), exitIns);
     compile(tm);
 
     if (tm->fragmento->assm()->error() != nanojit::None)
@@ -2734,18 +2768,18 @@ TraceRecorder::endLoop(JSTraceMonitor* t
     debug_only_v(printf("updating specializations on dependent and linked trees\n"))
     if (fragment->root->vmprivate)
         specializeTreesToMissingGlobals(cx, (TreeInfo*)fragment->root->vmprivate);
 
     /* 
      * If this is a newly formed tree, and the outer tree has not been compiled yet, we
      * should try to compile the outer tree again.
      */
-    if (outer && fragment == fragment->root)
-        js_AttemptCompilation(outer);
+    if (outer)
+        js_AttemptCompilation(tm, globalObj, outer);
     
     debug_only_v(printf("recording completed at %s:%u@%u via endLoop\n",
                         cx->fp->script->filename,
                         js_FramePCToLineNumber(cx, cx->fp),
                         FramePCOffset(cx->fp));)
 }
 
 /* Emit code to adjust the stack to match the inner tree's stack expectations. */
@@ -2996,28 +3030,27 @@ js_CheckGlobalObjectShape(JSContext* cx,
 
     if (tm->recorder) {
         TreeInfo* ti = tm->recorder->getTreeInfo();
         /* Check the global shape matches the recorder's treeinfo's shape. */
         if (globalShape != ti->globalShape) {
             AUDIT(globalShapeMismatchAtEntry);
             debug_only_v(printf("Global shape mismatch (%u vs. %u), flushing cache.\n",
                                 globalShape, ti->globalShape);)
-                return false;
+            return false;
         }
         if (shape)
             *shape = globalShape;
         if (slots)
             *slots = ti->globalSlots;
         return true;
     }
 
     /* No recorder, search for a tracked global-state (or allocate one). */
     for (size_t i = 0; i < MONITOR_N_GLOBAL_STATES; ++i) {
-
         GlobalState &state = tm->globalStates[i];
 
         if (state.globalShape == (uint32) -1) {
             state.globalShape = globalShape;
             JS_ASSERT(state.globalSlots);
             JS_ASSERT(state.globalSlots->length() == 0);
         }
 
@@ -3035,17 +3068,17 @@ js_CheckGlobalObjectShape(JSContext* cx,
     debug_only_v(printf("No global slotlist for global shape %u, flushing cache.\n",
                         globalShape));
     return false;
 }
 
 static JS_REQUIRES_STACK bool
 js_StartRecorder(JSContext* cx, VMSideExit* anchor, Fragment* f, TreeInfo* ti,
                  unsigned stackSlots, unsigned ngslots, uint8* typeMap,
-                 VMSideExit* expectedInnerExit, Fragment* outer)
+                 VMSideExit* expectedInnerExit, jsbytecode* outer)
 {
     JSTraceMonitor* tm = &JS_TRACE_MONITOR(cx);
     JS_ASSERT(f->root != f || !cx->fp->imacpc);
 
     if (JS_TRACE_MONITOR(cx).prohibitRecording)
         return false;
 
     /* start recording if no exception during construction */
@@ -3261,17 +3294,17 @@ js_SynthesizeFrame(JSContext* cx, const 
     // callee's, including missing arguments. Could we shift everything down to the caller's
     // fp->slots (where vars start) and avoid some of the complexity?
     return (fi.s.spdist - fp->down->script->nfixed) +
            ((fun->nargs > fp->argc) ? fun->nargs - fp->argc : 0) +
            script->nfixed;
 }
 
 JS_REQUIRES_STACK bool
-js_RecordTree(JSContext* cx, JSTraceMonitor* tm, Fragment* f, Fragment* outer,
+js_RecordTree(JSContext* cx, JSTraceMonitor* tm, Fragment* f, jsbytecode* outer,
               uint32 globalShape, SlotList* globalSlots)
 {
     JS_ASSERT(f->root == f);
 
     /* Make sure the global type map didn't change on us. */
     JSObject* globalObj = JS_GetGlobalForObject(cx, cx->fp->scopeChain);
     if (!js_CheckGlobalObjectShape(cx, tm, globalObj)) {
         js_FlushJITCache(cx);
@@ -3351,17 +3384,17 @@ isSlotUndemotable(JSContext* cx, TreeInf
     if (slot < ti->nStackTypes)
         return oracle.isStackSlotUndemotable(cx, slot);
 
     uint16* gslots = ti->globalSlots->data();
     return oracle.isGlobalSlotUndemotable(cx, gslots[slot - ti->nStackTypes]);
 }
 
 JS_REQUIRES_STACK static bool
-js_AttemptToStabilizeTree(JSContext* cx, VMSideExit* exit, Fragment* outer)
+js_AttemptToStabilizeTree(JSContext* cx, VMSideExit* exit, jsbytecode* outer)
 {
     JSTraceMonitor* tm = &JS_TRACE_MONITOR(cx);
     Fragment* from = exit->from->root;
     TreeInfo* from_ti = (TreeInfo*)from->vmprivate;
 
     JS_ASSERT(exit->from->root->code());
 
     /* Make sure any doubles are not accidentally undemoted */
@@ -3448,17 +3481,17 @@ js_AttemptToStabilizeTree(JSContext* cx,
     }
     if (bound)
         return false;
 
     return js_RecordTree(cx, tm, from->first, outer, from_ti->globalShape, from_ti->globalSlots);
 }
 
 static JS_REQUIRES_STACK bool
-js_AttemptToExtendTree(JSContext* cx, VMSideExit* anchor, VMSideExit* exitedFrom, Fragment* outer)
+js_AttemptToExtendTree(JSContext* cx, VMSideExit* anchor, VMSideExit* exitedFrom, jsbytecode* outer)
 {
     Fragment* f = anchor->from->root;
     JS_ASSERT(f->vmprivate);
     TreeInfo* ti = (TreeInfo*)f->vmprivate;
 
     /* Don't grow trees above a certain size to avoid code explosion due to tail duplication. */
     if (ti->branchCount >= MAX_BRANCHES)
         return false;
@@ -3470,17 +3503,17 @@ js_AttemptToExtendTree(JSContext* cx, VM
         c->parent = f;
         anchor->target = c;
         c->root = f;
     }
 
     debug_only_v(printf("trying to attach another branch to the tree (hits = %d)\n", c->hits());)
 
     int32_t& hits = c->hits();
-    if (hits++ >= HOTEXIT && hits <= HOTEXIT+MAXEXIT) {
+    if (outer || hits++ >= HOTEXIT && hits <= HOTEXIT+MAXEXIT) {
         /* start tracing secondary trace from this point */
         c->lirbuf = f->lirbuf;
         unsigned stackSlots;
         unsigned ngslots;
         uint8* typeMap;
         TypeMap fullMap;
         if (exitedFrom == NULL) {
             /* If we are coming straight from a simple side exit, just use that exit's type map
@@ -3566,16 +3599,23 @@ js_RecordLoopEdge(JSContext* cx, TraceRe
     }
     /* If we hit our own loop header, close the loop and compile the trace. */
     if (r->isLoopHeader(cx))
         return js_CloseLoop(cx);
     /* does this branch go to an inner loop? */
     Fragment* f = getLoop(&JS_TRACE_MONITOR(cx), cx->fp->regs->pc, ti->globalShape);
     if (nesting_enabled && f) {
 
+        /* Cannot handle treecalls with callDepth > 0 and argc > nargs, see bug 480244. */
+        if (r->getCallDepth() > 0 && 
+            cx->fp->argc > cx->fp->fun->nargs) {
+            js_AbortRecording(cx, "Can't call inner tree with extra args in pending frame");
+            return false;
+        }
+
         /* Make sure inner tree call will not run into an out-of-memory condition. */
         if (tm->reservedDoublePoolPtr < (tm->reservedDoublePool + MAX_NATIVE_STACK_SLOTS) &&
             !js_ReplenishReservedPool(cx, tm)) {
             js_AbortRecording(cx, "Couldn't call inner tree (out of memory)");
             return false;
         }
 
         /* Make sure the shape of the global object still matches (this might flush
@@ -3598,63 +3638,59 @@ js_RecordLoopEdge(JSContext* cx, TraceRe
         bool success = false;
 
         f = r->findNestedCompatiblePeer(f, &empty);
         if (f && f->code())
             success = r->adjustCallerTypes(f);
 
         if (!success) {
             AUDIT(noCompatInnerTrees);
-            debug_only_v(printf("No compatible inner tree (%p).\n", (void*)f);)
-
-            Fragment* old = getLoop(tm, tm->recorder->getFragment()->root->ip, ti->globalShape);
-            if (old == NULL)
-                old = tm->recorder->getFragment();
+
+            jsbytecode* outer = (jsbytecode*)tm->recorder->getFragment()->root->ip;
             js_AbortRecording(cx, "No compatible inner tree");
 
             f = empty;
             if (!f) {
                 f = getAnchor(tm, cx->fp->regs->pc, globalShape);
                 if (!f) {
                     js_FlushJITCache(cx);
                     return false;
                 }
             }
-            return js_RecordTree(cx, tm, f, old, globalShape, globalSlots);
+            return js_RecordTree(cx, tm, f, outer, globalShape, globalSlots);
         }
 
         r->prepareTreeCall(f);
         VMSideExit* innermostNestedGuard = NULL;
         VMSideExit* lr = js_ExecuteTree(cx, f, inlineCallCount, &innermostNestedGuard);
         if (!lr || r->wasDeepAborted()) {
             if (!lr)
                 js_AbortRecording(cx, "Couldn't call inner tree");
             return false;
         }
-        Fragment* old;
+        jsbytecode* outer = (jsbytecode*)tm->recorder->getFragment()->root->ip;
         switch (lr->exitType) {
           case LOOP_EXIT:
             /* If the inner tree exited on an unknown loop exit, grow the tree around it. */
             if (innermostNestedGuard) {
-                js_AbortRecording(cx, "Inner tree took different side exit, abort recording");
-                return js_AttemptToExtendTree(cx, innermostNestedGuard, lr, NULL);
+                js_AbortRecording(cx, "Inner tree took different side exit, abort current "
+                                      "recording and grow nesting tree");
+                return js_AttemptToExtendTree(cx, innermostNestedGuard, lr, outer);
             }
             /* emit a call to the inner tree and continue recording the outer tree trace */
             r->emitTreeCall(f, lr);
             return true;
         case UNSTABLE_LOOP_EXIT:
             /* abort recording so the inner loop can become type stable. */
-            old = getLoop(tm, tm->recorder->getFragment()->root->ip, ti->globalShape);
             js_AbortRecording(cx, "Inner tree is trying to stabilize, abort outer recording");
-            return js_AttemptToStabilizeTree(cx, lr, old);
+            return js_AttemptToStabilizeTree(cx, lr, outer);
         case BRANCH_EXIT:
             /* abort recording the outer tree, extend the inner tree */
-            old = getLoop(tm, tm->recorder->getFragment()->root->ip, ti->globalShape);
             js_AbortRecording(cx, "Inner tree is trying to grow, abort outer recording");
-            return js_AttemptToExtendTree(cx, lr, NULL, old);
+            return js_AttemptToExtendTree(cx, lr, NULL, outer);
         default:
             debug_only_v(printf("exit_type=%d\n", lr->exitType);)
             js_AbortRecording(cx, "Inner tree not suitable for calling");
             return false;
         }
     }
 
     /* not returning to our own loop header, not an inner loop we can call, abort trace */
@@ -4257,17 +4293,17 @@ js_MonitorLoopEdge(JSContext* cx, uintN&
     uintN count;
     Fragment* match = js_FindVMCompatiblePeer(cx, f, count);
     if (!match) {
         if (count < MAXPEERS)
             goto record;
         /* If we hit the max peers ceiling, don't try to lookup fragments all the time. Thats
            expensive. This must be a rather type-unstable loop. */
         debug_only_v(printf("Blacklisted: too many peer trees.\n");)
-        js_Blacklist(f);
+        js_Blacklist(f->root);
         return false;
     }
 
     VMSideExit* lr = NULL;
     VMSideExit* innermostNestedGuard = NULL;
 
     lr = js_ExecuteTree(cx, match, inlineCallCount, &innermostNestedGuard);
     if (!lr)
@@ -4475,17 +4511,17 @@ js_CheckForSSE2()
         : /* We have no inputs */
         : "%eax", "%ecx"
        );
 #endif
     return (features & (1<<26)) != 0;
 }
 #endif
 
-extern void
+void
 js_InitJIT(JSTraceMonitor *tm)
 {
 #if defined NANOJIT_IA32
     if (!did_we_check_sse2) {
         avmplus::AvmCore::config.use_cmov =
         avmplus::AvmCore::config.sse2 = js_CheckForSSE2();
         did_we_check_sse2 = true;
     }
@@ -4513,21 +4549,21 @@ js_InitJIT(JSTraceMonitor *tm)
         tm->reFragmento = fragmento;
         tm->reLirBuf = new (&gc) LirBuffer(fragmento, NULL);
     }
 #if !defined XP_WIN
     debug_only(memset(&jitstats, 0, sizeof(jitstats)));
 #endif
 }
 
-extern void
+void
 js_FinishJIT(JSTraceMonitor *tm)
 {
 #ifdef JS_JIT_SPEW
-    if (jitstats.recorderStarted) {
+    if (js_verboseStats && jitstats.recorderStarted) {
         printf("recorder: started(%llu), aborted(%llu), completed(%llu), different header(%llu), "
                "trees trashed(%llu), slot promoted(%llu), unstable loop variable(%llu), "
                "breaks(%llu), returns(%llu), unstableInnerCalls(%llu)\n",
                jitstats.recorderStarted, jitstats.recorderAborted, jitstats.traceCompleted,
                jitstats.returnToDifferentLoopHeader, jitstats.treesTrashed, jitstats.slotPromoted,
                jitstats.unstableLoopVariable, jitstats.breakLoopExits, jitstats.returnLoopExits,
                jitstats.noCompatInnerTrees);
         printf("monitor: triggered(%llu), exits(%llu), type mismatch(%llu), "
@@ -4586,25 +4622,25 @@ TraceRecorder::popAbortStack()
     JSTraceMonitor* tm = &JS_TRACE_MONITOR(cx);
 
     JS_ASSERT(tm->abortStack == this);
 
     tm->abortStack = nextRecorderToAbort;
     nextRecorderToAbort = NULL;
 }
 
-extern void
+void
 js_FlushJITOracle(JSContext* cx)
 {
     if (!TRACING_ENABLED(cx))
         return;
     oracle.clear();
 }
 
-extern JS_REQUIRES_STACK void
+JS_REQUIRES_STACK void
 js_FlushScriptFragments(JSContext* cx, JSScript* script)
 {
     if (!TRACING_ENABLED(cx))
         return;
     debug_only_v(printf("Flushing fragments for JSScript %p.\n", (void*)script);)
     JSTraceMonitor* tm = &JS_TRACE_MONITOR(cx);
     for (size_t i = 0; i < FRAGMENT_TABLE_SIZE; ++i) {
         for (VMFragment **f = &(tm->vmfragments[i]); *f; ) {
@@ -4620,17 +4656,17 @@ js_FlushScriptFragments(JSContext* cx, J
                 *f = next;
             } else {
                 f = &((*f)->next);
             }
         }
     }
 }
 
-extern JS_REQUIRES_STACK void
+JS_REQUIRES_STACK void
 js_FlushJITCache(JSContext* cx)
 {
     if (!TRACING_ENABLED(cx))
         return;
     debug_only_v(printf("Flushing cache.\n");)
     JSTraceMonitor* tm = &JS_TRACE_MONITOR(cx);
     if (tm->recorder)
         js_AbortRecording(cx, "flush cache");
@@ -4737,48 +4773,45 @@ TraceRecorder::activeCallOrGlobalSlot(JS
     JS_ASSERT(obj != globalObj);
 
     JSAtom* atom = atoms[GET_INDEX(cx->fp->regs->pc)];
     JSObject* obj2;
     JSProperty* prop;
     if (js_FindProperty(cx, ATOM_TO_JSID(atom), &obj, &obj2, &prop) < 0 || !prop)
         ABORT_TRACE("failed to find name in non-global scope chain");
 
-    uint32 setflags = (js_CodeSpec[*cx->fp->regs->pc].format & (JOF_SET | JOF_INCDEC | JOF_FOR));
-
     if (obj == globalObj) {
         JSScopeProperty* sprop = (JSScopeProperty*) prop;
 
-        if (setflags && (sprop->attrs & JSPROP_READONLY))
-            ABORT_TRACE("writing to a readonly property");
-
-        if (obj2 != obj || !SPROP_HAS_VALID_SLOT(sprop, OBJ_SCOPE(obj))) {
+        if (obj2 != obj) {
+            OBJ_DROP_PROPERTY(cx, obj2, prop);
+            ABORT_TRACE("prototype property");
+        }
+        if (!isValidSlot(OBJ_SCOPE(obj), sprop)) {
             OBJ_DROP_PROPERTY(cx, obj2, prop);
-            ABORT_TRACE("prototype or slotless globalObj property");
+            return false;
         }
-
-        if (!lazilyImportGlobalSlot(sprop->slot))
-             ABORT_TRACE("lazy import of global slot failed");
+        if (!lazilyImportGlobalSlot(sprop->slot)) {
+            OBJ_DROP_PROPERTY(cx, obj2, prop);
+            ABORT_TRACE("lazy import of global slot failed");
+        }
         vp = &STOBJ_GET_SLOT(obj, sprop->slot);
         OBJ_DROP_PROPERTY(cx, obj2, prop);
         return true;
     }
 
     if (wasDeepAborted())
         ABORT_TRACE("deep abort from property lookup");
 
     if (obj == obj2 && OBJ_GET_CLASS(cx, obj) == &js_CallClass) {
         JSStackFrame* cfp = (JSStackFrame*) JS_GetPrivate(cx, obj);
         if (cfp && FrameInRange(cx->fp, cfp, callDepth)) {
             JSScopeProperty* sprop = (JSScopeProperty*) prop;
             uintN slot = sprop->shortid;
 
-            if (setflags && (sprop->attrs & JSPROP_READONLY))
-                ABORT_TRACE("writing to a readonly property");
-
             vp = NULL;
             if (sprop->getter == js_GetCallArg) {
                 JS_ASSERT(slot < cfp->fun->nargs);
                 vp = &cfp->argv[slot];
             } else if (sprop->getter == js_GetCallVar) {
                 JS_ASSERT(slot < cfp->script->nslots);
                 vp = &cfp->slots[slot];
             }
@@ -5770,25 +5803,19 @@ TraceRecorder::test_property_cache_direc
     /* Insist on obj being the directly addressed object. */
     if (obj2 != obj)
         ABORT_TRACE("test_property_cache_direct_slot hit prototype chain");
 
     /* Don't trace getter or setter calls, our caller wants a direct slot. */
     if (PCVAL_IS_SPROP(pcval)) {
         JSScopeProperty* sprop = PCVAL_TO_SPROP(pcval);
 
-        uint32 setflags = (js_CodeSpec[*cx->fp->regs->pc].format & (JOF_SET | JOF_INCDEC | JOF_FOR));
-        if (setflags && !SPROP_HAS_STUB_SETTER(sprop))
-            ABORT_TRACE("non-stub setter");
-        if (setflags != JOF_SET && !SPROP_HAS_STUB_GETTER(sprop))
-            ABORT_TRACE("non-stub getter");
-        if (!SPROP_HAS_VALID_SLOT(sprop, OBJ_SCOPE(obj)))
-            ABORT_TRACE("no valid slot");
-        if (setflags && (sprop->attrs & JSPROP_READONLY))
-            ABORT_TRACE("writing to a readonly property");
+        if (!isValidSlot(OBJ_SCOPE(obj), sprop))
+            return false;
+
         slot = sprop->slot;
     } else {
         if (!PCVAL_IS_SLOT(pcval))
             ABORT_TRACE("PCE is not a slot");
         slot = PCVAL_TO_SLOT(pcval);
     }
     return true;
 }
@@ -5943,33 +5970,33 @@ TraceRecorder::getThis(LIns*& this_ins)
         guard(false, lir->ins_eq0(this_ins), MISMATCH_EXIT);
     } else { /* in global code */
         this_ins = scopeChain();
     }
     return true;
 }
 
 JS_REQUIRES_STACK bool
-TraceRecorder::guardClass(JSObject* obj, LIns* obj_ins, JSClass* clasp, ExitType exitType)
+TraceRecorder::guardClass(JSObject* obj, LIns* obj_ins, JSClass* clasp, LIns* exit)
 {
     bool cond = STOBJ_GET_CLASS(obj) == clasp;
 
     LIns* class_ins = lir->insLoad(LIR_ldp, obj_ins, offsetof(JSObject, classword));
     class_ins = lir->ins2(LIR_piand, class_ins, lir->insImm(~3));
 
     char namebuf[32];
     JS_snprintf(namebuf, sizeof namebuf, "guard(class is %s)", clasp->name);
-    guard(cond, addName(lir->ins2(LIR_eq, class_ins, INS_CONSTPTR(clasp)), namebuf), exitType);
+    guard(cond, addName(lir->ins2(LIR_eq, class_ins, INS_CONSTPTR(clasp)), namebuf), exit);
     return cond;
 }
 
 JS_REQUIRES_STACK bool
 TraceRecorder::guardDenseArray(JSObject* obj, LIns* obj_ins, ExitType exitType)
 {
-    return guardClass(obj, obj_ins, &js_ArrayClass, exitType);
+    return guardClass(obj, obj_ins, &js_ArrayClass, snapshot(exitType));
 }
 
 JS_REQUIRES_STACK bool
 TraceRecorder::guardDenseArrayIndex(JSObject* obj, jsint idx, LIns* obj_ins,
                                     LIns* dslots_ins, LIns* idx_ins, ExitType exitType)
 {
     jsuint capacity = js_DenseArrayCapacity(obj);
 
@@ -6572,16 +6599,24 @@ TraceRecorder::getClassPrototype(JSObjec
     if (!OBJ_GET_PROPERTY(cx, ctor,
                           ATOM_TO_JSID(cx->runtime->atomState
                                        .classPrototypeAtom),
                           &pval)) {
         ABORT_TRACE("error getting prototype from constructor");
     }
     if (JSVAL_TAG(pval) != JSVAL_OBJECT)
         ABORT_TRACE("got primitive prototype from constructor");
+#ifdef DEBUG
+    JSBool ok, found;
+    uintN attrs;
+    ok = JS_GetPropertyAttributes(cx, ctor, js_class_prototype_str, &attrs, &found);
+    JS_ASSERT(ok);
+    JS_ASSERT(found);
+    JS_ASSERT((~attrs & (JSPROP_READONLY | JSPROP_PERMANENT)) == 0);
+#endif
     proto_ins = INS_CONSTPTR(JSVAL_TO_OBJECT(pval));
     return true;
 }
 
 bool
 TraceRecorder::newArray(JSObject *ctor, uint32 argc, jsval *argv, jsval *rval)
 {
     LIns *proto_ins, *arr_ins;
@@ -6652,35 +6687,35 @@ TraceRecorder::functionCall(bool constru
      * Bytecode sequences that push shapeless callees must guard on the callee
      * class being Function and the function being interpreted.
      */
     JSFunction* fun = GET_FUNCTION_PRIVATE(cx, JSVAL_TO_OBJECT(fval));
 
     if (FUN_INTERPRETED(fun)) {
         if (constructing) {
             LIns* args[] = { get(&fval), cx_ins };
-            LIns* tv_ins = lir->insCall(&js_FastNewObject_ci, args);
+            LIns* tv_ins = lir->insCall(&js_NewInstance_ci, args);
             guard(false, lir->ins_eq0(tv_ins), OOM_EXIT);
             set(&tval, tv_ins);
         }
         return interpretedFunctionCall(fval, fun, argc, constructing);
     }
 
-    if (!constructing && !(fun->flags & JSFUN_TRACEABLE))
+    if (FUN_SLOW_NATIVE(fun) && fun->u.n.native == js_Array)
+        return newArray(FUN_OBJECT(fun), argc, &tval + 1, &fval);
+
+    if (!(fun->flags & JSFUN_TRACEABLE))
         ABORT_TRACE("untraceable native");
 
-    static JSTraceableNative knownNatives[] = {
-        { (JSFastNative)js_Object, &js_FastNewObject_ci,  "fC", "",    FAIL_NULL | JSTN_MORE },
-        { (JSFastNative)js_Date,   &js_FastNewDate_ci,    "pC", "",    FAIL_NULL },
-    };
+    JSTraceableNative* known = FUN_TRCINFO(fun);
+    JS_ASSERT(known && (JSFastNative)fun->u.n.native == known->native);
 
     LIns* args[5];
-    JSTraceableNative* known = constructing ? knownNatives : FUN_TRCINFO(fun);
     do {
-        if (constructing && (JSFastNative)fun->u.n.native != known->native)
+        if (((known->flags & JSTN_CONSTRUCTOR) != 0) != constructing)
             continue;
 
         uintN knownargc = strlen(known->argtypes);
         if (argc != knownargc)
             continue;
 
         intN prefixc = strlen(known->prefix);
         JS_ASSERT(prefixc <= 3);
@@ -6757,19 +6792,16 @@ TraceRecorder::functionCall(bool constru
             }
             argp--;
         }
         goto success;
 
 next_specialization:;
     } while ((known++)->flags & JSTN_MORE);
 
-    if (FUN_SLOW_NATIVE(fun) && fun->u.n.native == js_Array)
-        return newArray(FUN_OBJECT(fun), argc, &tval + 1, &fval);
-
     if (!constructing)
         ABORT_TRACE("unknown native");
     if (!(fun->flags & JSFUN_TRACEABLE) && FUN_CLASP(fun))
         ABORT_TRACE("can't trace native constructor");
     ABORT_TRACE("can't trace unknown constructor");
 
 success:
 #if defined _DEBUG
@@ -6987,38 +7019,53 @@ TraceRecorder::record_JSOP_SETPROP()
     if (obj->map->ops->setProperty != js_SetProperty)
         ABORT_TRACE("non-native JSObjectOps::setProperty");
     return true;
 }
 
 JS_REQUIRES_STACK bool
 TraceRecorder::record_SetPropHit(JSPropCacheEntry* entry, JSScopeProperty* sprop)
 {
-    if (sprop->setter == js_watch_set)
-        ABORT_TRACE("watchpoint detected");
-
     jsbytecode* pc = cx->fp->regs->pc;
     jsval& r = stackval(-1);
     jsval& l = stackval(-2);
 
     JS_ASSERT(!JSVAL_IS_PRIMITIVE(l));
     JSObject* obj = JSVAL_TO_OBJECT(l);
     LIns* obj_ins = get(&l);
 
-    if (sprop->attrs & JSPROP_READONLY)
-        ABORT_TRACE("SetPropHit on readonly prop");
+    if (!isValidSlot(OBJ_SCOPE(obj), sprop))
+        return false;
 
     if (obj == globalObj) {
         JS_ASSERT(SPROP_HAS_VALID_SLOT(sprop, OBJ_SCOPE(obj)));
         uint32 slot = sprop->slot;
         if (!lazilyImportGlobalSlot(slot))
             ABORT_TRACE("lazy import of global slot failed");
 
         LIns* r_ins = get(&r);
-        set(&STOBJ_GET_SLOT(obj, slot), r_ins);
+
+        if (JSVAL_IS_OBJECT(r)) {
+            /*
+             * Writing a function into the global object might rebrand it. We don't trace
+             * that case.
+             */
+            if (VALUE_IS_FUNCTION(cx, r))
+                ABORT_TRACE("potential rebranding of the global object");
+
+            /*
+             * If a regular object was written, we have to guard that it's not a function
+             * at execution time either. FIXME: We should split function and object into
+             * separate types when on trace (bug 481273).
+             */
+            guardClass(obj, obj_ins, &js_FunctionClass, snapshot(MISMATCH_EXIT));
+            set(&STOBJ_GET_SLOT(obj, slot), r_ins);
+        } else {
+            set(&STOBJ_GET_SLOT(obj, slot), r_ins);
+        }
 
         JS_ASSERT(*pc != JSOP_INITPROP);
         if (pc[JSOP_SETPROP_LENGTH] != JSOP_POP)
             set(&l, r_ins);
         return true;
     }
 
     // The global object's shape is guarded at trace entry, all others need a guard here.
@@ -7670,25 +7717,26 @@ TraceRecorder::prop(JSObject* obj, LIns*
 
     /* Check for non-existent property reference, which results in undefined. */
     const JSCodeSpec& cs = js_CodeSpec[*cx->fp->regs->pc];
     if (PCVAL_IS_NULL(pcval)) {
         /*
          * This trace will be valid as long as neither the object nor any object
          * on its prototype chain change shape.
          */
+        LIns* exit = snapshot(BRANCH_EXIT);
         for (;;) {
             LIns* map_ins = lir->insLoad(LIR_ldp, obj_ins, (int)offsetof(JSObject, map));
             LIns* ops_ins;
             if (map_is_native(obj->map, map_ins, ops_ins)) {
                 LIns* shape_ins = addName(lir->insLoad(LIR_ld, map_ins, offsetof(JSScope, shape)),
                                           "shape");
                 guard(true,
                       addName(lir->ins2i(LIR_eq, shape_ins, OBJ_SHAPE(obj)), "guard(shape)"),
-                      BRANCH_EXIT);
+                      exit);
             } else if (!guardDenseArray(obj, obj_ins, BRANCH_EXIT))
                 ABORT_TRACE("non-native object involved in undefined property access");
 
             obj = JSVAL_TO_OBJECT(obj->fslots[JSSLOT_PROTO]);
             if (!obj)
                 break;
             obj_ins = stobj_get_fslot(obj_ins, JSSLOT_PROTO);
         }
@@ -7774,21 +7822,38 @@ TraceRecorder::elem(jsval& oval, jsval& 
         return false;
 
     /* check that the index is within bounds */
     jsint i = JSVAL_TO_INT(idx);
     LIns* idx_ins = makeNumberInt32(get(&idx));
 
     LIns* dslots_ins = lir->insLoad(LIR_ldp, obj_ins, offsetof(JSObject, dslots));
     if (!guardDenseArrayIndex(obj, i, obj_ins, dslots_ins, idx_ins, BRANCH_EXIT)) {
-        LIns* rt_ins = lir->insLoad(LIR_ldp, cx_ins, offsetof(JSContext, runtime));
-        guard(true,
-              lir->ins_eq0(lir->insLoad(LIR_ldp, rt_ins,
-                                        offsetof(JSRuntime, anyArrayProtoHasElement))),
-              MISMATCH_EXIT);
+        /*
+         * If we read a hole, make sure at recording time and at runtime that nothing along
+         * the prototype has numeric properties.
+         */
+        if (js_PrototypeHasIndexedProperties(cx, obj))
+            return false;
+
+        LIns* exit = snapshot(BRANCH_EXIT);
+        while ((obj = JSVAL_TO_OBJECT(obj->fslots[JSSLOT_PROTO])) != NULL) {
+            obj_ins = stobj_get_fslot(obj_ins, JSSLOT_PROTO);
+            LIns* map_ins = lir->insLoad(LIR_ldp, obj_ins, (int)offsetof(JSObject, map));
+            LIns* ops_ins;
+            if (!map_is_native(obj->map, map_ins, ops_ins))
+                ABORT_TRACE("non-native object involved along prototype chain");
+
+            LIns* shape_ins = addName(lir->insLoad(LIR_ld, map_ins, offsetof(JSScope, shape)),
+                                      "shape");
+            guard(true,
+                  addName(lir->ins2i(LIR_eq, shape_ins, OBJ_SHAPE(obj)), "guard(shape)"),
+                  exit);
+        }
+
         // Return undefined and indicate that we didn't actually read this (addr_ins).
         v_ins = lir->insImm(JSVAL_TO_PSEUDO_BOOLEAN(JSVAL_VOID));
         addr_ins = NULL;
         return true;
     }
 
     // We can't "see through" a hole to a possible Array.prototype property, so
     // we abort here and guard below (after unboxing).
@@ -8029,17 +8094,17 @@ TraceRecorder::record_JSOP_NEWINIT()
         ci = &js_FastNewArray_ci;
     } else {
         jsval v_obj;
         if (!js_FindClassObject(cx, globalObj, INT_TO_JSID(key), &v_obj))
             return false;
         if (JSVAL_IS_PRIMITIVE(v_obj))
             ABORT_TRACE("primitive Object value");
         obj = JSVAL_TO_OBJECT(v_obj);
-        ci = &js_FastNewObject_ci;
+        ci = &js_Object_tn_ci;
     }
     LIns* args[] = { INS_CONSTPTR(obj), cx_ins };
     LIns* v_ins = lir->insCall(ci, args);
     guard(false, lir->ins_eq0(v_ins), OOM_EXIT);
     stack(0, v_ins);
     return true;
 }
 
@@ -8159,18 +8224,20 @@ TraceRecorder::record_JSOP_ITER()
 JS_REQUIRES_STACK bool
 TraceRecorder::record_JSOP_NEXTITER()
 {
     jsval& iterobj_val = stackval(-2);
     if (JSVAL_IS_PRIMITIVE(iterobj_val))
         ABORT_TRACE("for-in on a primitive value");
 
     LIns* iterobj_ins = get(&iterobj_val);
-    if (guardClass(JSVAL_TO_OBJECT(iterobj_val), iterobj_ins, &js_IteratorClass, BRANCH_EXIT))
+    if (guardClass(JSVAL_TO_OBJECT(iterobj_val), iterobj_ins, &js_IteratorClass,
+                   snapshot(BRANCH_EXIT))) {
         return call_imacro(nextiter_imacros.native_iter_next);
+    }
     return call_imacro(nextiter_imacros.custom_iter_next);
 }
 
 JS_REQUIRES_STACK bool
 TraceRecorder::record_JSOP_ENDITER()
 {
     LIns* args[] = { stack(-2), cx_ins };
     LIns* ok_ins = lir->insCall(&js_CloseIterator_ci, args);
@@ -9398,23 +9465,16 @@ TraceRecorder::record_JSOP_NEWARRAY()
     if (!js_GetClassPrototype(cx, globalObj, INT_TO_JSID(JSProto_Array), &proto))
         return false;
 
     uint32 len = GET_UINT24(cx->fp->regs->pc);
     LIns* args[] = { lir->insImm(len), INS_CONSTPTR(proto), cx_ins };
     LIns* v_ins = lir->insCall(ci, args);
     guard(false, lir->ins_eq0(v_ins), OOM_EXIT);
 
-    // De-optimize when we might have setters on Array.prototype.
-    LIns* rt_ins = lir->insLoad(LIR_ldp, cx_ins, offsetof(JSContext, runtime));
-    guard(true,
-          lir->ins_eq0(lir->insLoad(LIR_ldp, rt_ins,
-                                    offsetof(JSRuntime, anyArrayProtoHasElement))),
-          MISMATCH_EXIT);
-
     LIns* dslots_ins = NULL;
     for (uint32 i = 0; i < len; i++) {
         jsval& v = stackval(int(i) - int(len));
         LIns* elt_ins = get(&v);
         box_jsval(v, elt_ins);
         stobj_set_dslot(v_ins, i, dslots_ins, elt_ins, "set_array_elt");
     }
 
--- a/js/src/jstracer.h
+++ b/js/src/jstracer.h
@@ -413,27 +413,28 @@ class TraceRecorder : public avmplus::GC
     Queue<jsbytecode*>      cfgMerges;
     jsval*                  global_dslots;
     JSTraceableNative*      pendingTraceableNative;
     bool                    terminate;
     jsbytecode*             terminate_pc;
     jsbytecode*             terminate_imacpc;
     TraceRecorder*          nextRecorderToAbort;
     bool                    wasRootFragment;
-    nanojit::Fragment*      outer;
+    jsbytecode*             outer;
 
     bool isGlobal(jsval* p) const;
     ptrdiff_t nativeGlobalOffset(jsval* p) const;
     JS_REQUIRES_STACK ptrdiff_t nativeStackOffset(jsval* p) const;
     JS_REQUIRES_STACK void import(nanojit::LIns* base, ptrdiff_t offset, jsval* p, uint8& t,
                                   const char *prefix, uintN index, JSStackFrame *fp);
     JS_REQUIRES_STACK void import(TreeInfo* treeInfo, nanojit::LIns* sp, unsigned stackSlots,
                                   unsigned callDepth, unsigned ngslots, uint8* typeMap);
     void trackNativeStackUse(unsigned slots);
 
+    JS_REQUIRES_STACK bool isValidSlot(JSScope* scope, JSScopeProperty* sprop);
     JS_REQUIRES_STACK bool lazilyImportGlobalSlot(unsigned slot);
 
     JS_REQUIRES_STACK nanojit::LIns* guard(bool expected, nanojit::LIns* cond,
                                            ExitType exitType);
     nanojit::LIns* guard(bool expected, nanojit::LIns* cond, nanojit::LIns* exit);
 
     nanojit::LIns* addName(nanojit::LIns* ins, const char* name);
 
@@ -524,17 +525,17 @@ class TraceRecorder : public avmplus::GC
                                 nanojit::LIns*& addr_ins);
     JS_REQUIRES_STACK bool getProp(JSObject* obj, nanojit::LIns* obj_ins);
     JS_REQUIRES_STACK bool getProp(jsval& v);
     JS_REQUIRES_STACK bool getThis(nanojit::LIns*& this_ins);
 
     JS_REQUIRES_STACK void box_jsval(jsval v, nanojit::LIns*& v_ins);
     JS_REQUIRES_STACK void unbox_jsval(jsval v, nanojit::LIns*& v_ins);
     JS_REQUIRES_STACK bool guardClass(JSObject* obj, nanojit::LIns* obj_ins, JSClass* clasp,
-                                      ExitType exitType = MISMATCH_EXIT);
+                                      nanojit::LIns* exit);
     JS_REQUIRES_STACK bool guardDenseArray(JSObject* obj, nanojit::LIns* obj_ins,
                                            ExitType exitType = MISMATCH_EXIT);
     JS_REQUIRES_STACK bool guardDenseArrayIndex(JSObject* obj, jsint idx, nanojit::LIns* obj_ins,
                                                 nanojit::LIns* dslots_ins, nanojit::LIns* idx_ins,
                                                 ExitType exitType);
     JS_REQUIRES_STACK bool guardElemOp(JSObject* obj, nanojit::LIns* obj_ins, jsid id,
                                        size_t op_offset, jsval* vp);
     void clearFrameSlotsFromCache();
@@ -551,17 +552,17 @@ class TraceRecorder : public avmplus::GC
 
     bool hasMethod(JSObject* obj, jsid id);
     JS_REQUIRES_STACK bool hasIteratorMethod(JSObject* obj);
 
 public:
     JS_REQUIRES_STACK
     TraceRecorder(JSContext* cx, VMSideExit*, nanojit::Fragment*, TreeInfo*,
                   unsigned stackSlots, unsigned ngslots, uint8* typeMap,
-                  VMSideExit* expectedInnerExit, nanojit::Fragment* outerTree);
+                  VMSideExit* expectedInnerExit, jsbytecode* outerTree);
     ~TraceRecorder();
 
     static JS_REQUIRES_STACK JSMonitorRecordingStatus monitorRecording(JSContext* cx, TraceRecorder* tr, JSOp op);
 
     JS_REQUIRES_STACK uint8 determineSlotType(jsval* vp);
     JS_REQUIRES_STACK nanojit::LIns* snapshot(ExitType exitType);
     nanojit::Fragment* getFragment() const { return fragment; }
     TreeInfo* getTreeInfo() const { return treeInfo; }
--- a/js/src/jstypes.h
+++ b/js/src/jstypes.h
@@ -446,11 +446,36 @@ typedef uintptr_t JSUword;
 #define JS_ARRAY_END(array)    ((array) + JS_ARRAY_LENGTH(array))
 
 #define JS_BITS_PER_BYTE 8
 #define JS_BITS_PER_BYTE_LOG2 3
 
 #define JS_BITS_PER_WORD (JS_BITS_PER_BYTE * JS_BYTES_PER_WORD)
 #define JS_BITS_PER_DOUBLE (JS_BITS_PER_BYTE * JS_BYTES_PER_DOUBLE)
 
+/***********************************************************************
+** MACROS:      JS_FUNC_TO_DATA_PTR
+**              JS_DATA_TO_FUNC_PTR
+** DESCRIPTION:
+**      Macros to convert between function and data pointers assuming that
+**      they have the same size. Use them like this:
+**
+**      JSPropertyOp nativeGetter;
+**      JSObject *scriptedGetter;
+**      ...
+**      scriptedGetter = JS_FUNC_TO_DATA_PTR(JSObject *, nativeGetter);
+**      ...
+**      nativeGetter = JS_DATA_TO_FUNC_PTR(JSPropertyOp, scriptedGetter);
+**
+***********************************************************************/
+
+#ifdef __GNUC__
+# define JS_FUNC_TO_DATA_PTR(type, fun) (__extension__ (type) (fun))
+# define JS_DATA_TO_FUNC_PTR(type, ptr) (__extension__ (type) (ptr))
+#else
+/* Use an extra (void *) cast for MSVC. */
+# define JS_FUNC_TO_DATA_PTR(type, fun) ((type) (void *) (fun))
+# define JS_DATA_TO_FUNC_PTR(type, ptr) ((type) (void *) (ptr))
+#endif
+
 JS_END_EXTERN_C
 
 #endif /* jstypes_h___ */
--- a/js/src/jsutil.cpp
+++ b/js/src/jsutil.cpp
@@ -45,16 +45,22 @@
 #include <stdlib.h>
 #include "jstypes.h"
 #include "jsutil.h"
 
 #ifdef WIN32
 #    include <windows.h>
 #endif
 
+/*
+ * Checks the assumption that JS_FUNC_TO_DATA_PTR and JS_DATA_TO_FUNC_PTR
+ * macros uses to implement casts between function and data pointers.
+ */
+JS_STATIC_ASSERT(sizeof(void *) == sizeof(void (*)()));
+
 JS_PUBLIC_API(void) JS_Assert(const char *s, const char *file, JSIntn ln)
 {
     fprintf(stderr, "Assertion failure: %s, at %s:%d\n", s, file, ln);
 #if defined(WIN32)
     DebugBreak();
     exit(3);
 #elif defined(XP_OS2) || (defined(__GNUC__) && defined(__i386))
     asm("int $3");
--- a/js/src/jsutil.h
+++ b/js/src/jsutil.h
@@ -41,21 +41,25 @@
  * PR assertion checker.
  */
 
 #ifndef jsutil_h___
 #define jsutil_h___
 
 JS_BEGIN_EXTERN_C
 
-#ifdef DEBUG
-
+/*
+ * JS_Assert is present even in release builds, for the benefit of applications
+ * that build DEBUG and link against a non-DEBUG SpiderMonkey library.
+ */
 extern JS_PUBLIC_API(void)
 JS_Assert(const char *s, const char *file, JSIntn ln);
 
+#ifdef DEBUG
+
 #define JS_ASSERT(expr)                                                       \
     ((expr) ? (void)0 : JS_Assert(#expr, __FILE__, __LINE__))
 
 #define JS_ASSERT_IF(cond, expr)                                              \
     ((!(cond) || (expr)) ? (void)0 : JS_Assert(#expr, __FILE__, __LINE__))
 
 #define JS_NOT_REACHED(reason)                                                \
     JS_Assert(reason, __FILE__, __LINE__)
@@ -88,16 +92,18 @@ JS_Assert(const char *s, const char *fil
     #define JS_STATIC_ASSERT_GLUE(x,y) JS_STATIC_ASSERT_GLUE1(x,y)
     #define JS_STATIC_ASSERT(cond)                                            \
         typedef int JS_STATIC_ASSERT_GLUE(js_static_assert, __COUNTER__)[(cond) ? 1 : -1]
 #else
     #define JS_STATIC_ASSERT(cond) extern void js_static_assert(int arg[(cond) ? 1 : -1])
 #endif
 #endif
 
+#define JS_STATIC_ASSERT_IF(cond, expr) JS_STATIC_ASSERT(!(cond) || (expr))
+
 /*
  * Abort the process in a non-graceful manner. This will cause a core file,
  * call to the debugger or other moral equivalent as well as causing the
  * entire process to stop.
  */
 extern JS_PUBLIC_API(void) JS_Abort(void);
 
 #if 0
--- a/js/src/nanojit/Assembler.cpp
+++ b/js/src/nanojit/Assembler.cpp
@@ -926,16 +926,21 @@ namespace nanojit
 		}
 		
 		NanoAssertMsgf(error() || _fpuStkDepth == 0,"_fpuStkDepth %d",_fpuStkDepth);
 
 		internalReset();  // clear the reservation tables and regalloc
 		NanoAssert( !_branchStateMap || _branchStateMap->isEmpty());
 		_branchStateMap = 0;
 
+        // Tell Valgrind that new code has been generated, and it must flush
+        // any translations it has for the memory range generated into.
+        VALGRIND_DISCARD_TRANSLATIONS(pageTop(_nIns-1),     NJ_PAGE_SIZE);
+        VALGRIND_DISCARD_TRANSLATIONS(pageTop(_nExitIns-1), NJ_PAGE_SIZE);
+
 #ifdef AVMPLUS_ARM
 		// If we've modified the code, we need to flush so we don't end up trying 
 		// to execute junk
 # if defined(UNDER_CE)
 		FlushInstructionCache(GetCurrentProcess(), NULL, NULL);
 # elif defined(AVMPLUS_UNIX)
 		for (int i = 0; i < 2; i++) {
 			Page *p = (i == 0) ? _nativePages : _nativeExitPages;
--- a/js/src/nanojit/NativeARM.cpp
+++ b/js/src/nanojit/NativeARM.cpp
@@ -402,16 +402,17 @@ Assembler::nPatchBranch(NIns* at, NIns* 
         // great, just stick it in at[0]
         at[0] = (NIns)( COND_AL | (0xA<<24) | ((offs >> 2) & 0xffffff) );
         // and reset at[1] for good measure
         at[1] = BKPT_insn;
     } else {
         at[0] = (NIns)( COND_AL | (0x51<<20) | (PC<<16) | (PC<<12) | (4) );
         at[1] = (NIns)(target);
     }
+    VALGRIND_DISCARD_TRANSLATIONS(at, 2*sizeof(NIns));
 
 #if defined(UNDER_CE)
     // we changed the code, so we need to do this (sadly)
     FlushInstructionCache(GetCurrentProcess(), NULL, NULL);
 #elif defined(AVMPLUS_LINUX)
     __clear_cache((char*)at, (char*)(at+3));
 #endif
 
--- a/js/src/nanojit/Nativei386.cpp
+++ b/js/src/nanojit/Nativei386.cpp
@@ -411,27 +411,30 @@ namespace nanojit
 	NIns* Assembler::nPatchBranch(NIns* branch, NIns* targ)
 	{
 #if defined NANOJIT_IA32
         NIns* was = 0;
 		intptr_t offset = intptr_t(targ) - intptr_t(branch);
 		if (branch[0] == JMP32) {
             was = branch + *(int32_t*)&branch[1] + 5;
 		    *(int32_t*)&branch[1] = offset - 5;
+            VALGRIND_DISCARD_TRANSLATIONS(&branch[1], sizeof(int32_t));
 		} else if (branch[0] == JCC32) {
             was = branch + *(int32_t*)&branch[2] + 6;
 		    *(int32_t*)&branch[2] = offset - 6;
+            VALGRIND_DISCARD_TRANSLATIONS(&branch[2], sizeof(int32_t));
 		} else
 		    NanoAssertMsg(0, "Unknown branch type in nPatchBranch");
 #else
         if (branch[0] == 0xFF && branch[1] == 0x25) {
             NIns *mem;
             mem = &branch[6] + *(int32_t *)&branch[2];
             was = *(intptr_t*)mem;
             *(intptr_t *)mem = intptr_t(targ);
+            VALGRIND_DISCARD_TRANSLATIONS(mem, sizeof(intptr_t));
         } else {
             NanoAssertMsg(0, "Unknown branch type in nPatchBranch");
         }
 #endif
         return was;
 	}
 
 	RegisterMask Assembler::hint(LIns* i, RegisterMask allow)
@@ -2093,15 +2096,18 @@ namespace nanojit
 	// enough room for n bytes
     void Assembler::underrunProtect(int n)
     {
 		NanoAssertMsg(n<=LARGEST_UNDERRUN_PROT, "constant LARGEST_UNDERRUN_PROT is too small"); 
         NIns *eip = this->_nIns;
         Page *p = (Page*)pageTop(eip-1);
         NIns *top = (NIns*) &p->code[0];
         if (eip - n < top) {
+            // We are done with the current page.  Tell Valgrind that new code
+            // has been generated.
+            VALGRIND_DISCARD_TRANSLATIONS(pageTop(p), NJ_PAGE_SIZE);
 			_nIns = pageAlloc(_inExit);
             JMP(eip);
         }
     }
 	
 	#endif /* FEATURE_NANOJIT */
 }
--- a/js/src/nanojit/nanojit.h
+++ b/js/src/nanojit/nanojit.h
@@ -93,16 +93,26 @@
 
 	#define NJ_NEW(gc, cls)			new (gc) cls
 	#define NJ_DELETE(obj)			do { mmgc_delete(obj); } while (0)
 #else
 	#define NJ_NEW(gc, cls)			new (gc) cls
 	#define NJ_DELETE(obj)			do { delete obj; } while (0)
 #endif
 
+// Embed no-op macros that let Valgrind work with the JIT.
+#ifdef MOZ_VALGRIND
+#  define JS_VALGRIND
+#endif
+#ifdef JS_VALGRIND
+#  include <valgrind/valgrind.h>
+#else
+#  define VALGRIND_DISCARD_TRANSLATIONS(addr, szB)
+#endif
+ 
 namespace nanojit
 {
 	/**
 	 * -------------------------------------------
 	 * START AVM bridging definitions
 	 * -------------------------------------------
 	 */
 	class Fragment;
--- a/js/src/trace-test.js
+++ b/js/src/trace-test.js
@@ -14,16 +14,22 @@ const RECORDLOOP = HOTLOOP;
 const RUNLOOP = HOTLOOP + 1;
 
 var gDoMandelbrotTest = true;
 if ("gSkipSlowTests" in this && gSkipSlowTests) {
     print("** Skipping slow tests");
     gDoMandelbrotTest = false;
 }
 
+if (!('gSrcdir' in this))
+    gSrcdir = '.';
+
+if (!('gReportSummary' in this))
+    gReportSummary = true;
+
 var testName = null;
 if ("arguments" in this && arguments.length > 0)
   testName = arguments[0];
 var fails = [], passes=[];
 
 function jitstatHandler(f)
 {
     if (!haveTracemonkey)
@@ -134,17 +140,17 @@ function check(desc, actual, expected, o
                      if (expectedJITstats && prop in expectedJITstats &&
                          expectedJITstats[prop] !=
                            tracemonkey[prop] - oldJITstats[prop]) {
                        pass = false;
                      }
                    });
     if (pass) {
       passes.push(desc);
-      return print(desc, ": passed");
+      return print("TEST-PASS | trace-test.js |", desc);
     }
   }
   fails.push(desc);
   var expectedStats = "";
   if (expectedJITstats) {
       jitstatHandler(function(prop) {
                        if (prop in expectedJITstats) {
                          if (expectedStats)
@@ -159,17 +165,17 @@ function check(desc, actual, expected, o
       jitstatHandler(function(prop) {
                        if (prop in expectedJITstats) {
                          if (actualStats)
                            actualStats += " ";
                          actualStats += prop + ": " + (tracemonkey[prop]-oldJITstats[prop]);
                        }
                      });
   }
-  print(desc, ": FAILED: expected", typeof(expected),
+  print("TEST-UNEXPECTED-FAIL | trace-test.js |", desc, ": expected", typeof(expected),
         "(", uneval(expected), ")",
         (expectedStats ? " [" + expectedStats + "] " : ""),
         "!= actual",
         typeof(actual), "(", uneval(actual), ")",
         (actualStats ? " [" + actualStats + "] " : ""));
 }
 
 function ifInsideLoop()
@@ -1655,18 +1661,18 @@ function testNestedExitStackOuter() {
       counter = testNestedExitStackInner(j, counter);
     }
   }
   return counter;
 }
 testNestedExitStackOuter.expected = 81;
 testNestedExitStackOuter.jitstats = {
     recorderStarted: 5,
-    recorderAborted: 2,
-    traceTriggered: 11
+    recorderAborted: 1,
+    traceTriggered: 10
 };
 test(testNestedExitStackOuter);
 
 function testHOTLOOPSize() {
     return HOTLOOP > 1;
 }
 testHOTLOOPSize.expected = true;
 test(testHOTLOOPSize);
@@ -2561,19 +2567,19 @@ function testWeirdDateParse() {
     result = result.concat(testWeirdDateParseOuter());
     result.push(testWeirdDateParseInner("11"));
     result.push(testWeirdDateParseInner("17"));
     result.push(testWeirdDateParseInner("2008"));
     return result.join(",");
 }
 testWeirdDateParse.expected = "11,17,2008,11,17,2008,11,17,2008,11,17,2008,11,17,2008";
 testWeirdDateParse.jitstats = {
-    recorderStarted: 7,
+    recorderStarted: 8,
     recorderAborted: 1,
-    traceCompleted: 6,
+    traceCompleted: 7,
     traceTriggered: 14,
     unstableLoopVariable: 3,
     noCompatInnerTrees: 1
 };
 test(testWeirdDateParse);
 
 function testUndemotableBinaryOp() {
     var out = [];
@@ -4415,16 +4421,58 @@ function testUndefinedPropertyAccess() {
     return s;
 }
 testUndefinedPropertyAccess.expected = "undefinedundefinedundefinedundefinedundefinedundefinedundefined111";
 testUndefinedPropertyAccess.jitstats = {
     traceCompleted: 3
 };
 test(testUndefinedPropertyAccess);
 
+q = "";
+function g() { q += "g"; }
+function h() { q += "h"; }
+a = [g, g, g, g, h];
+for (i=0; i<5; i++) { f = a[i];  f(); }
+
+function testRebranding() {
+    return q;
+}
+testRebranding.expected = "ggggh";
+test(testRebranding);
+delete q;
+delete g;
+delete h;
+delete a;
+delete f;
+
+function testLambdaCtor() {
+    var a = [];
+    for (var x = 0; x < RUNLOOP; ++x) {
+        var f = function(){};
+        a[a.length] = new f;
+    }
+
+    // This prints false until the upvar2 bug is fixed:
+    // print(a[HOTLOOP].__proto__ !== a[HOTLOOP-1].__proto__);
+
+    // Assert that the last f was properly constructed.
+    return a[RUNLOOP-1].__proto__ === f.prototype;
+}
+testLambdaCtor.expected = true;
+test(testLambdaCtor);
+
+function testNonStubGetter() {
+    let ([] = false) { (this.watch("x", /a/g)); };
+    (function () { (eval("(function(){for each (x in [1, 2, 2]);});"))(); })();
+    this.unwatch("x");
+    return "ok";
+}
+testNonStubGetter.expected = "ok";
+test(testNonStubGetter);
+
 /*****************************************************************************
  *                                                                           *
  *  _____ _   _  _____ ______ _____ _______                                  *
  * |_   _| \ | |/ ____|  ____|  __ \__   __|                                 *
  *   | | |  \| | (___ | |__  | |__) | | |                                    *
  *   | | | . ` |\___ \|  __| |  _  /  | |                                    *
  *  _| |_| |\  |____) | |____| | \ \  | |                                    *
  * |_____|_| \_|_____/|______|_|  \_\ |_|                                    *
@@ -4442,24 +4490,24 @@ test(testUndefinedPropertyAccess);
  * |  _ \|  ____|  ____/ __ \|  __ \|  ____|  | |  | |  ____|  __ \|  ____|  *
  * | |_) | |__  | |__ | |  | | |__) | |__     | |__| | |__  | |__) | |__     *
  * |  _ <|  __| |  __|| |  | |  _  /|  __|    |  __  |  __| |  _  /|  __|    *
  * | |_) | |____| |   | |__| | | \ \| |____   | |  | | |____| | \ \| |____   *
  * |____/|______|_|    \____/|_|  \_\______|  |_|  |_|______|_|  \_\______|  *
  *                                                                           *
  *****************************************************************************/
 
-load("math-trace-tests.js");
+load(gSrcdir + "/math-trace-tests.js");
 
 // BEGIN MANDELBROT STUFF
 // XXXbz I would dearly like to wrap it up into a function to avoid polluting
 // the global scope, but the function ends up heavyweight, and then we lose on
 // the jit.
 if (gDoMandelbrotTest) {
-load("mandelbrot-results.js");
+load(gSrcdir + "/mandelbrot-results.js");
 //function testMandelbrotAll() {
   // Configuration options that affect which codepaths we follow.
   var doImageData = true;
   var avoidSparseArray = true;
 
   // Control of iteration numbers and sizing.  We'll do
   // scaler * colorNames.length iterations or so before deciding that we
   // don't escape.
@@ -4724,10 +4772,12 @@ load("mandelbrot-results.js");
 function testGlobalProtoAccess() {
     return "ok";
 }
 this.__proto__.a = 3; for (var j = 0; j < 4; ++j) { [a]; }
 testGlobalProtoAccess.expected = "ok";
 test(testGlobalProtoAccess);
 
 /* Keep these at the end so that we can see the summary after the trace-debug spew. */
-print("\npassed:", passes.length && passes.join(","));
-print("\nFAILED:", fails.length && fails.join(","));
+if (gReportSummary) {
+    print("\npassed:", passes.length && passes.join(","));
+    print("\nFAILED:", fails.length && fails.join(","));
+ }
deleted file mode 100644
--- a/js/src/win32.order
+++ /dev/null
@@ -1,384 +0,0 @@
-js_MarkGCThing ; 5893956
-JS_GetPrivate ; 2090130
-JS_HashTableRawLookup ; 1709984
-js_Mark ; 1547496
-js_GetToken ; 1406677
-js_UngetToken ; 1154416
-js_MarkAtom ; 992874
-js_MatchToken ; 980277
-js_CompareStrings ; 662772
-js_Lock ; 628184
-js_Unlock ; 628184
-js_HashString ; 611102
-js_DropScopeProperty ; 546476
-JS_malloc ; 484350
-js_InflateStringToBuffer ; 460739
-js_HoldScopeProperty ; 442612
-JS_free ; 382991
-js_MarkScript ; 376942
-js_HashId ; 365238
-JS_CompareValues ; 352366
-js_IdToValue ; 337594
-JS_GetClass ; 325296
-js_LookupProperty ; 324680
-js_GetAtom ; 244669
-js_DropProperty ; 223217
-JS_GetParent ; 209680
-js_LiveContext ; 205767
-js_PeekToken ; 200646
-js_GetSlotThreadSafe ; 198839
-JS_GetStringChars ; 190862
-JS_HashTableRawAdd ; 179156
-js_FoldConstants ; 162626
-js_EmitTree ; 145634
-JS_EnumerateStub ; 140640
-js_NewSrcNote ; 136983
-js_GetProperty ; 135639
-js_NewScopeProperty ; 135057
-js_MutateScope ; 135057
-js_GetMutableScope ; 135057
-js_AllocSlot ; 132401
-JS_GetRuntime ; 127316
-JS_FrameIterator ; 121963
-JS_GetFrameFunctionObject ; 120567
-js_AllocGCThing ; 119828
-js_DestroyScopeProperty ; 115989
-js_Emit3 ; 109135
-JS_HashTableLookup ; 107154
-JS_InstanceOf ; 103905
-js_DefineProperty ; 99514
-js_strncpy ; 88276
-js_PeekTokenSameLine ; 87197
-js_HoldObjectMap ; 79084
-js_DropObjectMap ; 77824
-js_NewObject ; 72421
-js_ValueToString ; 72143
-js_GetClassPrototype ; 66235
-js_UnlockRuntime ; 64699
-js_LockRuntime ; 64699
-js_ContextIterator ; 64586
-JS_ClearWatchPointsForObject ; 64155
-js_FinalizeObject ; 63925
-js_IndexAtom ; 63789
-JS_SetPrivate ; 63702
-JS_GetGlobalObject ; 63546
-js_Emit1 ; 63012
-JS_ContextIterator ; 57847
-JS_GetInstancePrivate ; 57817
-JS_HashTableRawRemove ; 57057
-js_Invoke ; 53568
-js_FindProperty ; 53150
-JS_GetFrameScript ; 51395
-js_LinkFunctionObject ; 50651
-js_SetSrcNoteOffset ; 47735
-js_InWithStatement ; 47346
-js_NewFunction ; 47074
-js_NewSrcNote2 ; 46165
-JS_HashTableAdd ; 45503
-JS_HashTableRemove ; 45213
-js_InCatchBlock ; 42198
-js_AddRootRT ; 40587
-js_AddRoot ; 40587
-js_SetProperty ; 40558
-JS_AddNamedRoot ; 40462
-js_RemoveRoot ; 40384
-JS_RemoveRootRT ; 38129
-js_NewString ; 37471
-js_DefineFunction ; 36629
-JS_GetContextThread ; 36498
-JS_LookupProperty ; 35137
-JS_ValueToString ; 34072
-JS_realloc ; 33776
-JS_DefineFunction ; 33268
-JS_SetErrorReporter ; 32851
-js_FinalizeString ; 30311
-js_FinalizeStringRT ; 30311
-JS_ArenaAllocate ; 30099
-JS_BeginRequest ; 29323
-JS_EndRequest ; 29323
-JS_GetContextPrivate ; 29189
-JS_CompactArenaPool ; 28874
-js_ValueToStringAtom ; 27934
-JS_ValueToId ; 26517
-js_ValueToBoolean ; 25908
-JS_InternString ; 25467
-js_PopStatement ; 24364
-js_PushStatement ; 24364
-js_NewStringCopyN ; 23911
-js_FlushPropertyCacheByProp ; 23883
-js_GetStringBytes ; 23421
-JS_ArenaRelease ; 23267
-JS_GetStringBytes ; 23106
-js_FreeStack ; 22399
-js_AllocStack ; 22399
-JS_SetProperty ; 21240
-js_InitObjectMap ; 19991
-js_NewScope ; 19991
-js_strlen ; 19070
-JS_GetScriptPrincipals ; 18063
-js_SrcNoteLength ; 17369
-js_DestroyObjectMap ; 17198
-js_DestroyScope ; 17198
-JS_GetStringLength ; 16306
-js_PopStatementCG ; 15418
-JS_GetFrameAnnotation ; 14949
-js_Interpret ; 14032
-js_TransferScopeLock ; 13899
-JS_ResolveStandardClass ; 13645
-JS_ResumeRequest ; 12837
-JS_SuspendRequest ; 12837
-JS_GetProperty ; 12488
-JS_NewObject ; 11660
-js_AllocTryNotes ; 11418
-js_NewNumberValue ; 10859
-js_InternalInvoke ; 10051
-js_NewDouble ; 9936
-js_SetJumpOffset ; 9886
-js_SkipWhiteSpace ; 9299
-js_NewDoubleValue ; 7474
-JS_GetPendingException ; 7404
-js_NewObjectMap ; 7236
-JS_ClearPendingException ; 7092
-JS_strtod ; 7053
-js_strtod ; 7053
-js_InflateString ; 7004
-JS_GetFunctionName ; 6808
-JS_NewHashTable ; 6794
-JS_NewFunction ; 6575
-js_FreeSlot ; 6476
-js_LockScope ; 6332
-JS_HashTableEnumerateEntries ; 6285
-js_GetLengthProperty ; 6162
-js_LockObj ; 6149
-JS_NewUCStringCopyN ; 5994
-JS_NewNumberValue ; 5904
-js_NewStringCopyZ ; 5809
-JS_NewUCStringCopyZ ; 5809
-js_DeflateString ; 5612
-js_ValueToNumber ; 5456
-JS_SetOptions ; 5322
-js_NewScript ; 4941
-js_InitCodeGenerator ; 4810
-js_FinishTakingSrcNotes ; 4810
-js_NewScriptFromParams ; 4810
-js_FinishTakingTryNotes ; 4810
-js_NewScriptFromCG ; 4810
-js_FinishCodeGenerator ; 4810
-JS_strdup ; 4534
-JS_HashTableDestroy ; 4119
-js_CheckRedeclaration ; 3965
-JS_DefineFunctions ; 3808
-js_EmitFunctionBody ; 3739
-js_TryMethod ; 3685
-js_DefaultValue ; 3610
-js_CloneFunctionObject ; 3577
-JS_InitClass ; 3546
-js_SetClassPrototype ; 3377
-JS_GetPrototype ; 3268
-JS_DefineProperties ; 3115
-js_FindVariable ; 3093
-js_DestroyScript ; 3041
-JS_ClearScriptTraps ; 3041
-js_FreeAtomMap ; 3041
-JS_NewStringCopyZ ; 2953
-js_AtomizeObject ; 2709
-JS_ValueToBoolean ; 2643
-js_SetLengthProperty ; 2637
-JS_GetOptions ; 2593
-js_ValueToObject ; 2522
-js_ValueToNonNullObject ; 2510
-js_StringToObject ; 2482
-JS_SetElement ; 2448
-js_NumberToString ; 2407
-JS_TypeOfValue ; 2275
-js_NewBufferTokenStream ; 2253
-js_NewTokenStream ; 2253
-js_CloseTokenStream ; 2253
-JS_RemoveRoot ; 2148
-JS_NewDouble ; 2129
-JS_vsnprintf ; 1937
-JS_snprintf ; 1937
-JS_CallFunctionValue ; 1844
-JS_DHashVoidPtrKeyStub ; 1840
-JS_DHashTableOperate ; 1840
-js_SetProtoOrParent ; 1758
-js_DoubleToInteger ; 1729
-JS_SetVersion ; 1531
-js_ValueToFunction ; 1476
-JS_SetPrototype ; 1408
-JS_CeilingLog2 ; 1317
-js_Execute ; 1199
-js_CompileFunctionBody ; 1182
-JS_CompileUCFunctionForPrincipals ; 1182
-js_GetSrcNoteOffset ; 1139
-JS_DHashMatchEntryStub ; 1094
-JS_VersionToString ; 1090
-JS_CompileUCScriptForPrincipals ; 1071
-js_CompileTokenStream ; 1071
-js_CurrentThreadId ; 1058
-JS_IdToValue ; 1046
-js_ConstructObject ; 974
-JS_DestroyScript ; 967
-js_PCToLineNumber ; 967
-JS_DefineProperty ; 930
-JS_GetScriptFilename ; 924
-JS_GetFramePC ; 899
-JS_EvaluateUCScriptForPrincipals ; 892
-JS_PCToLineNumber ; 848
-JS_StringToVersion ; 761
-js_ExecuteRegExp ; 755
-JS_MaybeGC ; 717
-JS_ValueToNumber ; 698
-JS_GetVersion ; 698
-JS_AliasProperty ; 693
-js_AtomizeValue ; 664
-js_BooleanToString ; 664
-js_SetSlotThreadSafe ; 596
-JS_DHashClearEntryStub ; 584
-JS_DHashTableRawRemove ; 584
-JS_DefineObject ; 557
-js_PutCallObject ; 516
-js_GetCallObject ; 516
-js_strchr ; 511
-JS_DefineUCProperty ; 480
-JS_dtostr ; 475
-JS_ValueToInt32 ; 464
-js_ValueToInt32 ; 464
-JS_FinishArenaPool ; 453
-js_NewTryNote ; 441
-js_strtointeger ; 437
-JS_vsmprintf ; 428
-JS_DHashTableInit ; 423
-JS_DHashAllocTable ; 423
-JS_DHashGetStubOps ; 423
-JS_NewDHashTable ; 423
-JS_DHashTableDestroy ; 423
-JS_DHashFreeTable ; 423
-JS_DHashTableFinish ; 423
-js_EmitBreak ; 412
-js_GetAttributes ; 412
-JS_DefineConstDoubles ; 407
-JS_ArenaGrow ; 374
-js_AtomizeInt ; 372
-JS_SetParent ; 345
-JS_CloneFunctionObject ; 343
-JS_IsNativeFrame ; 343
-JS_ReportErrorNumber ; 340
-js_ErrorToException ; 340
-js_ReportErrorNumberVA ; 340
-js_GetErrorMessage ; 340
-js_ExpandErrorArguments ; 340
-js_ReportUncaughtException ; 315
-JS_IsExceptionPending ; 315
-js_ReportErrorAgain ; 315
-js_ErrorFromException ; 315
-JS_LookupUCProperty ; 307
-JS_InitArenaPool ; 293
-PRMJ_Now ; 262
-DllMain@12 ; 235
-JS_ExecuteScript ; 232
-JS_GetFrameFunction ; 226
-PRMJ_LocalGMTDifference ; 175
-JS_GetConstructor ; 175
-JS_SetGlobalObject ; 164
-js_LockGCThing ; 155
-js_NewRegExpObject ; 152
-js_NewRegExp ; 152
-js_InitObjectClass ; 131
-js_InitFunctionClass ; 131
-js_EmitN ; 128
-JS_ArenaFinish ; 124
-js_GC ; 124
-js_SweepAtomState ; 124
-js_MarkAtomState ; 124
-JS_ArenaRealloc ; 124
-js_ForceGC ; 124
-js_FlushPropertyCache ; 122
-js_InitNumberClass ; 114
-JS_smprintf ; 112
-js_DoubleToECMAInt32 ; 112
-js_ValueToECMAInt32 ; 111
-JS_ValueToECMAInt32 ; 111
-JS_SetContextPrivate ; 109
-PRMJ_DSTOffset ; 108
-js_Clear ; 105
-JS_ClearScope ; 105
-JS_NewScriptObject ; 104
-JS_smprintf_free ; 104
-JS_ConvertValue ; 99
-js_GetSrcNote ; 98
-JS_ValueToECMAUint32 ; 93
-js_ValueToECMAUint32 ; 93
-js_printf ; 93
-js_DoubleToECMAUint32 ; 93
-js_DestroyRegExp ; 89
-js_UnlockGCThing ; 89
-js_TryValueOf ; 87
-js_NewSrcNote3 ; 86
-JS_ConvertStub ; 81
-JS_SetPendingException ; 80
-js_InitStringClass ; 79
-JS_GC ; 78
-js_InitArrayClass ; 74
-js_InitDateClass ; 67
-JS_NewContext ; 64
-JS_AddArgumentFormatter ; 64
-js_InitContextForLocking ; 64
-js_NewContext ; 64
-JS_SetBranchCallback ; 64
-JS_ClearRegExpStatics ; 64
-js_InitRegExpStatics ; 64
-js_InitCallClass ; 63
-js_InitRegExpClass ; 61
-js_Enumerate ; 58
-JS_DestroyContext ; 46
-js_DestroyContext ; 46
-js_FreeRegExpStatics ; 46
-js_InitScanner ; 39
-js_NewPrinter ; 36
-js_DestroyPrinter ; 36
-js_GetPrinterOutput ; 36
-JS_FreeArenaPool ; 36
-js_DecompileCode ; 34
-js_EmitContinue ; 33
-js_CheckAccess ; 30
-js_DecompileValueGenerator ; 28
-js_InitMathClass ; 27
-js_InitExceptionClasses ; 25
-js_NewArrayObject ; 24
-js_InitArgumentsClass ; 21
-js_puts ; 20
-js_InitBooleanClass ; 19
-JS_InitStandardClasses ; 19
-js_InitScriptClass ; 19
-js_obj_toString ; 15
-js_GetArgsValue ; 14
-js_GetArgsObject ; 14
-JS_DestroyIdArray ; 11
-js_NewIdArray ; 11
-JS_GetElement ; 11
-JS_EvaluateScript ; 9
-JS_EvaluateUCScript ; 9
-JS_DecompileFunction ; 8
-js_DecompileFunction ; 8
-JS_NewString ; 8
-js_SetStringBytes ; 8
-JS_GetArrayLength ; 7
-JS_NewArrayObject ; 7
-JS_IsArrayObject ; 7
-JS_ValueToObject ; 7
-JS_DefineElement ; 6
-js_DecompileScript ; 6
-JS_PushArguments ; 4
-JS_PopArguments ; 4
-JS_PushArgumentsVA ; 4
-js_PutArgsObject ; 2
-JS_SetGCCallbackRT ; 2
-JS_Init ; 1
-js_SetupLocks ; 1
-js_InitRuntimeNumberState ; 1
-js_InitRuntimeStringState ; 1
-js_InitLock ; 1
-js_InitGC ; 1
-js_InitAtomState ; 1
-js_InitStringGlobals ; 1
new file mode 100755
--- /dev/null
+++ b/js/tests/e4x/Regress/regress-473709.js
@@ -0,0 +1,66 @@
+/* -*- Mode: java; tab-width:8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Gary Kwong
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+gTestfile = 'regress-473709.js';
+
+var summary = 'Do not assert: cursor == (uint8 *)copy->messageArgs[0] + argsCopySize';
+var BUGNUMBER = 473709;
+var actual = '';
+var expect = '';
+
+printBugNumber(BUGNUMBER);
+START(summary);
+
+function f() { eval("(function() { switch(x, x) { default: for(x2; <x><y/></x>;) (function(){}) <x><y/></x>;break; case (+<><x><y/></x></>): break;   }; })()"); }
+
+if (typeof gczeal == 'function')
+{
+    gczeal(2);
+}
+
+try
+{
+    f();
+}
+catch(ex)
+{
+}
+
+TEST(1, expect, actual);
+
+END();
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_5/Regress/regress-449666.js
@@ -0,0 +1,98 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Robert Sayre
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-449666.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 449666;
+var summary = 'Do not assert: JSSTRING_IS_FLAT(str_)';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  var global;
+
+  jit(true);
+
+  if (typeof window == 'undefined') {
+    global = this;
+  }
+  else {
+    global = window;
+  }
+
+  if (!global['g']) {
+    global['g'] = {};
+  }
+
+  if (!global['g']['l']) {
+    global['g']['l'] = {};
+    (function() {
+      function k(a,b){
+        var c=a.split(/\./);
+        var d=global;
+        for(var e=0;e<c.length-1;e++){
+          if(!d[c[e]]){
+            d[c[e]]={};
+          }
+          d=d[c[e]];
+        }
+        d[c[c.length-1]]=b;
+        print("hi");
+      }
+
+      function T(a){return "hmm"}
+      k("g.l.loaded",T);
+    })();
+
+  }
+
+  jit(false);
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_5/Regress/regress-479353.js
@@ -0,0 +1,61 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Gary Kwong
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-479353.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 479353;
+var summary = 'Do not assert: (uint32)(index_) < atoms_->length';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+ 
+  (new Function("({}), arguments;"))();
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_5/extensions/regress-300079.js
@@ -0,0 +1,80 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2007
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Brendan Eich
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-300079.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 300079;
+var summary = "precompiled functions should inherit from current window's Function.prototype";
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  if (typeof clone == 'undefined') {
+    expect = 'SKIPPED';
+    actual = 'SKIPPED';
+  }
+  else {
+    expect = 'PASSED';
+
+    f = eval("(function (a) {return (function () { return a * a;}); })()");
+    g = clone(f, {a: 3});
+    f = null;
+    gc();
+    try {
+      a_squared = g(2);
+      if (a_squared != 9)
+        throw "Unexpected return from g: a_squared == " + a_squared;
+      actual = "PASSED";
+    } catch (e) {
+      actual = "FAILED: " + e;
+    }
+  }
+ 
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_5/extensions/regress-449657.js
@@ -0,0 +1,92 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Christopher Lenz
+ *                 ash_mozilla
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-449657.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 449657;
+var summary = 'JS_SealObject on Arrays';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  if (typeof seal != 'function')
+  {
+    expect = actual = 'JS_SealObject not supported, test skipped.';
+    reportCompare(expect, actual, summary);
+  }
+  else
+  {
+    try
+    {
+      var a= [1, 2, 3];
+      seal(a);
+    }
+    catch(ex)
+    {
+      actual = ex + '';
+    }
+    reportCompare(expect, actual, summary + ': 1');
+
+    expect = 'Error: a.length is read-only';
+    actual = '';
+    try
+    {
+      a = [1,2,3];
+      a[4] = 2;
+      seal(a);
+      a.length = 5;
+    }
+    catch(ex)
+    {
+      actual = ex + '';
+    }
+    reportCompare(expect, actual, summary + ': 2');
+  }
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_5/extensions/regress-469625.js
@@ -0,0 +1,67 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Gary Kwong
+ *                 Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-469625.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 469625;
+var summary = 'TM: Do not crash @ js_String_getelem';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+ 
+  jit(true);
+
+  [].__proto__[0] = 'a';
+  for (var j = 0; j < 3; ++j) [[, ]] = [];
+
+  jit(false);
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_5/extensions/regress-469761.js
@@ -0,0 +1,66 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-469761.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 469761;
+var summary = 'TM: Do not assert: JSVAL_IS_INT(STOBJ_GET_SLOT(callee_obj, JSSLOT_PRIVATE))';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+ 
+  jit(true);
+
+  var o = { __proto__: function(){} };
+  for (var j = 0; j < 3; ++j) { try { o.call(3); } catch (e) { } }
+
+  jit(false);
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100755
--- /dev/null
+++ b/js/tests/js1_5/extensions/regress-472787.js
@@ -0,0 +1,57 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Gary Kwong
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-472787.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 472787;
+var summary = 'Do not hang with gczeal, watch and concat';
+var actual = '';
+var expect = '';
+
+printBugNumber(BUGNUMBER);
+printStatus (summary);
+
+this.__defineSetter__("x", Math.sin);
+this.watch("x", '' .concat);
+
+if (typeof gczeal == 'function')
+{
+  gczeal(2);
+}
+x = 1;
+
+reportCompare(expect, actual, summary);
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_6/Regress/regress-475469.js
@@ -0,0 +1,68 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-475469.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 475469;
+var summary = 'TM: Do not crash @ FramePCOffset';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+//  print('Note this test originally required jit enabled with the environment ');
+//  print('variable TRACEMONKEY=verbose defined. Note that the calls to enable ');
+//  print('jit are necessary for the crash.');
+
+  jit(true);
+  [1,2,3].map(/a/gi);
+  jit(false);
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
+
new file mode 100755
--- /dev/null
+++ b/js/tests/js1_6/extensions/regress-457521.js
@@ -0,0 +1,57 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Gary Kwong
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-457521.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 457521;
+var summary = 'Do not crash @ js_DecompileValueGenerator';
+var actual = '';
+var expect = '';
+
+printBugNumber(BUGNUMBER);
+printStatus (summary);
+
+try
+{
+  this.__defineSetter__("x", [,,,].map);
+  this.watch("x", (new Function("var y, eval")));
+  x = true;
+}
+catch(ex)
+{
+}
+reportCompare(expect, actual, summary);
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_6/extensions/regress-472508.js
@@ -0,0 +1,59 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Gary Kwong
+ *                 Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-472508.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 472508;
+var summary = 'TM: Do not crash @ TraceRecorder::emitTreeCall';
+var actual = '';
+var expect = '';
+
+printBugNumber(BUGNUMBER);
+printStatus (summary);
+
+jit(true);
+ 
+for (var x in this) { }
+var a = [false, false, false];
+a.__defineGetter__("q", function() { });
+a.__defineGetter__("r", function() { });
+for (var i = 0; i < 2; ++i) for each (var e in a) { }
+
+jit(false);
+
+reportCompare(expect, actual, summary);
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_6/extensions/regress-475144.js
@@ -0,0 +1,58 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Gary Kwong
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-475144.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 475144;
+var summary = 'TM: Do not assert: !JS_ON_TRACE(cx)';
+var actual = '';
+var expect = '';
+
+printBugNumber(BUGNUMBER);
+printStatus (summary);
+
+jit(true);
+
+function a() {}
+function b() {}
+function c() {}
+eval("this.__defineGetter__(\"\", function(){ return new Function } )");
+[[].some for each (x in this) for each (y in /x/g)];
+
+jit(false);
+
+reportCompare(expect, actual, summary);
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_7/extensions/regress-469234.js
@@ -0,0 +1,65 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-469234.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 469234;
+var summary = 'TM: Do not assert: !JS_ON_TRACE(cx)';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  jit(true);
+
+  for(var j=0;j<3;++j)({__proto__:[]}).__defineSetter__('x',function(){});
+
+  jit(false);
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_7/extensions/regress-474771-01.js
@@ -0,0 +1,67 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-474771-01.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 474771;
+var summary = 'TM: do not assert: jumpTable == interruptJumpTable';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  jit(true);
+
+  var o = {};
+  o.__defineSetter__('x', function(){});
+  for (let j = 0; j < 4; ++j) o.x = 3;
+
+  jit(false);
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_7/extensions/regress-474771-02.js
@@ -0,0 +1,55 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-474771-02.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 474771;
+var summary = 'TM: do not assert: jumpTable == interruptJumpTable';
+var actual = '';
+var expect = '';
+
+printBugNumber(BUGNUMBER);
+printStatus (summary);
+
+jit(true);
+
+this.__defineSetter__('x', function(){});
+for (var j = 0; j < 5; ++j) { x = 3; }
+
+jit(false);
+
+reportCompare(expect, actual, summary);
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_7/regress/regress-469239-01.js
@@ -0,0 +1,71 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-469239-01.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 469239;
+var summary = 'TM: Do not assert: entry->kpc == (jsbytecode*) atoms[index]';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  jit(true);
+
+  for (let b=0;b<9;++b) {
+    for each (let h in ['', 3, /x/]) {
+	    for each (c in [[], [], [], /x/]) {
+        '' + c;
+	    }
+    }
+  }
+
+  jit(false);
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_7/regress/regress-469239-02.js
@@ -0,0 +1,71 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-469239-02.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 469239;
+var summary = 'TM: Do not assert: ATOM_IS_STRING(atom)';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  jit(true);
+
+  for (let b=0;b<9;++b) {
+    for each (let h in [33, 3, /x/]) {
+	for each (c in [[], [], [], /x/]) {
+	    '' + c;
+	  }
+      }
+  }
+
+  jit(false);
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_7/regress/regress-474771.js
@@ -0,0 +1,73 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-474771.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 474771;
+var summary = 'TM: do not halt execution with gczeal, prototype mangling, for..in';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  expect = 'PASS';
+  jit(true);
+
+  if (typeof gczeal != 'undefined')
+  {
+    gczeal(2);
+  }
+  Object.prototype.q = 3;
+  for each (let x in [6, 7]) { } print(actual = "PASS");
+ 
+  jit(false);
+
+  delete Object.prototype.q;
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/decompilation/regress-346749.js
@@ -0,0 +1,62 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Blake Kaplan
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-346749.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 346749;
+var summary = 'let declarations at function level should turn into var declarations';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  expect = 'function () { var k; }';
+  var f = (function () { let k; });
+  actual = f + '';
+  compareSource(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/decompilation/regress-381963-01.js
@@ -0,0 +1,63 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-381963-01.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 381963;
+var summary = 'Decompilation of genexp in |while|';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  expect = 'function() { while(1, (2 for (x in []))) { break; } }';
+  var f = function() { while(1, (2 for (x in []))) break; };
+  actual = f + '';
+
+  compareSource(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/decompilation/regress-381963-02.js
@@ -0,0 +1,65 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Aiko
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-381963-02.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 381963;
+var summary = 'Decompilation of genexp in |while|';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  expect = 'function f() { while (false) { print(2); } }';
+
+  function f() { while (0 && (b for (x in 3))) print(2) }
+
+  actual = f + '';
+
+  compareSource(expect, actual, summary);
+
+  exitFunc ('test');
+}
deleted file mode 100644
--- a/js/tests/js1_8/extensions/regress-300079.js
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is JavaScript Engine testing utilities.
- *
- * The Initial Developer of the Original Code is
- * Mozilla Foundation.
- * Portions created by the Initial Developer are Copyright (C) 2007
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s): Brendan Eich
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-var gTestfile = 'regress-300079.js';
-//-----------------------------------------------------------------------------
-var BUGNUMBER = 300079;
-var summary = "precompiled functions should inherit from current window's Function.prototype";
-var actual = '';
-var expect = '';
-
-
-//-----------------------------------------------------------------------------
-test();
-//-----------------------------------------------------------------------------
-
-function test()
-{
-  enterFunc ('test');
-  printBugNumber(BUGNUMBER);
-  printStatus (summary);
-
-  if (typeof clone == 'undefined') {
-    expect = 'SKIPPED';
-    actual = 'SKIPPED';
-  }
-  else {
-    expect = 'PASSED';
-
-    f = eval("(function (a) function () a * a)()");
-    g = clone(f, {a: 3});
-    f = null;
-    gc();
-    try {
-      a_squared = g(2);
-      if (a_squared != 9)
-        throw "Unexpected return from g: a_squared == " + a_squared;
-      actual = "PASSED";
-    } catch (e) {
-      actual = "FAILED: " + e;
-    }
-  }
- 
-  reportCompare(expect, actual, summary);
-
-  exitFunc ('test');
-}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/extensions/regress-469625.js
@@ -0,0 +1,75 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jason Orendorff
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-469625.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 469625;
+var summary = 'TM: Array prototype and expression closures';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+ 
+  expect = 'TypeError: [] is not a function';
+
+  jit(true);
+
+  Array.prototype.__proto__ = function () 3; 
+
+  try
+  {
+    [].__proto__();
+  }
+  catch(ex)
+  {
+    print(actual = ex + '');
+  }
+  jit(false);
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/extensions/regress-472450-03.js
@@ -0,0 +1,67 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Gary Kwong
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-472450-03.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 472450;
+var summary = 'TM: Do not assert: StackBase(fp) + blockDepth == regs.sp';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+ 
+  jit(true);
+
+  ({__proto__: #1=[#1#]})
+    for (var y = 0; y < 3; ++y) { for each (let z in ['', function(){}]) { let x =
+                                               1, c = []; } }
+
+  jit(false);
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/extensions/regress-472450-04.js
@@ -0,0 +1,69 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Gary Kwong
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-472450-04.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 472450;
+var summary = 'TM: Do not assert: StackBase(fp) + blockDepth == regs.sp';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+ 
+  jit(true);
+
+  ({__proto__: #1=[#1#]});
+  function f(){ 
+    eval("for (var y = 0; y < 1; ++y) { for each (let z in [null, function(){}, null, '', null, '', null]) { let x = 1, c = []; } }"); 
+  }
+  f();
+
+  jit(false);
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
--- a/js/tests/js1_8/genexps/regress-380237-01.js
+++ b/js/tests/js1_8/genexps/regress-380237-01.js
@@ -220,13 +220,15 @@ function search(values) {
     let s = a[0].slice(-2)
 
     return some(search(assign(values.copy(), s, d)) for (d in values[s]))
 }
 
 hard = '4.....8.5.3..........7......2.....6.....8.4......1.......6.3.7.5..2.....1.4......'
 
 print_board(search(parse_grid(hard)))
+
+  delete Object.prototype.copy;
  
   reportCompare(expect, actual, summary);
 
   exitFunc ('test');
 }
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-384758.js
@@ -0,0 +1,69 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-384758.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 384758;
+var summary = 'Statement can not follow expression closure with out intervening ;';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  expect = 'SyntaxError: missing ; before statement';
+  try
+  {
+    eval('(function() { if(t) function x() foo() bar(); })');
+  }
+  catch(ex)
+  {
+    actual = ex + '';
+  }
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-464092-01.js
@@ -0,0 +1,61 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-464092-01.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 464092;
+var summary = 'Do not assert: OBJ_IS_CLONED_BLOCK(obj)';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  let (a) 'b'.replace(/b/g, function() { c = this; }); c.d = 3; c.d;
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-464092-02.js
@@ -0,0 +1,68 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-464092-02.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 464092;
+var summary = 'Censor block objects';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  try
+  {
+    let (a) 'b'.replace(/b/g, function() c = this );
+  }
+  catch(ex)
+  {
+    actual = ex + '';
+  }
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-464096.js
@@ -0,0 +1,67 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-464096.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 464096;
+var summary = 'TM: Do not assert: tm->recoveryDoublePoolPtr > tm->recoveryDoublePool';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  jit(true);
+
+  for (let f in [1,1]);
+  Object.prototype.__defineGetter__('x', function() gc());
+  (function() { for each (let j in [1,1,1,1,1]) { var y = .2; } })();
+
+  jit(false);
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-465567-01.js
@@ -0,0 +1,64 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-465567-01.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 465567;
+var summary = 'TM: Weirdness with var, let, multiple assignments';
+var actual = '';
+var expect = '';
+
+printBugNumber(BUGNUMBER);
+printStatus (summary);
+
+expect = '99999';
+
+jit(true);
+
+for (let j = 0; j < 5; ++j) {
+  e = 9;
+  print(actual += '' + e);
+  e = 47;
+  if (e & 0) {
+    var e;
+    let e;
+  }
+}
+
+jit(false);
+
+reportCompare(expect, actual, summary);
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-465567-02.js
@@ -0,0 +1,54 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-465567-02.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 465567;
+var summary = 'TM: Do not assert: JSVAL_TAG(v) == JSVAL_OBJECT';
+var actual = '';
+var expect = '';
+
+printBugNumber(BUGNUMBER);
+printStatus (summary);
+
+jit(true);
+
+for each (e in ['', true, 1, true, 1]) { e = null; if (0) { let e; var e; } }
+
+jit(false);
+
+reportCompare(expect, actual, summary);
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-467495-01.js
@@ -0,0 +1,61 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Gary Kwong
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-467495-01.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 467495;
+var summary = 'Do not crash @ js_Interpret';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  (function() { x = 0; function x() 4; var x; const y = 1; })();
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-467495-02.js
@@ -0,0 +1,67 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Gary Kwong
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-467495-02.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 467495;
+var summary = 'Do not crash @ js_Interpret';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  try
+  {
+    eval("(function(){const y = 1; function x() '' let functional, x})();");
+  }
+  catch(ex)
+  {
+  }
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-467495-03.js
@@ -0,0 +1,80 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Brendan Eich
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-467495-03.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 467495;
+var summary = 'TCF_FUN_CLOSURE_VS_VAR is necessary';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  function f(x)
+  {
+    actual = '';
+    var g;
+    print(actual += typeof g + ',');
+
+    if (x)
+      function g(){};
+
+    print(actual += g);
+  }
+
+  expect = 'undefined,undefined';
+  f(0);
+
+  reportCompare(expect, actual, summary + ': f(0): ');
+
+  expect = 'undefined,function g() {\n}';
+
+  f(1);
+
+  reportCompare(expect, actual, summary + ': f(1): ');
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-467495-04.js
@@ -0,0 +1,75 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Igor Bukanov
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-467495-04.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 467495;
+var summary = 'TCF_FUN_CLOSURE_VS_VAR is necessary';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  function g() {
+    if (1)
+      function x() {};
+    var x;
+    const y = 1;
+  }
+
+  try
+  {
+    g();
+  }
+  catch(ex)
+  {
+    actual = ex + '';
+  }
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-467495-05.js
@@ -0,0 +1,64 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Igor Bukanov
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-467495-05.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 467495;
+var summary = 'TCF_FUN_CLOSURE_VS_VAR is necessary';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  expect = 'function x() {\n}';
+
+  function g(x) { if (1) function x() {} return x; }
+  print(actual = g(1) + '');
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-467495-06.js
@@ -0,0 +1,77 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Igor Bukanov
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-467495-06.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 467495;
+var summary = 'TCF_FUN_CLOSURE_VS_VAR is necessary';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  function f(x)
+  {
+    var y = 1;
+    if (Math)
+      function x() { }
+    if (Math)
+      function y() { }
+    return [x, y];
+  }
+
+  var r = f(0);
+
+  if (typeof(r[0]) != "function")
+    actual += "Bad r[0]";
+
+  if (typeof(r[1]) != "function")
+    throw "Bad r[1]";
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-468711.js
@@ -0,0 +1,65 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Jesse Ruderman
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-468711.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 468711;
+var summary = 'TM: Do not assert: !JS_ON_TRACE(cx)';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  jit(true);
+
+  (5).toString(); for each (let b in [3, this]) { b.toString(); }
+
+  jit(false);
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-472450-01.js
@@ -0,0 +1,66 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Gary Kwong
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-472450-01.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 472450;
+var summary = 'TM: Do not assert: StackBase(fp) + blockDepth == regs.sp';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+ 
+  jit(true);
+
+  for each (let x in [function(){}, {}, {}, function(){}, function(){},
+                      function(){}]) { ([<y/> for (y in x)]); }
+
+  jit(false);
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-472450-02.js
@@ -0,0 +1,66 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Gary Kwong
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-472450-02.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 472450;
+var summary = 'TM: Do not assert: StackBase(fp) + blockDepth == regs.sp';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+ 
+  jit(true);
+
+  for each (let x in [function(){}, {}, {}, function(){}, function(){}]) { ([<y/>
+                                                          for (y in x)]); }
+
+  jit(false);
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
new file mode 100755
--- /dev/null
+++ b/js/tests/js1_8/regress/regress-479353.js
@@ -0,0 +1,56 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Gary Kwong
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-479353.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 479353;
+var summary = 'Do not assert: (uint32)(index_) < atoms_->length';
+var actual = '';
+var expect = '';
+
+printBugNumber(BUGNUMBER);
+printStatus (summary);
+ 
+function f(code)
+{
+  (eval("(function(){" + code + "});"))();
+}
+x = <z/>;
+f("y = this;");
+f("x, y; for each (let x in [arguments]) {}");
+
+reportCompare(expect, actual, summary);
new file mode 100644
--- /dev/null
+++ b/js/tests/js1_8_1/trace/regress-451673.js
@@ -0,0 +1,116 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is JavaScript Engine testing utilities.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Boris Zbarsky
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+var gTestfile = 'regress-451673.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 451673;
+var summary = 'TM: Tracing prime number generation';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+  enterFunc ('test');
+  printBugNumber(BUGNUMBER);
+  printStatus (summary);
+
+  function doTest(enablejit)
+  {
+    if (enablejit)
+      jit(true);
+    else
+      jit(false);
+
+    var n = 1000000;
+    var start = new Date();
+    var i=0;
+    var j=0;
+    var numprimes=0;
+    var limit=0;
+    numprimes = 1; // 2 is prime
+    var mceil = Math.floor;
+    var msqrt = Math.sqrt;
+    var isPrime = 1;
+
+    for (i = 3; i<= n; i+=2)
+    {
+	    isPrime=1;
+	    limit = mceil(msqrt(i)+1) + 1;
+
+	    for (j = 3; j < limit; j+=2)
+      {
+		    if (i % j == 0)
+        {
+			    isPrime = 0;
+			    break;
+        }
+      }
+
+	    if (isPrime)
+      {
+		    numprimes ++;
+      }
+    }
+
+    var end = new Date();
+
+    var timetaken = end - start;
+    timetaken = timetaken / 1000;
+
+    if (enablejit)
+      jit(false);
+
+    print((enablejit ? '    JIT' : 'Non-JIT') + ": Number of primes up to: " + n + " is " + numprimes + ", counted in " + timetaken + " secs.");
+
+    return timetaken;
+  }
+
+  var timenonjit = doTest(false);
+  var timejit    = doTest(true);
+
+  expect = true;
+  actual = timejit < timenonjit/4;
+
+  reportCompare(expect, actual, summary);
+
+  exitFunc ('test');
+}
--- a/js/tests/js1_8_1/trace/trace-test.js
+++ b/js/tests/js1_8_1/trace/trace-test.js
@@ -1727,17 +1727,17 @@ function testNestedExitStackOuter() {
     }
   }
   return counter;
 }
 testNestedExitStackOuter.expected = 81;
 testNestedExitStackOuter.jitstats = {
 recorderStarted: 5,
 recorderAborted: 2,
-traceTriggered: 9
+traceTriggered: 11
 };
 test(testNestedExitStackOuter);
 
 function testHOTLOOPSize() {
   return HOTLOOP > 1;
 }
 testHOTLOOPSize.expected = true;
 test(testHOTLOOPSize);
@@ -2575,30 +2575,30 @@ function testMulOverflow() {
 }
 testMulOverflow.expected = "-1073741824,-1073741824,-1073741824,-1073741824,-1073741824";
 test(testMulOverflow);
 
 function testThinLoopDemote() {
   function f()
   {
     var k = 1;
-    for (var n = 0; n < 2; n++) {
+    for (var n = 0; n < 4; n++) {
       k = (k * 10);
     }
     return k;
   }
   f();
   return f();
 }
-testThinLoopDemote.expected = 100;
+testThinLoopDemote.expected = 10000;
 testThinLoopDemote.jitstats = {
 recorderStarted: 2,
 recorderAborted: 0,
 traceCompleted: 2,
-traceTriggered: 1,
+traceTriggered: 3,
 unstableLoopVariable: 1
 };
 test(testThinLoopDemote);
 
 var global = this;
 function testWeirdDateParseOuter()
 {
   var vDateParts = ["11", "17", "2008"];
@@ -2637,17 +2637,17 @@ function testWeirdDateParse() {
 }
 testWeirdDateParse.expected = "11,17,2008,11,17,2008,11,17,2008,11,17,2008,11,17,2008";
 testWeirdDateParse.jitstats = {
 recorderStarted: 7,
 recorderAborted: 1,
 traceCompleted: 6,
 traceTriggered: 14,
 unstableLoopVariable: 3,
-noCompatInnerTrees: 0
+noCompatInnerTrees: 1
 };
 test(testWeirdDateParse);
 
 function testUndemotableBinaryOp() {
   var out = [];
   for (let j = 0; j < 5; ++j) { out.push(6 - ((void 0) ^ 0x80000005)); }
   return out.join(",");
 }
@@ -4406,16 +4406,130 @@ function testGeneratorDeepBail() {
     for (let i = 0; i < iterables.length; i++)
         for each (let j in iterables[i])
                      total += j;
     return total;
 }
 testGeneratorDeepBail.expected = 3;
 test(testGeneratorDeepBail);
 
+function testRegexpGet() {
+    var re = /hi/;
+    var a = [];
+    for (let i = 0; i < 5; ++i)
+        a.push(re.source);
+    return a.toString();
+}
+testRegexpGet.expected = "hi,hi,hi,hi,hi";
+test(testRegexpGet);
+
+function testThrowingObjectEqUndefined()
+{
+  try
+  {
+    var obj = { toString: function() { throw 0; } };
+    for (var i = 0; i < 5; i++)
+      "" + (obj == undefined);
+    return i === 5;
+  }
+  catch (e)
+  {
+    return "" + e;
+  }
+}
+testThrowingObjectEqUndefined.expected = true;
+testThrowingObjectEqUndefined.jitstats = {
+  sideExitIntoInterpreter: 1
+};
+test(testThrowingObjectEqUndefined);
+
+function x4(v) { return "" + v + v + v + v; }
+function testConvertibleObjectEqUndefined()
+{
+  var compares =
+    [
+     false, false, false, false,
+     undefined, undefined, undefined, undefined,
+     false, false, false, false,
+     undefined, undefined, undefined, undefined,
+     false, false, false, false,
+     undefined, undefined, undefined, undefined,
+     false, false, false, false,
+     undefined, undefined, undefined, undefined,
+     false, false, false, false,
+     undefined, undefined, undefined, undefined,
+    ];
+  var count = 0;
+  var obj = { valueOf: function() { count++; return 1; } };
+  var results = compares.map(function(v) { return "unwritten"; });
+
+  for (var i = 0, sz = compares.length; i < sz; i++)
+    results[i] = compares[i] == obj;
+
+  return results.join("") + count;
+}
+testConvertibleObjectEqUndefined.expected =
+  x4(false) + x4(false) + x4(false) + x4(false) + x4(false) + x4(false) +
+  x4(false) + x4(false) + x4(false) + x4(false) + "20";
+testConvertibleObjectEqUndefined.jitstats = {
+  sideExitIntoInterpreter: 3
+};
+test(testConvertibleObjectEqUndefined);
+
+function testUndefinedPropertyAccess() {
+    var x = [1,2,3];
+    var y = {};
+    var a = { foo: 1 };
+    y.__proto__ = x;
+    var z = [x, x, x, y, y, y, y, a, a, a];
+    var s = "";
+    for (var i = 0; i < z.length; ++i)
+        s += z[i].foo;
+    return s;
+}
+testUndefinedPropertyAccess.expected = "undefinedundefinedundefinedundefinedundefinedundefinedundefined111";
+testUndefinedPropertyAccess.jitstats = {
+    traceCompleted: 3
+};
+test(testUndefinedPropertyAccess);
+
+q = "";
+function g() { q += "g"; }
+function h() { q += "h"; }
+a = [g, g, g, g, h];
+for (i=0; i<5; i++) { f = a[i];  f(); }
+
+function testRebranding() {
+    return q;
+}
+testRebranding.expected = "ggggh";
+test(testRebranding);
+delete q;
+delete g;
+delete h;
+delete a;
+delete f;
+
+function testLambdaCtor() {
+    var a = [];
+    for (var x = 0; x < RUNLOOP; ++x) {
+        var f = function(){};
+        a[a.length] = new f;
+    }
+
+    // This prints false until the upvar2 bug is fixed:
+    // print(a[HOTLOOP].__proto__ !== a[HOTLOOP-1].__proto__);
+
+    // Assert that the last f was properly constructed.
+    return a[RUNLOOP-1].__proto__ === f.prototype;
+}
+
+testLambdaCtor.expected = true;
+test(testLambdaCtor);
+
 /*****************************************************************************
  *                                                                           *
  *  _____ _   _  _____ ______ _____ _______                                  *
  * |_   _| \ | |/ ____|  ____|  __ \__   __|                                 *
  *   | | |  \| | (___ | |__  | |__) | | |                                    *
  *   | | | . ` |\___ \|  __| |  _  /  | |                                    *
  *  _| |_| |\  |____) | |____| | \ \  | |                                    *
  * |_____|_| \_|_____/|______|_|  \_\ |_|                                    *
--- a/js/tests/public-failures.txt
+++ b/js/tests/public-failures.txt
@@ -8,50 +8,43 @@ TEST_ID=e4x/Expressions/11.1.4-08.js, TE
 TEST_ID=e4x/Expressions/11.1.4-08.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 53 of test - 11.1.4 - XML Initializer - {} Expressions - 08 reason: Expected value 'true', Actual value 'false'
 TEST_ID=e4x/Expressions/11.1.4-08.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 54 of test - 11.1.4 - XML Initializer - {} Expressions - 08 reason: Expected value 'true', Actual value 'false'
 TEST_ID=e4x/Expressions/11.1.4-08.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 56 of test - 11.1.4 - XML Initializer - {} Expressions - 08 reason: Expected value 'true', Actual value 'false'
 TEST_ID=e4x/Expressions/11.1.4-08.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 50 of test - 11.1.4 - XML Initializer - {} Expressions - 08 reason: Expected value 'true', Actual value 'false'
 TEST_ID=e4x/Expressions/11.1.4-08.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 51 of test - 11.1.4 - XML Initializer - {} Expressions - 08 reason: Expected value 'true', Actual value 'false'
 TEST_ID=e4x/Expressions/11.1.4-08.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 53 of test - 11.1.4 - XML Initializer - {} Expressions - 08 reason: Expected value 'true', Actual value 'false'
 TEST_ID=e4x/Expressions/11.1.4-08.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 54 of test - 11.1.4 - XML Initializer - {} Expressions - 08 reason: Expected value 'true', Actual value 'false'
 TEST_ID=e4x/Expressions/11.1.4-08.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 56 of test - 11.1.4 - XML Initializer - {} Expressions - 08 reason: Expected value 'true', Actual value 'false'
-TEST_ID=e4x/Expressions/11.2.2.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 14 of test - 11.2.2 - Function Calls reason: Expected value '<alpha>NL  <name>Foo</name>NL  <length>Bar</length>NL</alpha>', Actual value ''
+TEST_ID=e4x/Expressions/11.2.2.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 14 of test - 11.2.2 - Function Calls reason: Expected value '<alpha>NL  <name>Foo</name>NL  <length>Bar</length>NL</alpha>', Actual value ''
 TEST_ID=e4x/Expressions/11.2.2.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 14 of test - 11.2.2 - Function Calls reason: Expected value '<alpha>NL  <name>Foo</name>NL  <length>Bar</length>NL</alpha>', Actual value ''
-TEST_ID=e4x/Expressions/11.2.4.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 1 of test - 11.2.4 - XML Filtering Predicate Operator reason: Expected value '<employee id="0">NL  <name>John</name>NL  <age>20</age>NL</employee>', Actual value ''
-TEST_ID=e4x/Expressions/11.2.4.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 2 of test - 11.2.4 - XML Filtering Predicate Operator reason: Expected value '<employee id="0">NL  <name>John</name>NL  <age>20</age>NL</employee>', Actual value ''
+TEST_ID=e4x/Expressions/11.2.4.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 1 of test - 11.2.4 - XML Filtering Predicate Operator reason: Expected value '<employee id="0">NL  <name>John</name>NL  <age>20</age>NL</employee>', Actual value ''
+TEST_ID=e4x/Expressions/11.2.4.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 2 of test - 11.2.4 - XML Filtering Predicate Operator reason: Expected value '<employee id="0">NL  <name>John</name>NL  <age>20</age>NL</employee>', Actual value ''
 TEST_ID=e4x/Expressions/11.2.4.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 1 of test - 11.2.4 - XML Filtering Predicate Operator reason: Expected value '<employee id="0">NL  <name>John</name>NL  <age>20</age>NL</employee>', Actual value ''
 TEST_ID=e4x/Expressions/11.2.4.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 2 of test - 11.2.4 - XML Filtering Predicate Operator reason: Expected value '<employee id="0">NL  <name>John</name>NL  <age>20</age>NL</employee>', Actual value ''
-TEST_ID=e4x/GC/regress-324278.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=e4x/GC/regress-324278.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=e4x/GC/regress-324278.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=e4x/GC/regress-324278.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=e4x/GC/regress-324278.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/e4x/GC/regress-324278.js:`.``*`: out of memory
 TEST_ID=e4x/GC/regress-324278.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/e4x/GC/regress-324278.js:`.``*`: out of memory
 TEST_ID=e4x/GC/regress-324278.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/e4x/GC/regress-324278.js:`.``*`: out of memory
+TEST_ID=e4x/GC/regress-324278.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=; messages: BUGNUMBER: 324278; N = 1000000; preparing...; ./e4x/GC/regress-324278.js:`.``*`: out of memory
 TEST_ID=e4x/Global/13.1.2.1.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 4 of test - 13.1.2.1 - isXMLName() reason: Expected value 'exception', Actual value 'no exception'
 TEST_ID=e4x/Global/13.1.2.1.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 6 of test - 13.1.2.1 - isXMLName() reason: Expected value '', Actual value '0xAA-0xAA : Invalid char accepted as start : Invalid Char accepted as other NL0xB5-0xB5 : Invalid char accepted as start : Invalid Char accepted as other NL0xB7-0xB7 : Other char not acceptedNL0xBA-0xBA : Invalid char accepted as start : Invalid Char accepted as other NL0x132-0x133 : Invalid char accepted as start : Invalid Char accepted as other NL0x13F-0x140 : Invalid char accepted as start : Invalid Char accepted as other NL0x149-0x149 : Invalid char accepted as start : Invalid Char accepted as other NL0x17F-0x17F : Invalid char accepted as start : Invalid Char accepted as other NL0x1C4-0x1CC : Invalid char accepted as start : Invalid Char accepted as other NL0x1F1-0x1F3 : Invalid char accepted as start : Invalid Char accepted as other NL0x2B0-0x2B8 : Invalid Char accepted as other NL0x2BB-0x2C1 : Start char not acceptedNL0x2E0-0x2E4 : Invalid Char accepted as other NL0x37A-0x37A : Invalid Char accepted as other NL0x387-0x387 : Other char not acceptedNL0x559-0x559 : Start char not acceptedNL0x587-0x587 : Invalid char accepted as start : Invalid Char accepted as other NL0x6E5-0x6E6 : Start char not acceptedNL0xEDC-0xEDD : Invalid char accepted as start : Invalid Char accepted as other NL0x1101-0x1101 : Invalid char accepted as start : Invalid Char accepted as other NL0x1104-0x1104 : Invalid char accepted as start : Invalid Char accepted as other NL0x1108-0x1108 : Invalid char accepted as start : Invalid Char accepted as other NL0x110A-0x110A : Invalid char accepted as start : Invalid Char accepted as other NL0x110D-0x110D : Invalid char accepted as start : Invalid Char accepted as other NL0x1113-0x113B : Invalid char accepted as start : Invalid Char accepted as other NL0x113D-0x113D : Invalid char accepted as start : Invalid Char accepted as other NL0x113F-0x113F : Invalid char accepted as start : Invalid Char accepted as other NL0x1141-0x114B : Invalid char accepted as start : Invalid Char accepted as other NL0x114D-0x114D : Invalid char accepted as start : Invalid Char accepted as other NL0x114F-0x114F : Invalid char accepted as start : Invalid Char accepted as other NL0x1151-0x1153 : Invalid char accepted as start : Invalid Char accepted as other NL0x1156-0x1158 : Invalid char accepted as start : Invalid Char accepted as other NL0x1162-0x1162 : Invalid char accepted as start : Invalid Char accepted as other NL0x1164-0x1164 : Invalid char accepted as start : Invalid Char accepted as other NL0x1166-0x1166 : Invalid char accepted as start : Invalid Char accepted as other NL0x1168-0x1168 : Invalid char accepted as start : Invalid Char accepted as other NL0x116A-0x116C : Invalid char accepted as start : Invalid Char accepted as other NL0x116F-0x1171 : Invalid char accepted as start : Invalid Char accepted as other NL0x1174-0x1174 : Invalid char accepted as start : Invalid Char accepted as other NL0x1176-0x119D : Invalid char accepted as start : Invalid Char accepted as other NL0x119F-0x11A2 : Invalid char accepted as start : Invalid Char accepted as other NL0x11A9-0x11AA : Invalid char accepted as start : Invalid Char accepted as other NL0x11AC-0x11AD : Invalid char accepted as start : Invalid Char accepted as other NL0x11B0-0x11B6 : Invalid char accepted as start : Invalid Char accepted as other NL0x11B9-0x11B9 : Invalid char accepted as start : Invalid Char accepted as other NL0x11BB-0x11BB : Invalid char accepted as start : Invalid Char accepted as other NL0x11C3-0x11EA : Invalid char accepted as start : Invalid Char accepted as other NL0x11EC-0x11EF : Invalid char accepted as start : Invalid Char accepted as other NL0x11F1-0x11F8 : Invalid char accepted as start : Invalid Char accepted as other NL0x207F-0x207F : Invalid char accepted as start : Invalid Char accepted as other NL0x20DD-0x20E0 : Invalid Char accepted as other NL0x2102-0x2102 : Invalid char accepted as start : Invalid Char accepted as other NL0x2107-0x2107 : Invalid char accepted as start : Invalid Char accepted as other NL0x210A-0x2113 : Invalid char accepted as start : Invalid Char accepted as other NL0x2115-0x2115 : Invalid char accepted as start : Invalid Char accepted as other NL0x2118-0x211D : Invalid char accepted as start : Invalid Char accepted as other NL0x2124-0x2124 : Invalid char accepted as start : Invalid Char accepted as other NL0x2128-0x2128 : Invalid char accepted as start : Invalid Char accepted as other NL0x212C-0x212D : Invalid char accepted as start : Invalid Char accepted as other NL0x212F-0x2131 : Invalid char accepted as start : Invalid Char accepted as other NL0x2133-0x2138 : Invalid char accepted as start : Invalid Char accepted as other NL0x2160-0x217F : Invalid char accepted as start : Invalid Char accepted as other NL0x309B-0x309C : Invalid Char accepted as other NL0x3131-0x318E : Invalid char accepted as start : Invalid Char accepted as other NL0xF900-0xFA2D : Invalid char accepted as start : Invalid Char accepted as other NL0xFB00-0xFB06 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB13-0xFB17 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB1E-0xFB1E : Invalid Char accepted as other NL0xFB1F-0xFB28 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB2A-0xFB36 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB38-0xFB3C : Invalid char accepted as start : Invalid Char accepted as other NL0xFB3E-0xFB3E : Invalid char accepted as start : Invalid Char accepted as other NL0xFB40-0xFB41 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB43-0xFB44 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB46-0xFBB1 : Invalid char accepted as start : Invalid Char accepted as other NL0xFBD3-0xFD3D : Invalid char accepted as start : Invalid Char accepted as other NL0xFD50-0xFD8F : Invalid char accepted as start : Invalid Char accepted as other NL0xFD92-0xFDC7 : Invalid char accepted as start : Invalid Char accepted as other NL0xFDF0-0xFDFB : Invalid char accepted as start : Invalid Char accepted as other NL0xFE20-0xFE23 : Invalid Char accepted as other NL0xFE70-0xFE72 : Invalid char accepted as start : Invalid Char accepted as other NL0xFE74-0xFE74 : Invalid char accepted as start : Invalid Char accepted as other NL0xFE76-0xFEFC : Invalid char accepted as start : Invalid Char accepted as other NL0xFF10-0xFF19 : Invalid Char accepted as other NL0xFF21-0xFF3A : Invalid char accepted as start : Invalid Char accepted as other NL0xFF41-0xFF5A : Invalid char accepted as start : Invalid Char accepted as other NL0xFF66-0xFF6F : Invalid char accepted as start : Invalid Char accepted as other NL0xFF70-0xFF70 : Invalid Char accepted as other NL0xFF71-0xFF9D : Invalid char accepted as start : Invalid Char accepted as other NL0xFF9E-0xFF9F : Invalid Char accepted as other NL0xFFA0-0xFFBE : Invalid char accepted as start : Invalid Char accepted as other NL0xFFC2-0xFFC7 : Invalid char accepted as start : Invalid Char accepted as other NL0xFFCA-0xFFCF : Invalid char accepted as start : Invalid Char accepted as other NL0xFFD2-0xFFD7 : Invalid char accepted as start : Invalid Char accepted as other NL0xFFDA-0xFFDC : Invalid char accepted as start : Invalid Char accepted as other NL'
 TEST_ID=e4x/Global/13.1.2.1.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 4 of test - 13.1.2.1 - isXMLName() reason: Expected value 'exception', Actual value 'no exception'
 TEST_ID=e4x/Global/13.1.2.1.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 6 of test - 13.1.2.1 - isXMLName() reason: Expected value '', Actual value '0xAA-0xAA : Invalid char accepted as start : Invalid Char accepted as other NL0xB5-0xB5 : Invalid char accepted as start : Invalid Char accepted as other NL0xB7-0xB7 : Other char not acceptedNL0xBA-0xBA : Invalid char accepted as start : Invalid Char accepted as other NL0x132-0x133 : Invalid char accepted as start : Invalid Char accepted as other NL0x13F-0x140 : Invalid char accepted as start : Invalid Char accepted as other NL0x149-0x149 : Invalid char accepted as start : Invalid Char accepted as other NL0x17F-0x17F : Invalid char accepted as start : Invalid Char accepted as other NL0x1C4-0x1CC : Invalid char accepted as start : Invalid Char accepted as other NL0x1F1-0x1F3 : Invalid char accepted as start : Invalid Char accepted as other NL0x2B0-0x2B8 : Invalid Char accepted as other NL0x2BB-0x2C1 : Start char not acceptedNL0x2E0-0x2E4 : Invalid Char accepted as other NL0x37A-0x37A : Invalid Char accepted as other NL0x387-0x387 : Other char not acceptedNL0x559-0x559 : Start char not acceptedNL0x587-0x587 : Invalid char accepted as start : Invalid Char accepted as other NL0x6E5-0x6E6 : Start char not acceptedNL0xEDC-0xEDD : Invalid char accepted as start : Invalid Char accepted as other NL0x1101-0x1101 : Invalid char accepted as start : Invalid Char accepted as other NL0x1104-0x1104 : Invalid char accepted as start : Invalid Char accepted as other NL0x1108-0x1108 : Invalid char accepted as start : Invalid Char accepted as other NL0x110A-0x110A : Invalid char accepted as start : Invalid Char accepted as other NL0x110D-0x110D : Invalid char accepted as start : Invalid Char accepted as other NL0x1113-0x113B : Invalid char accepted as start : Invalid Char accepted as other NL0x113D-0x113D : Invalid char accepted as start : Invalid Char accepted as other NL0x113F-0x113F : Invalid char accepted as start : Invalid Char accepted as other NL0x1141-0x114B : Invalid char accepted as start : Invalid Char accepted as other NL0x114D-0x114D : Invalid char accepted as start : Invalid Char accepted as other NL0x114F-0x114F : Invalid char accepted as start : Invalid Char accepted as other NL0x1151-0x1153 : Invalid char accepted as start : Invalid Char accepted as other NL0x1156-0x1158 : Invalid char accepted as start : Invalid Char accepted as other NL0x1162-0x1162 : Invalid char accepted as start : Invalid Char accepted as other NL0x1164-0x1164 : Invalid char accepted as start : Invalid Char accepted as other NL0x1166-0x1166 : Invalid char accepted as start : Invalid Char accepted as other NL0x1168-0x1168 : Invalid char accepted as start : Invalid Char accepted as other NL0x116A-0x116C : Invalid char accepted as start : Invalid Char accepted as other NL0x116F-0x1171 : Invalid char accepted as start : Invalid Char accepted as other NL0x1174-0x1174 : Invalid char accepted as start : Invalid Char accepted as other NL0x1176-0x119D : Invalid char accepted as start : Invalid Char accepted as other NL0x119F-0x11A2 : Invalid char accepted as start : Invalid Char accepted as other NL0x11A9-0x11AA : Invalid char accepted as start : Invalid Char accepted as other NL0x11AC-0x11AD : Invalid char accepted as start : Invalid Char accepted as other NL0x11B0-0x11B6 : Invalid char accepted as start : Invalid Char accepted as other NL0x11B9-0x11B9 : Invalid char accepted as start : Invalid Char accepted as other NL0x11BB-0x11BB : Invalid char accepted as start : Invalid Char accepted as other NL0x11C3-0x11EA : Invalid char accepted as start : Invalid Char accepted as other NL0x11EC-0x11EF : Invalid char accepted as start : Invalid Char accepted as other NL0x11F1-0x11F8 : Invalid char accepted as start : Invalid Char accepted as other NL0x207F-0x207F : Invalid char accepted as start : Invalid Char accepted as other NL0x20DD-0x20E0 : Invalid Char accepted as other NL0x2102-0x2102 : Invalid char accepted as start : Invalid Char accepted as other NL0x2107-0x2107 : Invalid char accepted as start : Invalid Char accepted as other NL0x210A-0x2113 : Invalid char accepted as start : Invalid Char accepted as other NL0x2115-0x2115 : Invalid char accepted as start : Invalid Char accepted as other NL0x2118-0x211D : Invalid char accepted as start : Invalid Char accepted as other NL0x2124-0x2124 : Invalid char accepted as start : Invalid Char accepted as other NL0x2128-0x2128 : Invalid char accepted as start : Invalid Char accepted as other NL0x212C-0x212D : Invalid char accepted as start : Invalid Char accepted as other NL0x212F-0x2131 : Invalid char accepted as start : Invalid Char accepted as other NL0x2133-0x2138 : Invalid char accepted as start : Invalid Char accepted as other NL0x2160-0x217F : Invalid char accepted as start : Invalid Char accepted as other NL0x309B-0x309C : Invalid Char accepted as other NL0x3131-0x318E : Invalid char accepted as start : Invalid Char accepted as other NL0xF900-0xFA2D : Invalid char accepted as start : Invalid Char accepted as other NL0xFB00-0xFB06 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB13-0xFB17 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB1E-0xFB1E : Invalid Char accepted as other NL0xFB1F-0xFB28 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB2A-0xFB36 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB38-0xFB3C : Invalid char accepted as start : Invalid Char accepted as other NL0xFB3E-0xFB3E : Invalid char accepted as start : Invalid Char accepted as other NL0xFB40-0xFB41 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB43-0xFB44 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB46-0xFBB1 : Invalid char accepted as start : Invalid Char accepted as other NL0xFBD3-0xFD3D : Invalid char accepted as start : Invalid Char accepted as other NL0xFD50-0xFD8F : Invalid char accepted as start : Invalid Char accepted as other NL0xFD92-0xFDC7 : Invalid char accepted as start : Invalid Char accepted as other NL0xFDF0-0xFDFB : Invalid char accepted as start : Invalid Char accepted as other NL0xFE20-0xFE23 : Invalid Char accepted as other NL0xFE70-0xFE72 : Invalid char accepted as start : Invalid Char accepted as other NL0xFE74-0xFE74 : Invalid char accepted as start : Invalid Char accepted as other NL0xFE76-0xFEFC : Invalid char accepted as start : Invalid Char accepted as other NL0xFF10-0xFF19 : Invalid Char accepted as other NL0xFF21-0xFF3A : Invalid char accepted as start : Invalid Char accepted as other NL0xFF41-0xFF5A : Invalid char accepted as start : Invalid Char accepted as other NL0xFF66-0xFF6F : Invalid char accepted as start : Invalid Char accepted as other NL0xFF70-0xFF70 : Invalid Char accepted as other NL0xFF71-0xFF9D : Invalid char accepted as start : Invalid Char accepted as other NL0xFF9E-0xFF9F : Invalid Char accepted as other NL0xFFA0-0xFFBE : Invalid char accepted as start : Invalid Char accepted as other NL0xFFC2-0xFFC7 : Invalid char accepted as start : Invalid Char accepted as other NL0xFFCA-0xFFCF : Invalid char accepted as start : Invalid Char accepted as other NL0xFFD2-0xFFD7 : Invalid char accepted as start : Invalid Char accepted as other NL0xFFDA-0xFFDC : Invalid char accepted as start : Invalid Char accepted as other NL'
 TEST_ID=e4x/Global/13.1.2.1.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 4 of test - 13.1.2.1 - isXMLName() reason: Expected value 'exception', Actual value 'no exception'
 TEST_ID=e4x/Global/13.1.2.1.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 6 of test - 13.1.2.1 - isXMLName() reason: Expected value '', Actual value '0xAA-0xAA : Invalid char accepted as start : Invalid Char accepted as other NL0xB5-0xB5 : Invalid char accepted as start : Invalid Char accepted as other NL0xB7-0xB7 : Other char not acceptedNL0xBA-0xBA : Invalid char accepted as start : Invalid Char accepted as other NL0x132-0x133 : Invalid char accepted as start : Invalid Char accepted as other NL0x13F-0x140 : Invalid char accepted as start : Invalid Char accepted as other NL0x149-0x149 : Invalid char accepted as start : Invalid Char accepted as other NL0x17F-0x17F : Invalid char accepted as start : Invalid Char accepted as other NL0x1C4-0x1CC : Invalid char accepted as start : Invalid Char accepted as other NL0x1F1-0x1F3 : Invalid char accepted as start : Invalid Char accepted as other NL0x2B0-0x2B8 : Invalid Char accepted as other NL0x2BB-0x2C1 : Start char not acceptedNL0x2E0-0x2E4 : Invalid Char accepted as other NL0x37A-0x37A : Invalid Char accepted as other NL0x387-0x387 : Other char not acceptedNL0x559-0x559 : Start char not acceptedNL0x587-0x587 : Invalid char accepted as start : Invalid Char accepted as other NL0x6E5-0x6E6 : Start char not acceptedNL0xEDC-0xEDD : Invalid char accepted as start : Invalid Char accepted as other NL0x1101-0x1101 : Invalid char accepted as start : Invalid Char accepted as other NL0x1104-0x1104 : Invalid char accepted as start : Invalid Char accepted as other NL0x1108-0x1108 : Invalid char accepted as start : Invalid Char accepted as other NL0x110A-0x110A : Invalid char accepted as start : Invalid Char accepted as other NL0x110D-0x110D : Invalid char accepted as start : Invalid Char accepted as other NL0x1113-0x113B : Invalid char accepted as start : Invalid Char accepted as other NL0x113D-0x113D : Invalid char accepted as start : Invalid Char accepted as other NL0x113F-0x113F : Invalid char accepted as start : Invalid Char accepted as other NL0x1141-0x114B : Invalid char accepted as start : Invalid Char accepted as other NL0x114D-0x114D : Invalid char accepted as start : Invalid Char accepted as other NL0x114F-0x114F : Invalid char accepted as start : Invalid Char accepted as other NL0x1151-0x1153 : Invalid char accepted as start : Invalid Char accepted as other NL0x1156-0x1158 : Invalid char accepted as start : Invalid Char accepted as other NL0x1162-0x1162 : Invalid char accepted as start : Invalid Char accepted as other NL0x1164-0x1164 : Invalid char accepted as start : Invalid Char accepted as other NL0x1166-0x1166 : Invalid char accepted as start : Invalid Char accepted as other NL0x1168-0x1168 : Invalid char accepted as start : Invalid Char accepted as other NL0x116A-0x116C : Invalid char accepted as start : Invalid Char accepted as other NL0x116F-0x1171 : Invalid char accepted as start : Invalid Char accepted as other NL0x1174-0x1174 : Invalid char accepted as start : Invalid Char accepted as other NL0x1176-0x119D : Invalid char accepted as start : Invalid Char accepted as other NL0x119F-0x11A2 : Invalid char accepted as start : Invalid Char accepted as other NL0x11A9-0x11AA : Invalid char accepted as start : Invalid Char accepted as other NL0x11AC-0x11AD : Invalid char accepted as start : Invalid Char accepted as other NL0x11B0-0x11B6 : Invalid char accepted as start : Invalid Char accepted as other NL0x11B9-0x11B9 : Invalid char accepted as start : Invalid Char accepted as other NL0x11BB-0x11BB : Invalid char accepted as start : Invalid Char accepted as other NL0x11C3-0x11EA : Invalid char accepted as start : Invalid Char accepted as other NL0x11EC-0x11EF : Invalid char accepted as start : Invalid Char accepted as other NL0x11F1-0x11F8 : Invalid char accepted as start : Invalid Char accepted as other NL0x207F-0x207F : Invalid char accepted as start : Invalid Char accepted as other NL0x20DD-0x20E0 : Invalid Char accepted as other NL0x2102-0x2102 : Invalid char accepted as start : Invalid Char accepted as other NL0x2107-0x2107 : Invalid char accepted as start : Invalid Char accepted as other NL0x210A-0x2113 : Invalid char accepted as start : Invalid Char accepted as other NL0x2115-0x2115 : Invalid char accepted as start : Invalid Char accepted as other NL0x2118-0x211D : Invalid char accepted as start : Invalid Char accepted as other NL0x2124-0x2124 : Invalid char accepted as start : Invalid Char accepted as other NL0x2128-0x2128 : Invalid char accepted as start : Invalid Char accepted as other NL0x212C-0x212D : Invalid char accepted as start : Invalid Char accepted as other NL0x212F-0x2131 : Invalid char accepted as start : Invalid Char accepted as other NL0x2133-0x2138 : Invalid char accepted as start : Invalid Char accepted as other NL0x2160-0x217F : Invalid char accepted as start : Invalid Char accepted as other NL0x309B-0x309C : Invalid Char accepted as other NL0x3131-0x318E : Invalid char accepted as start : Invalid Char accepted as other NL0xF900-0xFA2D : Invalid char accepted as start : Invalid Char accepted as other NL0xFB00-0xFB06 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB13-0xFB17 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB1E-0xFB1E : Invalid Char accepted as other NL0xFB1F-0xFB28 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB2A-0xFB36 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB38-0xFB3C : Invalid char accepted as start : Invalid Char accepted as other NL0xFB3E-0xFB3E : Invalid char accepted as start : Invalid Char accepted as other NL0xFB40-0xFB41 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB43-0xFB44 : Invalid char accepted as start : Invalid Char accepted as other NL0xFB46-0xFBB1 : Invalid char accepted as start : Invalid Char accepted as other NL0xFBD3-0xFD3D : Invalid char accepted as start : Invalid Char accepted as other NL0xFD50-0xFD8F : Invalid char accepted as start : Invalid Char accepted as other NL0xFD92-0xFDC7 : Invalid char accepted as start : Invalid Char accepted as other NL0xFDF0-0xFDFB : Invalid char accepted as start : Invalid Char accepted as other NL0xFE20-0xFE23 : Invalid Char accepted as other NL0xFE70-0xFE72 : Invalid char accepted as start : Invalid Char accepted as other NL0xFE74-0xFE74 : Invalid char accepted as start : Invalid Char accepted as other NL0xFE76-0xFEFC : Invalid char accepted as start : Invalid Char accepted as other NL0xFF10-0xFF19 : Invalid Char accepted as other NL0xFF21-0xFF3A : Invalid char accepted as start : Invalid Char accepted as other NL0xFF41-0xFF5A : Invalid char accepted as start : Invalid Char accepted as other NL0xFF66-0xFF6F : Invalid char accepted as start : Invalid Char accepted as other NL0xFF70-0xFF70 : Invalid Char accepted as other NL0xFF71-0xFF9D : Invalid char accepted as start : Invalid Char accepted as other NL0xFF9E-0xFF9F : Invalid Char accepted as other NL0xFFA0-0xFFBE : Invalid char accepted as start : Invalid Char accepted as other NL0xFFC2-0xFFC7 : Invalid char accepted as start : Invalid Char accepted as other NL0xFFCA-0xFFCF : Invalid char accepted as start : Invalid Char accepted as other NL0xFFD2-0xFFD7 : Invalid char accepted as start : Invalid Char accepted as other NL0xFFDA-0xFFDC : Invalid char accepted as start : Invalid Char accepted as other NL'
 TEST_ID=e4x/Namespace/regress-292863.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 1 of test - Undeclaring namespace prefix should cause parse error reason: Expected value 'error', Actual value 'no error'
 TEST_ID=e4x/Namespace/regress-292863.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 1 of test - Undeclaring namespace prefix should cause parse error reason: Expected value 'error', Actual value 'no error'
 TEST_ID=e4x/Namespace/regress-292863.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 1 of test - Undeclaring namespace prefix should cause parse error reason: Expected value 'error', Actual value 'no error'
-TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
-TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
+TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
 TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
-TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
-TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
-TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
-TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
-TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
-TEST_ID=e4x/Regress/regress-329257.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 2 of test - namespace prefix in E4X dot query reason: Expected value '2', Actual value '0'
+TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
+TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
+TEST_ID=e4x/Regress/regress-319872.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
+TEST_ID=e4x/Regress/regress-329257.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 2 of test - namespace prefix in E4X dot query reason: Expected value '2', Actual value '0'
 TEST_ID=e4x/Regress/regress-329257.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 2 of test - namespace prefix in E4X dot query reason: Expected value '2', Actual value '0'
 TEST_ID=e4x/Regress/regress-352223.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 1 of test - Reject invalid spaces in tags reason: Expected value 'SyntaxError: invalid XML name', Actual value ''
 TEST_ID=e4x/Regress/regress-352223.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 2 of test - Reject invalid spaces in tags reason: Expected value 'SyntaxError: invalid XML tag syntax', Actual value ''
 TEST_ID=e4x/Regress/regress-369032.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 6 SIGABRT, TEST_DESCRIPTION=`.``*`Assertion failure: kid2->parent == xml || !kid2->parent, at `.``*`jsxml.c:
 TEST_ID=e4x/Regress/regress-369032.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=
 TEST_ID=e4x/Regress/regress-369032.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 2 of test - Do not assert: kid2->parent == xml || !kid2->parent reason: Expected value '<x>NL  <b>NL    <a>3</a>NL  </b>NL</x>', Actual value '<x>NL  <b>5</b>NL</x>'
 TEST_ID=e4x/Regress/regress-369740.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 3 of test - generic code for function:: reason: Expected value 'test', Actual value 'TypeError: can't set property @mozilla.org/js/function::toString in XMLList'
 TEST_ID=e4x/Regress/regress-370016.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=with (nonxmlobj) function:: Section  reason: `.``*`/e4x/Regress/regress-370016.js:`.``*`: reference to undefined XML name @mozilla.org/js/function::sin
@@ -69,41 +62,60 @@ TEST_ID=e4x/XML/13.4.4.26.js, TEST_BRANC
 TEST_ID=e4x/XML/13.4.4.26.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 23 of test - 13.4.4.26 - XML normalize() reason: Expected value '2', Actual value '1'
 TEST_ID=e4x/XML/13.4.4.26.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 3 of test - 13.4.4.26 - XML normalize() reason: Expected value '<alpha> <bravo> one </bravo> </alpha>', Actual value '<alpha><bravo> one </bravo></alpha>'
 TEST_ID=e4x/XML/13.4.4.26.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 4 of test - 13.4.4.26 - XML normalize() reason: Expected value '<alpha>  </alpha>', Actual value '<alpha/>'
 TEST_ID=e4x/XML/13.4.4.26.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 5 of test - 13.4.4.26 - XML normalize() reason: Expected value '2', Actual value '0'
 TEST_ID=e4x/XML/13.4.4.26.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 6 of test - 13.4.4.26 - XML normalize() reason: Expected value '<alpha>  </alpha>', Actual value '<alpha/>'
 TEST_ID=e4x/XML/13.4.4.26.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 7 of test - 13.4.4.26 - XML normalize() reason: Expected value '1', Actual value '0'
 TEST_ID=e4x/XML/13.4.4.26.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 8 of test - 13.4.4.26 - XML normalize() reason: Expected value '<alpha>  <bravo> fun </bravo></alpha>', Actual value '<alpha><bravo> fun </bravo></alpha>'
 TEST_ID=e4x/XML/13.4.4.26.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 9 of test - 13.4.4.26 - XML normalize() reason: Expected value '2', Actual value '1'
-TEST_ID=e4x/XML/13.4.4.29.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=13.4.4.29 - XML prependChild() Section 2 reason: http://test.mozilla.com//tests/mozilla.org/js/e4x/XML/13.4.4.29.js:`.``*`: cannot call prependChild method on an XML list with 0 elements
-TEST_ID=e4x/XML/13.4.4.29.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=Section 2 of test - 13.4.4.29 - XML prependChild() reason:
-TEST_ID=e4x/XML/13.4.4.29.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=13.4.4.29 - XML prependChild() Section 2 reason: http://test.mozilla.com//tests/mozilla.org/js/e4x/XML/13.4.4.29.js:`.``*`: cannot call prependChild method on an XML list with 0 elements
-TEST_ID=e4x/XML/13.4.4.29.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=Section 2 of test - 13.4.4.29 - XML prependChild() reason:
-TEST_ID=e4x/XML/13.4.4.3.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=13.4.4.3 - XML appendChild() Section 2 reason: http://test.mozilla.com//tests/mozilla.org/js/e4x/XML/13.4.4.3.js:`.``*`: cannot call appendChild method on an XML list with 0 elements
-TEST_ID=e4x/XML/13.4.4.3.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=Section 2 of test - 13.4.4.3 - XML appendChild() reason:
-TEST_ID=e4x/XML/13.4.4.3.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=13.4.4.3 - XML appendChild() Section 2 reason: http://test.mozilla.com//tests/mozilla.org/js/e4x/XML/13.4.4.3.js:`.``*`: cannot call appendChild method on an XML list with 0 elements
-TEST_ID=e4x/XML/13.4.4.3.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=Section 2 of test - 13.4.4.3 - XML appendChild() reason:
-TEST_ID=e4x/XML/13.4.4.33.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=13.4.4.33 - XML setChildren() Section 2 reason: http://test.mozilla.com//tests/mozilla.org/js/e4x/XML/13.4.4.33.js:`.``*`: cannot call setChildren method on an XML list with 0 elements
-TEST_ID=e4x/XML/13.4.4.33.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=Section 2 of test - 13.4.4.33 - XML setChildren() reason:
-TEST_ID=e4x/XML/13.4.4.33.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=13.4.4.33 - XML setChildren() Section 2 reason: http://test.mozilla.com//tests/mozilla.org/js/e4x/XML/13.4.4.33.js:`.``*`: cannot call setChildren method on an XML list with 0 elements
-TEST_ID=e4x/XML/13.4.4.33.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=Section 2 of test - 13.4.4.33 - XML setChildren() reason:
-TEST_ID=e4x/XML/13.4.4.4.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 3 of test - 13.4.4.4 - XML attribute() reason: Expected value '0', Actual value ''
-TEST_ID=e4x/XML/13.4.4.4.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 4 of test - 13.4.4.4 - XML attribute() reason: Expected value '0', Actual value ''
+TEST_ID=e4x/XML/13.4.4.29.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=
+TEST_ID=e4x/XML/13.4.4.29.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.29.js:`.``*`: cannot call prependChild method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.29.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.29.js:`.``*`: cannot call prependChild method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.29.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.29.js:`.``*`: cannot call prependChild method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.29.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.29.js:`.``*`: cannot call prependChild method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.29.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=13.4.4.29 - XML prependChild() Section 2 reason: http://test.mozilla.com//tests/mozilla.org/js/e4x/XML/13.4.4.29.js:89: cannot call prependChild method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.29.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.29.js:`.``*`: cannot call prependChild method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.29.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.29.js:`.``*`: cannot call prependChild method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.29.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=
+TEST_ID=e4x/XML/13.4.4.3.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=
+TEST_ID=e4x/XML/13.4.4.3.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.3.js:`.``*`: cannot call appendChild method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.3.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.3.js:`.``*`: cannot call appendChild method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.3.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.3.js:`.``*`: cannot call appendChild method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.3.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.3.js:`.``*`: cannot call appendChild method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.3.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=13.4.4.3 - XML appendChild() Section 2 reason: http://test.mozilla.com//tests/mozilla.org/js/e4x/XML/13.4.4.3.js:81: cannot call appendChild method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.3.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.3.js:`.``*`: cannot call appendChild method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.3.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.3.js:`.``*`: cannot call appendChild method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.3.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=
+TEST_ID=e4x/XML/13.4.4.33.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=
+TEST_ID=e4x/XML/13.4.4.33.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.33.js:`.``*`: cannot call setChildren method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.33.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.33.js:`.``*`: cannot call setChildren method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.33.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.33.js:`.``*`: cannot call setChildren method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.33.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.33.js:`.``*`: cannot call setChildren method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.33.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=13.4.4.33 - XML setChildren() Section 2 reason: http://test.mozilla.com//tests/mozilla.org/js/e4x/XML/13.4.4.33.js:76: cannot call setChildren method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.33.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.33.js:`.``*`: cannot call setChildren method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.33.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.33.js:`.``*`: cannot call setChildren method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.33.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=
+TEST_ID=e4x/XML/13.4.4.4.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 3 of test - 13.4.4.4 - XML attribute() reason: Expected value '0', Actual value ''
+TEST_ID=e4x/XML/13.4.4.4.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 4 of test - 13.4.4.4 - XML attribute() reason: Expected value '0', Actual value ''
 TEST_ID=e4x/XML/13.4.4.4.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 3 of test - 13.4.4.4 - XML attribute() reason: Expected value '0', Actual value ''
 TEST_ID=e4x/XML/13.4.4.4.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 4 of test - 13.4.4.4 - XML attribute() reason: Expected value '0', Actual value ''
-TEST_ID=e4x/XML/13.4.4.7.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=13.4.4.7 - XML childIndex() Section 2 reason: http://test.mozilla.com//tests/mozilla.org/js/e4x/XML/13.4.4.7.js:`.``*`: cannot call childIndex method on an XML list with 0 elements
-TEST_ID=e4x/XML/13.4.4.7.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=Section 2 of test - 13.4.4.7 - XML childIndex() reason:
-TEST_ID=e4x/XML/13.4.4.7.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=13.4.4.7 - XML childIndex() Section 2 reason: http://test.mozilla.com//tests/mozilla.org/js/e4x/XML/13.4.4.7.js:`.``*`: cannot call childIndex method on an XML list with 0 elements
-TEST_ID=e4x/XML/13.4.4.7.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=Section 2 of test - 13.4.4.7 - XML childIndex() reason:
+TEST_ID=e4x/XML/13.4.4.7.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=
+TEST_ID=e4x/XML/13.4.4.7.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.7.js:`.``*`: cannot call childIndex method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.7.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.7.js:`.``*`: cannot call childIndex method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.7.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.7.js:`.``*`: cannot call childIndex method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.7.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.7.js:`.``*`: cannot call childIndex method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.7.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=13.4.4.7 - XML childIndex() Section 2 reason: http://test.mozilla.com//tests/mozilla.org/js/e4x/XML/13.4.4.7.js:58: cannot call childIndex method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.7.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.7.js:`.``*`: cannot call childIndex method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.7.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/e4x/XML/13.4.4.7.js:`.``*`: cannot call childIndex method on an XML list with 0 elements
+TEST_ID=e4x/XML/13.4.4.7.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=
 TEST_ID=e4x/XML/regress-324422-2.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=e4x/XML/regress-324422-2.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/e4x/XML/regress-324422-2.js:`.``*`: out of memory
-TEST_ID=e4x/XML/regress-324422-2.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=e4x/XML/regress-324422-2.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/e4x/XML/regress-324422-2.js:`.``*`: out of memory
 TEST_ID=e4x/XML/regress-324422-2.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=e4x/XML/regress-324422-2.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=e4x/XML/regress-376773.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=xmlsimple.stringmethod === xmlsimple.function::stringmethod Section 61 reason: `.``*`/e4x/XML/regress-376773.js:`.``*`: reference to undefined XML name @mozilla.org/js/function::charAt
 TEST_ID=e4x/XML/regress-376773.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=Section 61 of test - xmlsimple.stringmethod === xmlsimple.function::stringmethod
 TEST_ID=e4x/decompilation/decompile-xml-escapes.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 1 of test - Decompiler escapes line breaks/backslashes in E4X literals reason: Type mismatch, expected type boolean, actual type string Expected value 'false', Actual value ''function anonymous() {NL    return <![CDATA[\\\\]]>;NL}' does not contain '<![CDATA[\\]]>'!'
 TEST_ID=e4x/decompilation/decompile-xml-escapes.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 1 of test - Decompiler escapes line breaks/backslashes in E4X literals reason: Type mismatch, expected type boolean, actual type string Expected value 'false', Actual value ''function anonymous() {NL    return <?f bNLNLcNLc?>;NL}' does not contain '<?f bNLNLcNLc?>'!'
 TEST_ID=e4x/decompilation/decompile-xml-escapes.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 1 of test - Decompiler escapes line breaks/backslashes in E4X literals reason: Type mismatch, expected type boolean, actual type string Expected value 'false', Actual value ''function anonymous() {NL    return <?f bNLNLcNLc?>;NL}' does not contain '<?f bNLNLcNLc?>'!'
 TEST_ID=e4x/decompilation/decompile-xml-escapes.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 1 of test - Decompiler escapes line breaks/backslashes in E4X literals reason: Type mismatch, expected type boolean, actual type string Expected value 'false', Actual value ''function anonymous() {NL    return <?f bNLNLcNLc?>;NL}' does not contain '<?f bNLNLcNLc?>'!'
 TEST_ID=e4x/decompilation/regress-352013.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 11 of test - Decompilation with new operator redeaux reason: Expected value ' function ( ) { new ( x ( y ) . n : : z ) ; } ', Actual value ' function ( ) { new x ( y ) . n : : z ; } '
 TEST_ID=e4x/decompilation/regress-352013.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 12 of test - Decompilation with new operator redeaux reason: Expected value ' function ( ) { new ( x ( y ) . n : : z ) ; } ', Actual value ' function ( ) { new x ( y ) . n : : z ; } '
@@ -114,81 +126,41 @@ TEST_ID=e4x/decompilation/regress-352013
 TEST_ID=e4x/decompilation/regress-352013.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 5 of test - Decompilation with new operator redeaux reason: Expected value ' function ( ) { new ( x ( y ) . @ a ) ; } ', Actual value ' function ( ) { new x ( y ) . @ a ; } '
 TEST_ID=e4x/decompilation/regress-352013.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 6 of test - Decompilation with new operator redeaux reason: Expected value ' function ( ) { new ( x ( y ) . @ a ) ; } ', Actual value ' function ( ) { new x ( y ) . @ a ; } '
 TEST_ID=e4x/decompilation/regress-352013.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 8 of test - Decompilation with new operator redeaux reason: Expected value ' function ( ) { new ( x ( y ) . @ [ n : : a ] ) ; } ', Actual value ' function ( ) { new x ( y ) . @ [ n : : a ] ; } '
 TEST_ID=e4x/decompilation/regress-352013.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 9 of test - Decompilation with new operator redeaux reason: Expected value ' function ( ) { new ( x ( y ) . @ [ n : : a ] ) ; } ', Actual value ' function ( ) { new x ( y ) . @ [ n : : a ] ; } '
 TEST_ID=e4x/decompilation/regress-352789.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 1 of test - Decompilation of new and .@ reason: Expected value ' function ( ) { return new ( a ( ) . @ z ) ; } ', Actual value ' function ( ) { return new a . @ z ; } '
 TEST_ID=e4x/decompilation/regress-429249.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=trap should not change decompilation <x/> : after trap reason: Expected value ' function g ( ) { return <x/>; } ', Actual value ' function g ( ) { return "<x/>"; } '
 TEST_ID=e4x/extensions/regress-337226.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=function::globalfunction Section  reason: `.``*`/e4x/extensions/regress-337226.js:`.``*`: reference to undefined XML name @mozilla.org/js/function::parseInt
 TEST_ID=e4x/extensions/regress-337226.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=`.``*`/e4x/extensions/regress-337226.js:`.``*`: ReferenceError: reference to undefined XML name @mozilla.org/js/function::parseInt
-TEST_ID=ecma/ExecutionContexts/10.2.2-1.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=globalStorage == THIS[globalStorage] reason: wrong value
-TEST_ID=ecma/ExecutionContexts/10.2.2-1.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 5 SIGTRAP, TEST_DESCRIPTION=`.``*`Assertion failure: globalFrameSize == STOBJ_NSLOTS(globalObj), at `.``*`jstracer.cpp:
-TEST_ID=ecma/ExecutionContexts/10.2.2-1.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 5 SIGTRAP, TEST_DESCRIPTION=`.``*`Assertion failure: globalFrameSize == STOBJ_NSLOTS(globalObj), at `.``*`jstracer.cpp:
-TEST_ID=ecma/ExecutionContexts/10.2.2-1.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 5 SIGTRAP, TEST_DESCRIPTION=`.``*`Assertion failure: globalFrameSize == STOBJ_NSLOTS(globalObj), at `.``*`jstracer.cpp:
-TEST_ID=ecma/ExecutionContexts/10.2.2-2.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=globalStorage == THIS[globalStorage] reason: wrong value
-TEST_ID=ecma/ExecutionContexts/10.2.2-2.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 5 SIGTRAP, TEST_DESCRIPTION=`.``*`Assertion failure: globalFrameSize == STOBJ_NSLOTS(globalObj), at `.``*`jstracer.cpp:
-TEST_ID=ecma/ExecutionContexts/10.2.2-2.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 5 SIGTRAP, TEST_DESCRIPTION=`.``*`Assertion failure: globalFrameSize == STOBJ_NSLOTS(globalObj), at `.``*`jstracer.cpp:
-TEST_ID=ecma/ExecutionContexts/10.2.2-2.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 5 SIGTRAP, TEST_DESCRIPTION=`.``*`Assertion failure: globalFrameSize == STOBJ_NSLOTS(globalObj), at `.``*`jstracer.cpp:
 TEST_ID=ecma/Math/15.8.2.5.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Infinity/Math.atan2(-0, 1) reason: wrong value
 TEST_ID=ecma/Math/15.8.2.5.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Infinity/Math.atan2(-1, Infinity) reason: wrong value
 TEST_ID=ecma/String/15.5.4.6-2.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=var f = new Object( String.prototype.indexOf ); f('[object Window @ `.``*` (native @ `.``*`)]') reason: wrong value
 TEST_ID=ecma/TypeConversion/9.2.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=!(0/0) reason: wrong value
 TEST_ID=ecma/TypeConversion/9.2.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=1000 % 0 ? true : false reason: wrong value
 TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=-s2 == -Infinity || -s2 == -1.7976931348623157e+308  reason: wrong value
 TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2) == Infinity || parseInt(s2) == 1.7976931348623157e+308 reason: wrong value
 TEST_ID=ecma/TypeConversion/9.3.1-3.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=parseInt(s2,10) == Infinity || parseInt(s2,10) == 1.7976931348623157e+308 reason: wrong value
-TEST_ID=ecma_2/Statements/forin-002.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=with loop in a for...in loop.  `.``*`object Window`.``*`globalStorage`.` == eval `.` globalStorage `.` reason: wrong value
 TEST_ID=ecma_3/Array/regress-322135-02.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/ecma_3/Array/regress-322135-03.js:`.``*`: out of memory
+TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
 TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/ecma_3/Array/regress-322135-03.js:`.``*`: out of memory
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=8.11.1, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=8.11.1, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=8.11.1, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=9.6.0, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
 TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/ecma_3/Array/regress-322135-03.js:`.``*`: out of memory
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=8.11.1, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=9.6.0, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=ecma_3/Array/regress-322135-03.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=; messages: BUGNUMBER: 322135; ./ecma_3/Array/regress-322135-03.js:`.``*`: out of memory
+TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
+TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
 TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/ecma_3/Array/regress-322135-04.js:`.``*`: out of memory
+TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
 TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/ecma_3/Array/regress-322135-04.js:`.``*`: out of memory
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=8.11.1, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=9.6.0, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=8.11.1, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
 TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/ecma_3/Array/regress-322135-04.js:`.``*`: out of memory
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=8.11.1, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=9.6.0, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=ecma_3/Array/regress-322135-04.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=; messages: BUGNUMBER: 322135; ./ecma_3/Array/regress-322135-04.js:`.``*`: out of memory
 TEST_ID=ecma_3/Array/regress-387501.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Array.prototype.toString|toSource|toLocaleString is not generic reason: Expected value 'TypeError: Array.prototype.toLocaleString called on incompatible String', Actual value 'f,o,o'
 TEST_ID=ecma_3/Array/regress-387501.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Array.prototype.toString|toSource|toLocaleString is not generic reason: Expected value 'TypeError: Array.prototype.toSource called on incompatible String', Actual value '["f", "o", "o"]'
 TEST_ID=ecma_3/Array/regress-387501.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Array.prototype.toString|toSource|toLocaleString is not generic reason: Expected value 'TypeError: Array.prototype.toString called on incompatible String', Actual value 'f,o,o'
 TEST_ID=ecma_3/Date/15.9.4.3.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=15.9.4.3 - Date.UTC edge-case arguments.: date -1 reason: Expected value '30', Actual value '1'
 TEST_ID=ecma_3/Date/15.9.4.3.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=15.9.4.3 - Date.UTC edge-case arguments.: date 0 reason: Expected value '31', Actual value '1'
 TEST_ID=ecma_3/Date/15.9.4.3.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=15.9.4.3 - Date.UTC edge-case arguments.: date null reason: Expected value '31', Actual value '1'
 TEST_ID=ecma_3/Date/15.9.5.5-02.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Date.prototype.toLocaleString should not clamp year: check toLocaleString reason: Expected value '-271821', Actual value 'null'
 TEST_ID=ecma_3/Date/15.9.5.5-02.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Date.prototype.toLocaleString should not clamp year: check toLocaleString reason: Expected value '275760', Actual value 'null'
@@ -197,31 +169,30 @@ TEST_ID=ecma_3/ExecutionContexts/10.1.3-
 TEST_ID=ecma_3/ExecutionContexts/regress-448595-01.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=scope chain var declaration with initialiser in |with| clauses: catch reason: Expected value 'bar', Actual value 'wibble'
 TEST_ID=ecma_3/ExecutionContexts/regress-448595-01.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=scope chain var declaration with initialiser in |with| clauses: with reason: Expected value 'bar', Actual value 'wibble'
 TEST_ID=ecma_3/Expressions/11.10-01.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=11.10 - & should evaluate operands in order: order reason: Expected value 'o.valueOf, p.valueOf', Actual value ', p.valueOfo.valueOf'
 TEST_ID=ecma_3/Expressions/11.10-02.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=11.10 - ^ should evaluate operands in order: order reason: Expected value 'o.valueOf, p.valueOf', Actual value ', p.valueOfo.valueOf'
 TEST_ID=ecma_3/Expressions/11.10-03.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=11.10 - | should evaluate operands in order: order reason: Expected value 'o.valueOf, p.valueOf', Actual value ', p.valueOfo.valueOf'
 TEST_ID=ecma_3/Expressions/11.7.1-01.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=11.7.1 - << should evaluate operands in order: order reason: Expected value 'o.valueOf, p.valueOf', Actual value ', p.valueOfo.valueOf'
 TEST_ID=ecma_3/Expressions/11.7.2-01.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=11.7.2 - >> should evaluate operands in order: order reason: Expected value 'o.valueOf, p.valueOf', Actual value ', p.valueOfo.valueOf'
 TEST_ID=ecma_3/Expressions/11.7.3-01.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=11.7.3 - >>> should evaluate operands in order: order reason: Expected value 'o.valueOf, p.valueOf', Actual value ', p.valueOfo.valueOf'
-TEST_ID=ecma_3/LexicalConventions/7.4-01.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION= /**/ comments with newlines in them do not act as line breaks reason: Expected value 'conformant!', Actual value 'non-conformant!'
-TEST_ID=ecma_3/LexicalConventions/7.4-01.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION= /**/ comments with newlines in them do not act as line breaks reason: Expected value 'conformant!', Actual value 'non-conformant!'
-TEST_ID=ecma_3/LexicalConventions/7.4-01.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION= /**/ comments with newlines in them do not act as line breaks reason: Expected value 'conformant!', Actual value 'non-conformant!'
+TEST_ID=ecma_3/LexicalConventions/7.4-01.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION= /**/ comments with newlines in them do not act as line breaks reason: Expected value 'conformant!', Actual value 'non-conformant!'
 TEST_ID=ecma_3/LexicalConventions/7.9.1.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Automatic Semicolon insertion in postfix expressions: (xNL)-- y reason: Type mismatch, expected type string, actual type number Expected value 'SyntaxError: missing ; before statement', Actual value '0'
 TEST_ID=ecma_3/Number/15.7.4.2-01.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=3.3.toString.length should be 1 reason: Expected value '1', Actual value '0'
 TEST_ID=ecma_3/Number/15.7.4.2-01.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=num.toString(), num.toString(10), and num.toString(undefined) should all be equivalent reason: Type mismatch, expected type boolean, actual type object Expected value 'false', Actual value 'Error: illegal radix 0'
 TEST_ID=ecma_3/Number/15.7.4.6-1.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=.*, TEST_DESCRIPTION=`.``*`/ecma_3/Number/15.7.4.6-1.js:`.``*`: precision -3 out of range
 TEST_ID=ecma_3/Number/15.7.4.6-1.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=.*, TEST_DESCRIPTION=`.``*`/ecma_3/Number/15.7.4.6-1.js:`.``*`: precision -3 out of range
 TEST_ID=ecma_3/Number/15.7.4.6-1.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=.*, TEST_DESCRIPTION=`.``*`/ecma_3/Number/15.7.4.6-1.js:`.``*`: precision -3 out of range
 TEST_ID=ecma_3/Number/15.7.4.7-1.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=.*, TEST_DESCRIPTION=`.``*`/ecma_3/Number/15.7.4.7-1.js:`.``*`: precision -3 out of range
 TEST_ID=ecma_3/Number/15.7.4.7-1.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=.*, TEST_DESCRIPTION=`.``*`/ecma_3/Number/15.7.4.7-1.js:`.``*`: precision -3 out of range
 TEST_ID=ecma_3/Number/15.7.4.7-1.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=.*, TEST_DESCRIPTION=`.``*`/ecma_3/Number/15.7.4.7-1.js:`.``*`: precision -3 out of range
 TEST_ID=ecma_3/Object/8.6.2.6-002.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=[[DefaultValue]] should not call valueOf, toString with an argument reason: Expected value 'No exception', Actual value 'unexpected arguments!  arg1 type=string, value=undefined'
 TEST_ID=ecma_3/Object/8.6.2.6-002.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=[[DefaultValue]] should not call valueOf, toString with an argument reason: Expected value 'No exception', Actual value 'unexpected arguments!  arg1 type=string, value=undefined'
 TEST_ID=ecma_3/Object/8.6.2.6-002.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=[[DefaultValue]] should not call valueOf, toString with an argument reason: Expected value 'No exception', Actual value 'unexpected arguments!  arg1 type=string, value=undefined'
+TEST_ID=ecma_3/Object/regress-459405.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=ecma_3/Operators/11.13.1-002.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=11.13.1 Simple Assignment should return type of RHS reason: Expected value 'string', Actual value 'number'
 TEST_ID=ecma_3/Operators/11.4.1-002.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=11.4.1 - The delete Operator - delete f() reason: Type mismatch, expected type boolean, actual type string Expected value 'true', Actual value 'SyntaxError: invalid assignment left-hand side'
 TEST_ID=ecma_3/Operators/order-01.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=operator evaluation order: 11.13.2 %= reason: Expected value 'left valueOf, left toString, right valueOf, right toString, ', Actual value 'right valueOf, right toString, left valueOf, left toString, '
 TEST_ID=ecma_3/Operators/order-01.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=operator evaluation order: 11.13.2 /= reason: Expected value 'left valueOf, left toString, right valueOf, right toString, ', Actual value 'right valueOf, right toString, left valueOf, left toString, '
 TEST_ID=ecma_3/Operators/order-01.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=operator evaluation order: 11.5.2 / reason: Expected value 'left valueOf, left toString, right valueOf, right toString, ', Actual value 'right valueOf, right toString, left valueOf, left toString, '
 TEST_ID=ecma_3/Operators/order-01.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=operator evaluation order: 11.5.3 % reason: Expected value 'left valueOf, left toString, right valueOf, right toString, ', Actual value 'right valueOf, right toString, left valueOf, left toString, '
 TEST_ID=ecma_3/Operators/order-01.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=operator evaluation order: 11.10 & reason: Expected value 'left valueOf, left toString, right valueOf, right toString, ', Actual value 'right valueOf, right toString, left valueOf, left toString, '
 TEST_ID=ecma_3/Operators/order-01.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=operator evaluation order: 11.10 ^ reason: Expected value 'left valueOf, left toString, right valueOf, right toString, ', Actual value 'right valueOf, right toString, left valueOf, left toString, '
@@ -242,23 +213,23 @@ TEST_ID=ecma_3/Operators/order-01.js, TE
 TEST_ID=ecma_3/Operators/order-01.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=operator evaluation order: 11.13.2 /= reason: Expected value 'left valueOf, left toString, right valueOf, right toString, ', Actual value 'right valueOf, right toString, left valueOf, left toString, '
 TEST_ID=ecma_3/Operators/order-01.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=operator evaluation order: 11.5.2 / reason: Expected value 'left valueOf, left toString, right valueOf, right toString, ', Actual value 'right valueOf, right toString, left valueOf, left toString, '
 TEST_ID=ecma_3/Operators/order-01.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=operator evaluation order: 11.5.3 % reason: Expected value 'left valueOf, left toString, right valueOf, right toString, ', Actual value 'right valueOf, right toString, left valueOf, left toString, '
 TEST_ID=ecma_3/Operators/order-01.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=operator evaluation order: 11.13.2 %= reason: Expected value 'left valueOf, left toString, right valueOf, right toString, ', Actual value 'right valueOf, right toString, left valueOf, left toString, '
 TEST_ID=ecma_3/Operators/order-01.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=operator evaluation order: 11.13.2 /= reason: Expected value 'left valueOf, left toString, right valueOf, right toString, ', Actual value 'right valueOf, right toString, left valueOf, left toString, '
 TEST_ID=ecma_3/Operators/order-01.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=operator evaluation order: 11.5.2 / reason: Expected value 'left valueOf, left toString, right valueOf, right toString, ', Actual value 'right valueOf, right toString, left valueOf, left toString, '
 TEST_ID=ecma_3/Operators/order-01.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=operator evaluation order: 11.5.3 % reason: Expected value 'left valueOf, left toString, right valueOf, right toString, ', Actual value 'right valueOf, right toString, left valueOf, left toString, '
 TEST_ID=ecma_3/RegExp/15.10.2.12.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=15.10.2.12 - CharacterClassEscape d reason: Expected value 'false', Actual value 'true'
-TEST_ID=ecma_3/RegExp/15.10.4.1-6.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 15.10.4.1 - RegExp with invalid flags: /bar/a) reason: Expected value 'SyntaxError: invalid regular expression flag a', Actual value 'SyntaxError: invalid flag after regular expression'
-TEST_ID=ecma_3/RegExp/15.10.4.1-6.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 15.10.4.1 - RegExp with invalid flags: /bar/gg) reason: Expected value 'SyntaxError: invalid regular expression flag g', Actual value ''
-TEST_ID=ecma_3/RegExp/15.10.4.1-6.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 15.10.4.1 - RegExp with invalid flags: /bar/ii) reason: Expected value 'SyntaxError: invalid regular expression flag i', Actual value ''
-TEST_ID=ecma_3/RegExp/15.10.4.1-6.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 15.10.4.1 - RegExp with invalid flags: /bar/mm) reason: Expected value 'SyntaxError: invalid regular expression flag m', Actual value ''
-TEST_ID=ecma_3/RegExp/15.10.4.1-6.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 15.10.4.1 - RegExp with invalid flags: new RegExp("bar", "gg") reason: Expected value 'SyntaxError: invalid regular expression flag g', Actual value ''
-TEST_ID=ecma_3/RegExp/15.10.4.1-6.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 15.10.4.1 - RegExp with invalid flags: new RegExp("bar", "ii") reason: Expected value 'SyntaxError: invalid regular expression flag i', Actual value ''
-TEST_ID=ecma_3/RegExp/15.10.4.1-6.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 15.10.4.1 - RegExp with invalid flags: new RegExp("bar", "mm") reason: Expected value 'SyntaxError: invalid regular expression flag m', Actual value ''
+TEST_ID=ecma_3/RegExp/15.10.4.1-6.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 15.10.4.1 - RegExp with invalid flags: /bar/a) reason: Expected value 'SyntaxError: invalid regular expression flag a', Actual value 'SyntaxError: invalid flag after regular expression'
+TEST_ID=ecma_3/RegExp/15.10.4.1-6.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 15.10.4.1 - RegExp with invalid flags: /bar/gg) reason: Expected value 'SyntaxError: invalid regular expression flag g', Actual value ''
+TEST_ID=ecma_3/RegExp/15.10.4.1-6.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 15.10.4.1 - RegExp with invalid flags: /bar/ii) reason: Expected value 'SyntaxError: invalid regular expression flag i', Actual value ''
+TEST_ID=ecma_3/RegExp/15.10.4.1-6.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 15.10.4.1 - RegExp with invalid flags: /bar/mm) reason: Expected value 'SyntaxError: invalid regular expression flag m', Actual value ''
+TEST_ID=ecma_3/RegExp/15.10.4.1-6.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 15.10.4.1 - RegExp with invalid flags: new RegExp("bar", "gg") reason: Expected value 'SyntaxError: invalid regular expression flag g', Actual value ''
+TEST_ID=ecma_3/RegExp/15.10.4.1-6.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 15.10.4.1 - RegExp with invalid flags: new RegExp("bar", "ii") reason: Expected value 'SyntaxError: invalid regular expression flag i', Actual value ''
+TEST_ID=ecma_3/RegExp/15.10.4.1-6.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 15.10.4.1 - RegExp with invalid flags: new RegExp("bar", "mm") reason: Expected value 'SyntaxError: invalid regular expression flag m', Actual value ''
 TEST_ID=ecma_3/RegExp/regress-307456.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=ecma_3/RegExp/regress-307456.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=ecma_3/RegExp/regress-307456.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=ecma_3/RegExp/regress-330684.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=ecma_3/RegExp/regress-330684.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=ecma_3/RegExp/regress-330684.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=ecma_3/RegExp/regress-367888.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=ecma_3/RegExp/regress-367888.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/ecma_3/RegExp/regress-367888.js:`.``*`: out of memory
@@ -318,17 +289,16 @@ TEST_ID=ecma_3/Unicode/regress-352044-02
 TEST_ID=ecma_3_1/RegExp/regress-305064.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Is MEDIUM MATHEMATICAL SPACE a space reason: Expected value 'true', Actual value 'false'
 TEST_ID=ecma_3_1/RegExp/regress-305064.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Is MONGOLIAN VOWEL SEPARATOR a space reason: Expected value 'true', Actual value 'false'
 TEST_ID=ecma_3_1/RegExp/regress-305064.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Is NARROW NO-BREAK SPACE a space reason: Expected value 'true', Actual value 'false'
 TEST_ID=ecma_3_1/RegExp/regress-305064.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Is OGHAM SPACE MARK a space reason: Expected value 'true', Actual value 'false'
 TEST_ID=ecma_3_1/RegExp/regress-305064.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Is MEDIUM MATHEMATICAL SPACE a space reason: Expected value 'true', Actual value 'false'
 TEST_ID=ecma_3_1/RegExp/regress-305064.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Is MONGOLIAN VOWEL SEPARATOR a space reason: Expected value 'true', Actual value 'false'
 TEST_ID=ecma_3_1/RegExp/regress-305064.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Is NARROW NO-BREAK SPACE a space reason: Expected value 'true', Actual value 'false'
 TEST_ID=ecma_3_1/RegExp/regress-305064.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Is OGHAM SPACE MARK a space reason: Expected value 'true', Actual value 'false'
-TEST_ID=ecma_3_1/extensions/regress-478047.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Assign to property with getter but no setter should throw TypeError reason: Expected value 'TypeError: setting a property that has only a getter', Actual value ''
 TEST_ID=js1_2/function/regexparg-1.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=typeof f(/abc/) reason: wrong value
 TEST_ID=js1_2/function/regexparg-1.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=typeof new f(/abc/) reason: wrong value
 TEST_ID=js1_5/Array/11.1.4.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Elisons in Array literals should not be enumed Section 1 of test -  [,1]  reason: Expected value '1', Actual value '01'
 TEST_ID=js1_5/Array/11.1.4.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Elisons in Array literals should not be enumed Section 2 of test -  [,,1]  reason: Expected value '2', Actual value '012'
 TEST_ID=js1_5/Array/11.1.4.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Elisons in Array literals should not be enumed Section 4 of test -  [1,,]  reason: Expected value '0', Actual value '01'
 TEST_ID=js1_5/Array/regress-101964.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Section 1 of test -  reason: Expected value 'Truncation took less than 50 ms', Actual value 'Truncation took `.``*` ms'
 TEST_ID=js1_5/Array/regress-157652.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/Array/regress-157652.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
@@ -362,104 +332,91 @@ TEST_ID=js1_5/Function/regress-338121-01
 TEST_ID=js1_5/Function/regress-338121-01.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/js1_5/Function/regress-338121-01.js:`.``*`: out of memory
 TEST_ID=js1_5/Function/regress-338121-02.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/Function/regress-338121-02.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/js1_5/Function/regress-338121-02.js:`.``*`: out of memory
 TEST_ID=js1_5/Function/regress-338121-03.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/Function/regress-338121-03.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/js1_5/Function/regress-338121-03.js:`.``*`: out of memory
 TEST_ID=js1_5/GC/regress-203278-2.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/js1_5/GC/regress-203278-2.js:`.``*`: out of memory
 TEST_ID=js1_5/GC/regress-203278-2.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/js1_5/GC/regress-203278-2.js:`.``*`: out of memory
 TEST_ID=js1_5/GC/regress-311497.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/GC/regress-319980-01.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 5 SIGTRAP, TEST_DESCRIPTION=`.``*`Assertion failure: cx->bailExit, at `.``*`jstracer.cpp:
-TEST_ID=js1_5/GC/regress-319980-01.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 10 SIGBUS, TEST_DESCRIPTION=
-TEST_ID=js1_5/GC/regress-319980-01.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 11 SIGSEGV, TEST_DESCRIPTION=
-TEST_ID=js1_5/GC/regress-319980-01.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/GC/regress-319980-01.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 5 SIGTRAP, TEST_DESCRIPTION=`.``*`Assertion failure: cx->bailExit, at `.``*`jstracer.cpp:
-TEST_ID=js1_5/GC/regress-319980-01.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 10 SIGBUS, TEST_DESCRIPTION=
-TEST_ID=js1_5/GC/regress-338653.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/GC/regress-338653.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 9 SIGKILL, TEST_DESCRIPTION=
-TEST_ID=js1_5/GC/regress-338653.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=opt, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 9 SIGKILL, TEST_DESCRIPTION=
-TEST_ID=js1_5/GC/regress-338653.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 9 SIGKILL, TEST_DESCRIPTION=
-TEST_ID=js1_5/GC/regress-338653.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 9 SIGKILL, TEST_DESCRIPTION=
-TEST_ID=js1_5/GC/regress-338653.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/GC/regress-338653.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 9 SIGKILL, TEST_DESCRIPTION=
+TEST_ID=js1_5/GC/regress-338653.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 9 SIGKILL, TEST_DESCRIPTION=
+TEST_ID=js1_5/GC/regress-338653.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=js1_5/GC/regress-338653.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 9 SIGKILL, TEST_DESCRIPTION=
+TEST_ID=js1_5/GC/regress-338653.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=js1_5/GC/regress-346794.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=js1_5/GC/regress-346794.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=js1_5/GC/regress-346794.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=js1_5/GC/regress-383269-01.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Leak related to arguments object reason: Expected value 'No Leak', Actual value 'generate_big_object_graph() leaked
-TEST_ID=js1_5/GC/regress-383269-01.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Leak related to arguments object reason: Expected value 'No Leak', Actual value 'generate_big_object_graph() leaked
+TEST_ID=js1_5/GC/regress-383269-01.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Leak related to arguments object reason: Expected value 'No Leak', Actual value 'generate_big_object_graph() leaked
 TEST_ID=js1_5/GC/regress-383269-01.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Leak related to arguments object reason: Expected value 'No Leak', Actual value 'generate_big_object_graph() leaked
-TEST_ID=js1_5/GC/regress-383269-01.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Leak related to arguments object reason: Expected value 'No Leak', Actual value 'generate_big_object_graph() leaked
+TEST_ID=js1_5/GC/regress-383269-01.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Leak related to arguments object reason: Expected value 'No Leak', Actual value 'generate_big_object_graph() leaked
 TEST_ID=js1_5/GC/regress-383269-02.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Leak related to arguments object reason: Expected value 'No Leak', Actual value 'generate_big_object_graph() leaked
+TEST_ID=js1_5/GC/regress-383269-02.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Leak related to arguments object reason: Expected value 'No Leak', Actual value 'generate_big_object_graph() leaked
+TEST_ID=js1_5/GC/regress-383269-02.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Leak related to arguments object reason: Expected value 'No Leak', Actual value 'generate_big_object_graph() leaked
 TEST_ID=js1_5/LexicalConventions/regress-469940.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Do not insert semi-colon after var with multiline initializer reason: Expected value 'SyntaxError: missing ; before statement', Actual value ''
 TEST_ID=js1_5/Object/regress-465476.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION="-0" and "0" are distinct properties. reason: Expected value 'No Exception', Actual value '-0 removed from x after unassociated delete'
 TEST_ID=js1_5/Regress/regress-203278-1.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/js1_5/Regress/regress-203278-1.js:`.``*`: out of memory
 TEST_ID=js1_5/Regress/regress-203278-1.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/js1_5/Regress/regress-203278-1.js:`.``*`: out of memory
 TEST_ID=js1_5/Regress/regress-271716-n.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=.*, TEST_DESCRIPTION=
 TEST_ID=js1_5/Regress/regress-271716-n.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=.*, TEST_DESCRIPTION=
 TEST_ID=js1_5/Regress/regress-271716-n.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=.*, TEST_DESCRIPTION=
 TEST_ID=js1_5/Regress/regress-274035.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=js1_5/Regress/regress-274035.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=js1_5/Regress/regress-303213.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/Regress/regress-303213.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 9 SIGKILL, TEST_DESCRIPTION=
 TEST_ID=js1_5/Regress/regress-303213.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/Regress/regress-303213.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=js1_5/Regress/regress-303213.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/Regress/regress-303213.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=js1_5/Regress/regress-303213.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/Regress/regress-303213.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/Regress/regress-312588.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=js1_5/Regress/regress-314401.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=js1_5/Regress/regress-319384.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/js1_5/Regress/regress-319384.js:`.``*`: can't convert "foo" to an integer
-TEST_ID=js1_5/Regress/regress-329530.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/Regress/regress-329530.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=js1_5/Regress/regress-328897.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=js1_5/Regress/regress-328897.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=js1_5/Regress/regress-328897.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=js1_5/Regress/regress-328897.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=js1_5/Regress/regress-328897.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=js1_5/Regress/regress-328897.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=js1_5/Regress/regress-329530.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
 TEST_ID=js1_5/Regress/regress-330352.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/Regress/regress-346237.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/Regress/regress-346237.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/js1_5/Regress/regress-346237.js:`.``*`: out of memory
 TEST_ID=js1_5/Regress/regress-350268.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=new Function with unbalanced braces: alert(6); } alert(5); reason: Expected value 'SyntaxError', Actual value 'No Error'
 TEST_ID=js1_5/Regress/regress-350268.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=new Function with unbalanced braces: } reason: Expected value 'SyntaxError', Actual value 'No Error'
 TEST_ID=js1_5/Regress/regress-350268.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=new Function with unbalanced braces: } { reason: Expected value 'SyntaxError', Actual value 'No Error'
 TEST_ID=js1_5/Regress/regress-350268.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=new Function with unbalanced braces: }}}}} reason: Expected value 'SyntaxError', Actual value 'No Error'
 TEST_ID=js1_5/Regress/regress-362583.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 6 SIGABRT, TEST_DESCRIPTION=`.``*`Assertion failure: caller->fun && !JSFUN_HEAVYWEIGHT_TEST(caller->fun->flags), at `.``*`jsscript.c:
 TEST_ID=js1_5/Regress/regress-362583.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=
 TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 10 SIGBUS, TEST_DESCRIPTION=
-TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 11 SIGSEGV, TEST_DESCRIPTION=
-TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 10 SIGBUS, TEST_DESCRIPTION=
+TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 11 SIGSEGV, TEST_DESCRIPTION=
 TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 10 SIGBUS, TEST_DESCRIPTION=
 TEST_ID=js1_5/Regress/regress-3649-n.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 11 SIGSEGV, TEST_DESCRIPTION=
 TEST_ID=js1_5/Regress/regress-366601.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/js1_5/Regress/regress-366601.js:`.``*`: script too large
 TEST_ID=js1_5/Regress/regress-366601.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=`.``*`/js1_5/Regress/regress-366601.js:`.``*`: InternalError: script too large
 TEST_ID=js1_5/Regress/regress-366601.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=`.``*`/js1_5/Regress/regress-366601.js:`.``*`: script too large
 TEST_ID=js1_5/Regress/regress-366601.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=`.``*`/js1_5/Regress/regress-366601.js:`.``*`: InternalError: script too large
 TEST_ID=js1_5/Regress/regress-383674.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Statement that implicitly calls toString should not be optimized away as a "useless expression": 1 reason: Expected value 'toString called', Actual value 'toString not called'
 TEST_ID=js1_5/Regress/regress-383674.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Statement that implicitly calls toString should not be optimized away as a "useless expression": 2 reason: Expected value 'toString called', Actual value 'toString not called'
 TEST_ID=js1_5/Regress/regress-422348.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/Regress/regress-422348.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/js1_5/Regress/regress-422348.js:`.``*`: out of memory
 TEST_ID=js1_5/Regress/regress-422348.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/Regress/regress-422348.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/js1_5/Regress/regress-422348.js:`.``*`: out of memory
 TEST_ID=js1_5/Regress/regress-422348.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/Regress/regress-422348.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/js1_5/Regress/regress-422348.js:`.``*`: out of memory
 TEST_ID=js1_5/Regress/regress-452742-02.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Do not do overzealous eval inside function optimization in BindNameToSlot reason: Expected value '', Actual value 'Bad result undefined'
-TEST_ID=js1_5/Regress/regress-477758.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=TM: RegExp source: 1 reason: Expected value 'foo,foo', Actual value 'foo,'
-TEST_ID=js1_5/Regress/regress-477758.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=TM: RegExp source: 2 reason: Expected value 'foo,foo', Actual value 'foo,'
-TEST_ID=js1_5/Regress/regress-477758.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=TM: RegExp source: 3 reason: Expected value 'foo,foo', Actual value 'foo,'
-TEST_ID=js1_5/Regress/regress-477758.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=TM: RegExp source: 1 reason: Expected value 'foo,foo', Actual value 'foo,'
-TEST_ID=js1_5/Regress/regress-477758.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=TM: RegExp source: 2 reason: Expected value 'foo,foo', Actual value 'foo,'
-TEST_ID=js1_5/Regress/regress-477758.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=TM: RegExp source: 3 reason: Expected value 'foo,foo', Actual value 'foo,'
-TEST_ID=js1_5/Regress/regress-477758.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=TM: RegExp source: 1 reason: Expected value 'foo,foo', Actual value 'foo,'
-TEST_ID=js1_5/Regress/regress-477758.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=TM: RegExp source: 2 reason: Expected value 'foo,foo', Actual value 'foo,'
-TEST_ID=js1_5/Regress/regress-477758.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=TM: RegExp source: 3 reason: Expected value 'foo,foo', Actual value 'foo,'
-TEST_ID=js1_5/Regress/regress-68498-003.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Testing calling obj.eval(str); currently at expect[0] within test - reason: Type mismatch, expected type number, actual type undefined Expected value '43', Actual value 'undefined'
-TEST_ID=js1_5/Regress/regress-68498-003.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Testing calling obj.eval(str); currently at expect[0] within test - reason: Type mismatch, expected type number, actual type undefined Expected value '43', Actual value 'undefined'
-TEST_ID=js1_5/Regress/regress-68498-003.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Testing calling obj.eval(str); currently at expect[1] within test - reason: Type mismatch, expected type number, actual type undefined Expected value '43', Actual value 'undefined'
-TEST_ID=js1_5/Regress/regress-68498-003.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Testing calling obj.eval(str); currently at expect[3] within test - reason: Expected value 'false', Actual value 'true'
+TEST_ID=js1_5/Regress/regress-68498-003.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Testing calling obj.eval(str); currently at expect[0] within test - reason: Type mismatch, expected type number, actual type undefined Expected value '43', Actual value 'undefined'
+TEST_ID=js1_5/Regress/regress-68498-003.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Testing calling obj.eval(str); currently at expect[1] within test - reason: Type mismatch, expected type number, actual type undefined Expected value '43', Actual value 'undefined'
+TEST_ID=js1_5/Regress/regress-68498-003.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Testing calling obj.eval(str); currently at expect[3] within test - reason: Expected value 'false', Actual value 'true'
 TEST_ID=js1_5/Scope/regress-446026-01.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=brian loves eval(s, o) reason: Expected value 'ReferenceError: a is not defined | undefined | 45', Actual value ' | 21 | 45'
 TEST_ID=js1_5/decompilation/regress-351219.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of immutable infinity, NaN decompile Infinity as 1/0 reason: Expected value ' function ( ) { return 1 / 0 ; } ', Actual value ' function ( ) { return Infinity ; } '
 TEST_ID=js1_5/decompilation/regress-351219.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of immutable infinity, NaN: decompile NaN as 0/0 reason: Expected value ' function ( ) { var NaN = 0 / 0 ; return NaN ; } ', Actual value ' function ( ) { var NaN = NaN ; return NaN ; } '
 TEST_ID=js1_5/decompilation/regress-352013.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=decompilation of new parenthetic expressions reason: Expected value ' function ( ) { new ( x ( y ) ( z ) ) ; } ', Actual value ' function ( ) { new x ( y ) ( z ) ; } '
 TEST_ID=js1_5/decompilation/regress-352013.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=decompilation of new parenthetic expressions reason: Expected value ' function ( ) { new ( x ( y ) . z ) ; } ', Actual value ' function ( ) { new x ( y ) . z ; } '
 TEST_ID=js1_5/decompilation/regress-352013.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=decompilation of new parenthetic expressions reason: Expected value ' function ( ) { new ( x ( z ) ) ( w ) ; } ', Actual value ' function ( ) { new x ( z ) ( w ) ; } '
 TEST_ID=js1_5/decompilation/regress-352360.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of negative 0 reason: Expected value ' function ( ) { return - 0 ; } ', Actual value ' function ( ) { return 0 ; } '
 TEST_ID=js1_5/decompilation/regress-352360.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of negative 0: 8 / eval("" + f)() reason: Expected value '-Infinity', Actual value 'Infinity'
@@ -479,80 +436,57 @@ TEST_ID=js1_5/decompilation/regress-4430
 TEST_ID=js1_5/decompilation/regress-443071-01.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/decompilation/regress-443071-01.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/js1_5/decompilation/regress-443071-01.js:`.``*`: out of memory
 TEST_ID=js1_5/decompilation/regress-443071-01.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 5 SIGTRAP, TEST_DESCRIPTION=`.``*`Assertion failure: top < ss->printer->script->depth, at `.``*`jsopcode.c:
 TEST_ID=js1_5/decompilation/regress-460501.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of constant folding with && and valueOf, eval reason: Expected value ' function ( ) { if ( w . eval ( ) ) { } } ', Actual value ' function ( ) { if ( 1 && w . eval ( ) ) { } } '
 TEST_ID=js1_5/decompilation/regress-460501.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of constant folding with && and valueOf, eval reason: Expected value ' function ( ) { if ( w . valueOf ( ) ) { } } ', Actual value ' function ( ) { if ( 1 && w . valueOf ( ) ) { } } '
 TEST_ID=js1_5/decompilation/regress-460501.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of constant folding with && and valueOf, eval reason: Expected value ' function ( ) { if ( w . eval ( ) ) { } } ', Actual value ' function ( ) { if ( ( 1 && w . eval ( ) ) ) { } } '
 TEST_ID=js1_5/decompilation/regress-460501.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of constant folding with && and valueOf, eval reason: Expected value ' function ( ) { if ( w . valueOf ( ) ) { } } ', Actual value ' function ( ) { if ( ( 1 && w . valueOf ( ) ) ) { } } '
 TEST_ID=js1_5/decompilation/regress-460870.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of (function() { if (a || 1 || 2) { } }) reason: Expected value ' function ( ) { if ( a || true ) { } } ', Actual value ' function ( ) { if ( a || 1 || 2 ) { } } '
-TEST_ID=js1_5/extensions/regress-164697.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=([]).__proto__ == Array.prototype reason: Expected value 'true', Actual value 'false'
-TEST_ID=js1_5/extensions/regress-164697.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=(new Array()).__proto__ == Array.prototype reason: Expected value 'true', Actual value 'false'
 TEST_ID=js1_5/extensions/regress-304897.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=uneval("\t"), uneval("\x09") reason: Expected value '"\t"', Actual value '"\x09"'
 TEST_ID=js1_5/extensions/regress-322957.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=TryMethod should not eat getter exceptions reason: Type mismatch, expected type boolean, actual type number Expected value 'true', Actual value '-1'
 TEST_ID=js1_5/extensions/regress-322957.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=TryMethod should not eat getter exceptions reason: Type mismatch, expected type boolean, actual type number Expected value 'true', Actual value '-1'
 TEST_ID=js1_5/extensions/regress-322957.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=TryMethod should not eat getter exceptions reason: Type mismatch, expected type boolean, actual type number Expected value 'true', Actual value '-1'
 TEST_ID=js1_5/extensions/regress-330569.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-336409-1.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/extensions/regress-336409-1.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/extensions/regress-336409-1.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=3, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/extensions/regress-336409-1.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/extensions/regress-336409-1.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 9 SIGKILL, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-336409-1.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/extensions/regress-336409-1.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=js1_5/extensions/regress-336409-1.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/extensions/regress-336409-1.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/extensions/regress-336409-1.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/extensions/regress-336409-1.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/extensions/regress-336409-1.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/extensions/regress-336409-1.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/extensions/regress-336409-1.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/extensions/regress-336409-2.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/extensions/regress-336410-1.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/extensions/regress-336410-1.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/extensions/regress-336410-1.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/extensions/regress-336410-1.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/extensions/regress-336410-1.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/extensions/regress-336410-1.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/extensions/regress-336410-1.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
 TEST_ID=js1_5/extensions/regress-336410-2.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/extensions/regress-342960.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/extensions/regress-342960.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-342960.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
-TEST_ID=js1_5/extensions/regress-342960.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=No test results reported
+TEST_ID=js1_5/extensions/regress-342960.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
+TEST_ID=js1_5/extensions/regress-342960.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
+TEST_ID=js1_5/extensions/regress-342960.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
+TEST_ID=js1_5/extensions/regress-342960.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=(NORMAL|TIMED OUT), TEST_DESCRIPTION=`(`No test results reported`)``?`
 TEST_ID=js1_5/extensions/regress-342960.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-342960.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=darwin, TEST_KERNEL=9.6.0, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=none, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=9.6.0, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=.*, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-345967.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=amd32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/js1_5/extensions/regress-350531.js:`.``*`: out of memory
+TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.1, TEST_REPO=mozilla-1.9.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.1, TEST_REPO=tracemonkey, TEST_BUILDTYPE=opt, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/js1_5/extensions/regress-350531.js:`.``*`: out of memory
-TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
-TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=-j, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
+TEST_ID=js1_5/extensions/regress-350531.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=; messages: BUGNUMBER: 350531; ./js1_5/extensions/regress-350531.js:`.``*`: out of memory
 TEST_ID=js1_5/extensions/regress-351448.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=TIMED OUT, TEST_DESCRIPTION=
 TEST_ID=js1_5/extensions/regress-351463-01.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Treat hyphens as not special adjacent to CharacterClassEscapes in character classes: /([\d-\S]+)/.exec("a0- z") reason: Expected value 'a0-,a0-', Actual value 'SyntaxError: invalid range in character class'
 TEST_ID=js1_5/extensions/regress-351463-01.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Treat hyphens as not special adjacent to CharacterClassEscapes in character classes: /([\d-\s]+)/.exec("a0- z") reason: Expected value '0- ,0- ', Actual value 'SyntaxError: invalid range in character class'
 TEST_ID=js1_5/extensions/regress-352455.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Eval object with non-function getters/setters reason: Expected value 'SyntaxError: invalid getter usage', Actual value ''
 TEST_ID=js1_5/extensions/regress-352604.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Do not assert: !OBJ_GET_PROTO(cx, ctor) reason: Expected value 'function f() {NL}', Actual value 'function () {NL}'
 TEST_ID=js1_5/extensions/regress-353214.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=decompilation of |function() { (function ([x]) { })(); eval("return 3;") }| reason: Expected value ' function ( ) { ( function ( [ x ] ) { } ( ) ) ; eval ( " return 3 ;" ) ; } ', Actual value ' function ( ) { ( function ( [ x ] ) { } ) ( ) ; eval ( " return 3 ;" ) ; } '
 TEST_ID=js1_5/extensions/regress-355622.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 6 SIGABRT, TEST_DESCRIPTION=`.``*`Assertion failure: overwriting, at `.``*`jsscope.c:
 TEST_ID=js1_5/extensions/regress-355622.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=.*, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=
@@ -562,17 +496,16 @@ TEST_ID=js1_5/extensions/regress-355736.
 TEST_ID=js1_5/extensions/regress-355736.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of "[reserved]" has extra quotes: 3 reason: Expected value ' function ( ) { [ goto ] = a ; } ', Actual value ' function ( ) { [ " goto " ] = a ; } '
 TEST_ID=js1_5/extensions/regress-355736.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of "[reserved]" has extra quotes: 3: compile actual reason: Expected value 'No Error', Actual value 'SyntaxError: invalid assignment left-hand side'
 TEST_ID=js1_5/extensions/regress-356085.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=js_obj_toString for getter/setter reason: Expected value ' ( { set p y ( ) { } } ) ', Actual value ' ( { set p ( ) { } } ) '
 TEST_ID=js1_5/extensions/regress-365869.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=strict warning for object literal with duplicate propery names reason: Expected value 'TypeError: redeclaration of property 1', Actual value 'No warning'
 TEST_ID=js1_5/extensions/regress-365869.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=strict warning for object literal with duplicate propery names reason: Expected value 'TypeError: redeclaration of property a', Actual value 'No warning'
 TEST_ID=js1_5/extensions/regress-367923.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=strict warning for variable redeclares argument reason: Expected value 'TypeError: variable v redeclares argument', Actual value 'TypeError: variable v hides argument'
 TEST_ID=js1_5/extensions/regress-371636.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=browser, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Numeric sort performance reason: Expected value '(tint/tstr < 3)=true', Actual value '(tint/tstr < 3)=false'
 TEST_ID=js1_5/extensions/regress-371636.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 5, TEST_DESCRIPTION=`.``*`/js1_5/extensions/regress-371636.js:`.``*`: out of memory
-TEST_ID=js1_5/extensions/regress-371636.js, TEST_BRANCH=1.9.0, TEST_REPO=CVS, TEST_BUILDTYPE=opt, TEST_TYPE=shell, TEST_OS=linux, TEST_KERNEL=.*, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Numeric sort performance reason: Expected value '(tint/tstr < 3)=true', Actual value '(tint/tstr < 3)=false'
 TEST_ID=js1_5/extensions/regress-375801.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=uneval should use "(void 0)" instead of "undefined": uneval reason: Expected value ' ( { a : ( void 0 ) } ) ', Actual value ' ( { a : undefined } ) '
 TEST_ID=js1_5/extensions/regress-376052.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=shell, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=javascript.options.anonfunfix to allow function (){} expressions: 3 reason: Expected value 'SyntaxError: syntax error', Actual value 'No Error'
 TEST_ID=js1_5/extensions/regress-379523.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of sharp declaration: 1 reason: Expected value ' ( function ( ) { return # 1 = [ a ] ; } ) ', Actual value ' ( function ( ) { return # 1 = [ , a ] ; } ) '
 TEST_ID=js1_5/extensions/regress-379523.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of sharp declaration: 1 reason: Expected value ' ( function ( ) { return # 1 = { a : b } ; } ) ', Actual value ' ( function ( ) { return # 1 = { , a : b } ; } ) '
 TEST_ID=js1_5/extensions/regress-379523.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Decompilation of sharp declaration: 1: compile actual reason: Expected value 'No Error', Actual value 'SyntaxError: invalid property id'
 TEST_ID=js1_5/extensions/regress-380831.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=uneval trying to output a getter function that is a sharp definition reason: Expected value ' ( { b getter : # 1 = ( function ( ) { } ) , c getter : # 1 # } ) ', Actual value ' ( { b getter : # 1 = ( ) { } , c getter : # 1 # } ) '
 TEST_ID=js1_5/extensions/regress-380889.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=darwin, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=CRASHED signal 6 SIGABRT, TEST_DESCRIPTION=`.``*`Assertion failure: op == JSOP_LOOKUPSWITCH, at `.``*`js.c:
 TEST_ID=js1_5/extensions/regress-380889.js, TEST_BRANCH=1.8.1, TEST_REPO=CVS, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=nt, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=ABNORMAL 3, TEST_DESCRIPTION=
@@ -606,20 +539,22 @@ TEST_ID=js1_5/extensions/regress-435345-
 TEST_ID=js1_5/extensions/regress-435345-01.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Watch the length property of arrays: 4 reason: Expected value 'watcher: propname=length, oldval=1, newval=2; ', Actual value 'watcher: propname=length, oldval=undefined, newval=2; '
 TEST_ID=js1_5/extensions/regress-435345-01.js, TEST_BRANCH=1.9.1, TEST_REPO=.*, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Watch the length property of arrays: 5 reason: Expected value 'watcher: propname=length, oldval=2, newval=5; ', Actual value 'watcher: propname=length, oldval=undefined, newval=5; '
 TEST_ID=js1_5/extensions/regress-435345-01.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Watch the length property of arrays: 1 reason: Expected value 'watcher: propname=length, oldval=0, newval=1; ', Actual value ''
 TEST_ID=js1_5/extensions/regress-435345-01.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Watch the length property of arrays: 2 reason: Expected value 'watcher: propname=length, oldval=1, newval=2; watcher: propname=length, oldval=2, newval=2; ', Actual value 'watcher: propname=length, oldval=undefined, newval=2; '
 TEST_ID=js1_5/extensions/regress-435345-01.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Watch the length property of arrays: 3 reason: Expected value 'watcher: propname=length, oldval=2, newval=1; ', Actual value 'watcher: propname=length, oldval=undefined, newval=1; '
 TEST_ID=js1_5/extensions/regress-435345-01.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*, TEST_KERNEL=.*, TEST_PROCESSORTYPE=.*, TEST_MEMORY=.*, TEST_TIMEZONE=.*, TEST_OPTIONS=.*, TEST_RESULT=FAILED, TEST_EXITSTATUS=NORMAL, TEST_DESCRIPTION=Watch the length property of arrays: 4 reason: Expected value 'watcher: propname=length, oldval=1, newval=2; ', Actual value 'watcher: propname=length, oldval=undefined, newval=2; '
 TEST_ID=js1_5/extensions/regress-435345-01.js, TEST_BRANCH=1.9.2, TEST_REPO=mozilla-central, TEST_BUILDTYPE=.*, TEST_TYPE=.*, TEST_OS=.*