[webkit-changes] cvs commit: WebCore/layout-tests/fast/js eval-var-decl.html has-own-property.html

Maciej mjs at opensource.apple.com
Sun Jul 3 03:47:58 PDT 2005


mjs         05/07/03 03:47:58

  Modified:    .        ChangeLog
               .        ChangeLog
               bindings runtime_array.cpp runtime_array.h
                        runtime_object.cpp runtime_object.h
               bindings/objc objc_runtime.h objc_runtime.mm
               kjs      array_instance.h array_object.cpp function.cpp
                        function.h lookup.h object.cpp object.h
                        object_object.cpp object_object.h string_object.cpp
                        string_object.h
               tests/mozilla expected.html
               khtml/ecma kjs_css.cpp kjs_css.h kjs_dom.cpp kjs_dom.h
                        kjs_html.cpp kjs_html.h kjs_window.cpp kjs_window.h
  Added:       layout-tests/fast/js eval-var-decl.html
                        has-own-property.html
  Log:
  JavaScriptCore:
  
  	Original patch from Mark Rowe <opendarwin.org at bdash.net.nz>, reviewed by me.
  	Fixes to patch by me, reviewed by John Sullivan.
  
  	- fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=3293
  
          Test cases added:
          * tests/mozilla/expected.html: Two tests newly pass.
  
          * bindings/objc/objc_runtime.h:
          * bindings/objc/objc_runtime.mm:
          (ObjcFallbackObjectImp::hasOwnProperty):
          * bindings/runtime_array.cpp:
          (RuntimeArrayImp::hasOwnProperty):
          * bindings/runtime_array.h:
          * bindings/runtime_object.cpp:
          (RuntimeObjectImp::hasOwnProperty):
          * bindings/runtime_object.h:
          * kjs/array_instance.h:
          * kjs/array_object.cpp:
          (ArrayInstanceImp::hasOwnProperty):
          * kjs/function.cpp:
          (KJS::FunctionImp::hasOwnProperty):
          (KJS::ActivationImp::hasOwnProperty):
          * kjs/function.h:
          * kjs/lookup.h:
          * kjs/object.cpp:
          (KJS::ObjectImp::hasProperty):
          (KJS::ObjectImp::hasOwnProperty):
          * kjs/object.h:
          (KJS::Object::hasOwnProperty):
          * kjs/object_object.cpp:
          (ObjectPrototypeImp::ObjectPrototypeImp):
          (ObjectProtoFuncImp::call):
          * kjs/object_object.h:
          (KJS::ObjectProtoFuncImp::):
          * kjs/string_object.cpp:
          (StringInstanceImp::hasOwnProperty):
          * kjs/string_object.h:
  
  WebCore:
  
  	Original patch from Mark Rowe <opendarwin.org at bdash.net.nz>, reviewed by me.
  	Fixes to patch by me, reviewed by John Sullivan.
  
  	- fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=3293
  
          Test cases added:
          * layout-tests/fast/js/has-own-property.html: Added - tests this change.
          * layout-tests/fast/js/eval-var-decl.html: Added - test depends on this change.
  
          * khtml/ecma/kjs_css.cpp:
          (KJS::DOMCSSStyleDeclaration::hasOwnProperty):
          * khtml/ecma/kjs_css.h:
          * khtml/ecma/kjs_dom.cpp:
          (KJS::DOMNodeList::hasOwnProperty):
          (KJS::DOMElement::tryGet):
          (KJS::DOMNamedNodeMap::hasOwnProperty):
          * khtml/ecma/kjs_dom.h:
          * khtml/ecma/kjs_html.cpp:
          (KJS::HTMLDocument::hasOwnProperty):
          (KJS::HTMLDocument::tryGet):
          (KJS::KJS::HTMLElement::hasOwnProperty):
          (KJS::KJS::HTMLCollection::hasOwnProperty):
          * khtml/ecma/kjs_html.h:
          * khtml/ecma/kjs_window.cpp:
          (KJS::Window::hasOwnProperty):
          (KJS::Konqueror::hasOwnProperty):
          * khtml/ecma/kjs_window.h:
  
  Revision  Changes    Path
  1.4358    +30 -0     WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.4357
  retrieving revision 1.4358
  diff -u -r1.4357 -r1.4358
  --- ChangeLog	3 Jul 2005 10:13:47 -0000	1.4357
  +++ ChangeLog	3 Jul 2005 10:47:44 -0000	1.4358
  @@ -1,3 +1,33 @@
  +2005-07-03  Maciej Stachowiak  <mjs at apple.com>
  +
  +	Original patch from Mark Rowe <opendarwin.org at bdash.net.nz>, reviewed by me.
  +	Fixes to patch by me, reviewed by John Sullivan.
  +
  +	- fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=3293
  +
  +        Test cases added:
  +        * layout-tests/fast/js/has-own-property.html: Added - tests this change.
  +        * layout-tests/fast/js/eval-var-decl.html: Added - test depends on this change.
  +
  +        * khtml/ecma/kjs_css.cpp:
  +        (KJS::DOMCSSStyleDeclaration::hasOwnProperty):
  +        * khtml/ecma/kjs_css.h:
  +        * khtml/ecma/kjs_dom.cpp:
  +        (KJS::DOMNodeList::hasOwnProperty):
  +        (KJS::DOMElement::tryGet):
  +        (KJS::DOMNamedNodeMap::hasOwnProperty):
  +        * khtml/ecma/kjs_dom.h:
  +        * khtml/ecma/kjs_html.cpp:
  +        (KJS::HTMLDocument::hasOwnProperty):
  +        (KJS::HTMLDocument::tryGet):
  +        (KJS::KJS::HTMLElement::hasOwnProperty):
  +        (KJS::KJS::HTMLCollection::hasOwnProperty):
  +        * khtml/ecma/kjs_html.h:
  +        * khtml/ecma/kjs_window.cpp:
  +        (KJS::Window::hasOwnProperty):
  +        (KJS::Konqueror::hasOwnProperty):
  +        * khtml/ecma/kjs_window.h:
  +
   2005-07-03  Eric Seidel  <eseidel at apple.com>
   
           Reviewed by mjs.
  
  
  
  1.737     +41 -0     JavaScriptCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/ChangeLog,v
  retrieving revision 1.736
  retrieving revision 1.737
  diff -u -r1.736 -r1.737
  --- ChangeLog	1 Jul 2005 18:56:31 -0000	1.736
  +++ ChangeLog	3 Jul 2005 10:47:50 -0000	1.737
  @@ -1,3 +1,44 @@
  +2005-07-03  Maciej Stachowiak  <mjs at apple.com>
  +
  +	Original patch from Mark Rowe <opendarwin.org at bdash.net.nz>, reviewed by me.
  +	Fixes to patch by me, reviewed by John Sullivan.
  +
  +	- fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=3293
  +
  +        Test cases added:
  +        * tests/mozilla/expected.html: Two tests newly pass.
  +
  +        * bindings/objc/objc_runtime.h:
  +        * bindings/objc/objc_runtime.mm:
  +        (ObjcFallbackObjectImp::hasOwnProperty):
  +        * bindings/runtime_array.cpp:
  +        (RuntimeArrayImp::hasOwnProperty):
  +        * bindings/runtime_array.h:
  +        * bindings/runtime_object.cpp:
  +        (RuntimeObjectImp::hasOwnProperty):
  +        * bindings/runtime_object.h:
  +        * kjs/array_instance.h:
  +        * kjs/array_object.cpp:
  +        (ArrayInstanceImp::hasOwnProperty):
  +        * kjs/function.cpp:
  +        (KJS::FunctionImp::hasOwnProperty):
  +        (KJS::ActivationImp::hasOwnProperty):
  +        * kjs/function.h:
  +        * kjs/lookup.h:
  +        * kjs/object.cpp:
  +        (KJS::ObjectImp::hasProperty):
  +        (KJS::ObjectImp::hasOwnProperty):
  +        * kjs/object.h:
  +        (KJS::Object::hasOwnProperty):
  +        * kjs/object_object.cpp:
  +        (ObjectPrototypeImp::ObjectPrototypeImp):
  +        (ObjectProtoFuncImp::call):
  +        * kjs/object_object.h:
  +        (KJS::ObjectProtoFuncImp::):
  +        * kjs/string_object.cpp:
  +        (StringInstanceImp::hasOwnProperty):
  +        * kjs/string_object.h:
  +
   2005-07-01  Geoffrey Garen  <ggaren at apple.com>
   
           -landed patch by Eric Seidel <macdome at opendarwin.org>
  
  
  
  1.7       +3 -3      JavaScriptCore/bindings/runtime_array.cpp
  
  Index: runtime_array.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/runtime_array.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- runtime_array.cpp	22 Jun 2005 00:48:46 -0000	1.6
  +++ runtime_array.cpp	3 Jul 2005 10:47:51 -0000	1.7
  @@ -96,7 +96,7 @@
   }
   
   
  -bool RuntimeArrayImp::hasProperty(ExecState *exec, const Identifier &propertyName) const
  +bool RuntimeArrayImp::hasOwnProperty(ExecState *exec, const Identifier &propertyName) const
   {
       if (propertyName == lengthPropertyName)
           return true;
  @@ -109,10 +109,10 @@
           return true;
       }
       
  -    return ObjectImp::hasProperty(exec, propertyName);
  +    return ObjectImp::hasOwnProperty(exec, propertyName);
   }
   
  -bool RuntimeArrayImp::hasProperty(ExecState *exec, unsigned index) const
  +bool RuntimeArrayImp::hasOwnProperty(ExecState *exec, unsigned index) const
   {
       if (index >= getLength())
           return false;
  
  
  
  1.9       +2 -2      JavaScriptCore/bindings/runtime_array.h
  
  Index: runtime_array.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/runtime_array.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- runtime_array.h	22 Jun 2005 00:48:46 -0000	1.8
  +++ runtime_array.h	3 Jul 2005 10:47:51 -0000	1.9
  @@ -42,8 +42,8 @@
       virtual void put(ExecState *exec, const Identifier &propertyName, const Value &value, int attr = None);
       virtual void put(ExecState *exec, unsigned propertyName, const Value &value, int attr = None);
       
  -    virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const;
  -    virtual bool hasProperty(ExecState *exec, unsigned propertyName) const;
  +    virtual bool hasOwnProperty(ExecState *exec, const Identifier &propertyName) const;
  +    virtual bool hasOwnProperty(ExecState *exec, unsigned propertyName) const;
       virtual bool deleteProperty(ExecState *exec, const Identifier &propertyName);
       virtual bool deleteProperty(ExecState *exec, unsigned propertyName);
       
  
  
  
  1.25      +1 -1      JavaScriptCore/bindings/runtime_object.cpp
  
  Index: runtime_object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/runtime_object.cpp,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- runtime_object.cpp	22 Jun 2005 00:48:46 -0000	1.24
  +++ runtime_object.cpp	3 Jul 2005 10:47:51 -0000	1.25
  @@ -131,7 +131,7 @@
       return result;
   }
   
  -bool RuntimeObjectImp::hasProperty(ExecState *exec,
  +bool RuntimeObjectImp::hasOwnProperty(ExecState *exec,
                               const Identifier &propertyName) const
   {
       bool result = false;
  
  
  
  1.13      +1 -1      JavaScriptCore/bindings/runtime_object.h
  
  Index: runtime_object.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/runtime_object.h,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- runtime_object.h	22 Jun 2005 00:48:46 -0000	1.12
  +++ runtime_object.h	3 Jul 2005 10:47:51 -0000	1.13
  @@ -48,7 +48,7 @@
   
       virtual bool canPut(ExecState *exec, const Identifier &propertyName) const;
   
  -    virtual bool hasProperty(ExecState *exec,
  +    virtual bool hasOwnProperty(ExecState *exec,
   			     const Identifier &propertyName) const;
   
   
  
  
  
  1.10      +1 -1      JavaScriptCore/bindings/objc/objc_runtime.h
  
  Index: objc_runtime.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/objc/objc_runtime.h,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- objc_runtime.h	22 Jun 2005 00:48:47 -0000	1.9
  +++ objc_runtime.h	3 Jul 2005 10:47:52 -0000	1.10
  @@ -179,7 +179,7 @@
       virtual bool implementsCall() const;
       virtual Value call(ExecState *exec, Object &thisObj, const List &args);
   
  -    virtual bool hasProperty(ExecState *exec,
  +    virtual bool hasOwnProperty(ExecState *exec,
   			     const Identifier &propertyName) const;
   
   
  
  
  
  1.16      +1 -1      JavaScriptCore/bindings/objc/objc_runtime.mm
  
  Index: objc_runtime.mm
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/bindings/objc/objc_runtime.mm,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- objc_runtime.mm	22 Jun 2005 00:48:47 -0000	1.15
  +++ objc_runtime.mm	3 Jul 2005 10:47:52 -0000	1.16
  @@ -332,7 +332,7 @@
       return result;
   }
   
  -bool ObjcFallbackObjectImp::hasProperty(ExecState *exec,
  +bool ObjcFallbackObjectImp::hasOwnProperty(ExecState *exec,
                            const Identifier &propertyName) const
   {
       return false;
  
  
  
  1.12      +2 -2      JavaScriptCore/kjs/array_instance.h
  
  Index: array_instance.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/array_instance.h,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- array_instance.h	22 Jun 2005 00:48:47 -0000	1.11
  +++ array_instance.h	3 Jul 2005 10:47:52 -0000	1.12
  @@ -37,8 +37,8 @@
       virtual Value get(ExecState *exec, unsigned propertyName) const;
       virtual void put(ExecState *exec, const Identifier &propertyName, const Value &value, int attr = None);
       virtual void put(ExecState *exec, unsigned propertyName, const Value &value, int attr = None);
  -    virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const;
  -    virtual bool hasProperty(ExecState *exec, unsigned propertyName) const;
  +    virtual bool hasOwnProperty(ExecState *exec, const Identifier &propertyName) const;
  +    virtual bool hasOwnProperty(ExecState *exec, unsigned propertyName) const;
       virtual bool deleteProperty(ExecState *exec, const Identifier &propertyName);
       virtual bool deleteProperty(ExecState *exec, unsigned propertyName);
       virtual ReferenceList propList(ExecState *exec, bool recursive);
  
  
  
  1.43      +4 -4      JavaScriptCore/kjs/array_object.cpp
  
  Index: array_object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/array_object.cpp,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- array_object.cpp	30 Jun 2005 01:19:42 -0000	1.42
  +++ array_object.cpp	3 Jul 2005 10:47:52 -0000	1.43
  @@ -138,7 +138,7 @@
     ObjectImp::put(exec, Identifier::from(index), value, attr);
   }
   
  -bool ArrayInstanceImp::hasProperty(ExecState *exec, const Identifier &propertyName) const
  +bool ArrayInstanceImp::hasOwnProperty(ExecState *exec, const Identifier &propertyName) const
   {
     if (propertyName == lengthPropertyName)
       return true;
  @@ -154,10 +154,10 @@
       }
     }
     
  -  return ObjectImp::hasProperty(exec, propertyName);
  +  return ObjectImp::hasOwnProperty(exec, propertyName);
   }
   
  -bool ArrayInstanceImp::hasProperty(ExecState *exec, unsigned index) const
  +bool ArrayInstanceImp::hasOwnProperty(ExecState *exec, unsigned index) const
   {
     if (index >= length)
       return false;
  @@ -166,7 +166,7 @@
       return v && v != UndefinedImp::staticUndefined;
     }
     
  -  return ObjectImp::hasProperty(exec, Identifier::from(index));
  +  return ObjectImp::hasOwnProperty(exec, Identifier::from(index));
   }
   
   bool ArrayInstanceImp::deleteProperty(ExecState *exec, const Identifier &propertyName)
  
  
  
  1.43      +4 -4      JavaScriptCore/kjs/function.cpp
  
  Index: function.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/function.cpp,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- function.cpp	22 Jun 2005 00:48:47 -0000	1.42
  +++ function.cpp	3 Jul 2005 10:47:52 -0000	1.43
  @@ -237,11 +237,11 @@
       InternalFunctionImp::put(exec, propertyName, value, attr);
   }
   
  -bool FunctionImp::hasProperty(ExecState *exec, const Identifier &propertyName) const
  +bool FunctionImp::hasOwnProperty(ExecState *exec, const Identifier &propertyName) const
   {
       if (propertyName == argumentsPropertyName || propertyName == lengthPropertyName)
           return true;
  -    return InternalFunctionImp::hasProperty(exec, propertyName);
  +    return InternalFunctionImp::hasOwnProperty(exec, propertyName);
   }
   
   bool FunctionImp::deleteProperty(ExecState *exec, const Identifier &propertyName)
  @@ -357,11 +357,11 @@
       return ObjectImp::get(exec, propertyName);
   }
   
  -bool ActivationImp::hasProperty(ExecState *exec, const Identifier &propertyName) const
  +bool ActivationImp::hasOwnProperty(ExecState *exec, const Identifier &propertyName) const
   {
       if (propertyName == argumentsPropertyName)
           return true;
  -    return ObjectImp::hasProperty(exec, propertyName);
  +    return ObjectImp::hasOwnProperty(exec, propertyName);
   }
   
   bool ActivationImp::deleteProperty(ExecState *exec, const Identifier &propertyName)
  
  
  
  1.23      +2 -2      JavaScriptCore/kjs/function.h
  
  Index: function.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/function.h,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- function.h	22 Jun 2005 00:48:47 -0000	1.22
  +++ function.h	3 Jul 2005 10:47:53 -0000	1.23
  @@ -43,7 +43,7 @@
   
       virtual Value get(ExecState *exec, const Identifier &propertyName) const;
       virtual void put(ExecState *exec, const Identifier &propertyName, const Value &value, int attr = None);
  -    virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const;
  +    virtual bool hasOwnProperty(ExecState *exec, const Identifier &propertyName) const;
       virtual bool deleteProperty(ExecState *exec, const Identifier &propertyName);
   
       virtual bool implementsCall() const;
  @@ -104,7 +104,7 @@
       ActivationImp(FunctionImp *function, const List &arguments);
   
       virtual Value get(ExecState *exec, const Identifier &propertyName) const;
  -    virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const;
  +    virtual bool hasOwnProperty(ExecState *exec, const Identifier &propertyName) const;
       virtual bool deleteProperty(ExecState *exec, const Identifier &propertyName);
   
       virtual const ClassInfo *classInfo() const { return &info; }
  
  
  
  1.11      +6 -6      JavaScriptCore/kjs/lookup.h
  
  Index: lookup.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/lookup.h,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- lookup.h	1 Jul 2005 18:56:32 -0000	1.10
  +++ lookup.h	3 Jul 2005 10:47:53 -0000	1.11
  @@ -294,7 +294,7 @@
       virtual const ClassInfo *classInfo() const { return &info; } \
       static const ClassInfo info; \
       Value get(ExecState *exec, const Identifier &propertyName) const; \
  -    bool hasProperty(ExecState *exec, const Identifier &propertyName) const; \
  +    bool hasOwnProperty(ExecState *exec, const Identifier &propertyName) const; \
     }; \
     const ClassInfo ClassProto::info = { ClassName, 0, &ClassProto##Table, 0 };
   
  @@ -304,9 +304,9 @@
         /*fprintf( stderr, "%sProto::get(%s) [in macro, no parent]\n", info.className, propertyName.ascii());*/ \
         return lookupGetFunction<ClassFunc,ObjectImp>(exec, propertyName, &ClassProto##Table, this ); \
       } \
  -    bool ClassProto::hasProperty(ExecState *exec, const Identifier &propertyName) const \
  +    bool ClassProto::hasOwnProperty(ExecState *exec, const Identifier &propertyName) const \
       { /*stupid but we need this to have a common macro for the declaration*/ \
  -      return ObjectImp::hasProperty(exec, propertyName); \
  +      return ObjectImp::hasOwnProperty(exec, propertyName); \
       }
   
   #define IMPLEMENT_PROTOTYPE_WITH_PARENT(ClassProto,ClassFunc,ParentProto)  \
  @@ -318,11 +318,11 @@
         /* Not found -> forward request to "parent" prototype */ \
         return ParentProto::self(exec)->get( exec, propertyName ); \
       } \
  -    bool ClassProto::hasProperty(ExecState *exec, const Identifier &propertyName) const \
  +    bool ClassProto::hasOwnProperty(ExecState *exec, const Identifier &propertyName) const \
       { \
  -      if (ObjectImp::hasProperty(exec, propertyName)) \
  +      if (ObjectImp::hasOwnProperty(exec, propertyName)) \
           return true; \
  -      return ParentProto::self(exec)->hasProperty(exec, propertyName); \
  +      return ParentProto::self(exec)->hasOwnProperty(exec, propertyName); \
       }
   
   #define IMPLEMENT_PROTOFUNC(ClassFunc) \
  
  
  
  1.45      +31 -9     JavaScriptCore/kjs/object.cpp
  
  Index: object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/object.cpp,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- object.cpp	29 Jun 2005 20:59:10 -0000	1.44
  +++ object.cpp	3 Jul 2005 10:47:53 -0000	1.45
  @@ -282,30 +282,52 @@
   // ECMA 8.6.2.4
   bool ObjectImp::hasProperty(ExecState *exec, const Identifier &propertyName) const
   {
  +  if (hasOwnProperty(exec, propertyName))
  +    return true;
  +
  +  if (_proto->dispatchType() != ObjectType) {
  +    return false;
  +  }
  +
  +  // Look in the prototype
  +  return static_cast<ObjectImp *>(_proto)->hasProperty(exec, propertyName);
  +}
  +
  +bool ObjectImp::hasProperty(ExecState *exec, unsigned propertyName) const
  +{
  +    if (hasOwnProperty(exec, propertyName))
  +      return true;
  +
  +    if (_proto->dispatchType() != ObjectType) {
  +      return false;
  +    }
  +
  +    // Look in the prototype
  +    return static_cast<ObjectImp *>(_proto)->hasProperty(exec, propertyName);
  +}
  +
  +bool ObjectImp::hasOwnProperty(ExecState *exec, const Identifier &propertyName) const
  +{
     if (_prop.get(propertyName))
       return true;
   
     // Look in the static hashtable of properties
     if (findPropertyHashEntry(propertyName))
  -      return true;
  +    return true;
   
     // non-standard netscape extension
     if (propertyName == specialPrototypePropertyName)
       return true;
   
  -  if (_proto->dispatchType() != ObjectType) {
  -    return false;
  -  }
  -
  -  // Look in the prototype
  -  return static_cast<ObjectImp *>(_proto)->hasProperty(exec, propertyName);
  +  return false;
   }
   
  -bool ObjectImp::hasProperty(ExecState *exec, unsigned propertyName) const
  +bool ObjectImp::hasOwnProperty(ExecState *exec, unsigned propertyName) const
   {
  -  return hasProperty(exec, Identifier::from(propertyName));
  +  return hasOwnProperty(exec, Identifier::from(propertyName));
   }
   
  +
   // ECMA 8.6.2.5
   bool ObjectImp::deleteProperty(ExecState */*exec*/, const Identifier &propertyName)
   {
  
  
  
  1.36      +24 -2     JavaScriptCore/kjs/object.h
  
  Index: object.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/object.h,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- object.h	22 Jun 2005 00:48:47 -0000	1.35
  +++ object.h	3 Jul 2005 10:47:53 -0000	1.36
  @@ -182,6 +182,18 @@
       bool hasProperty(ExecState *exec, unsigned propertyName) const;
   
       /**
  +     * Checks to see whether the object has a property with the specified name.
  +     *
  +     * See ECMA 15.2.4.5
  +     *
  +     * @param exec The current execution state
  +     * @param propertyName The name of the property to check for
  +     * @return true if the object has the property, otherwise false
  +     */
  +    bool hasOwnProperty(ExecState *exec, const Identifier &propertyName) const;
  +    bool hasOwnProperty(ExecState *exec, unsigned propertyName) const;
  +
  +    /**
        * Removes the specified property from the object.
        *
        * See ECMA 8.6.2.5
  @@ -513,9 +525,13 @@
        *
        * @see Object::hasProperty()
        */
  -    virtual bool hasProperty(ExecState *exec,
  +    bool hasProperty(ExecState *exec,
   			     const Identifier &propertyName) const;
  -    virtual bool hasProperty(ExecState *exec, unsigned propertyName) const;
  +    bool hasProperty(ExecState *exec, unsigned propertyName) const;
  +
  +    virtual bool hasOwnProperty(ExecState *exec,
  +    		     const Identifier &propertyName) const;
  +    virtual bool hasOwnProperty(ExecState *exec, unsigned propertyName) const;
   
       /**
        * Implementation of the [[Delete]] internal property (implemented by all
  @@ -693,6 +709,12 @@
     inline bool Object::hasProperty(ExecState *exec, unsigned propertyName) const
       { return imp()->hasProperty(exec, propertyName); }
   
  +  inline bool Object::hasOwnProperty(ExecState *exec, const Identifier &propertyName) const
  +    { return imp()->hasOwnProperty(exec, propertyName); }
  +
  +  inline bool Object::hasOwnProperty(ExecState *exec, unsigned propertyName) const
  +    { return imp()->hasOwnProperty(exec, propertyName); }
  +
     inline bool Object::deleteProperty(ExecState *exec, const Identifier &propertyName)
       { return imp()->deleteProperty(exec,propertyName); }
   
  
  
  
  1.9       +19 -9     JavaScriptCore/kjs/object_object.cpp
  
  Index: object_object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/object_object.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- object_object.cpp	22 Jun 2005 00:48:47 -0000	1.8
  +++ object_object.cpp	3 Jul 2005 10:47:53 -0000	1.9
  @@ -37,9 +37,10 @@
                                          FunctionPrototypeImp *funcProto)
     : ObjectImp() // [[Prototype]] is Null()
   {
  -  Value protect(this);
  -  putDirect(toStringPropertyName, new ObjectProtoFuncImp(exec,funcProto,ObjectProtoFuncImp::ToString, 0), DontEnum);
  -  putDirect(valueOfPropertyName,  new ObjectProtoFuncImp(exec,funcProto,ObjectProtoFuncImp::ValueOf,  0), DontEnum);
  +    Value protect(this);
  +    putDirect(toStringPropertyName, new ObjectProtoFuncImp(exec,funcProto,ObjectProtoFuncImp::ToString,  0), DontEnum);
  +    putDirect(valueOfPropertyName,  new ObjectProtoFuncImp(exec,funcProto,ObjectProtoFuncImp::ValueOf,   0), DontEnum);
  +    putDirect("hasOwnProperty", new ObjectProtoFuncImp(exec,funcProto,ObjectProtoFuncImp::HasOwnProperty,1), DontEnum);
   }
   
   
  @@ -60,14 +61,23 @@
     return true;
   }
   
  -// ECMA 15.2.4.2 + 15.2.4.3
  +// ECMA 15.2.4.2, 15.2.4.4, 15.2.4.5
   
  -Value ObjectProtoFuncImp::call(ExecState */*exec*/, Object &thisObj, const List &/*args*/)
  +Value ObjectProtoFuncImp::call(ExecState *exec, Object &thisObj, const List &args)
   {
  -  if (id == ValueOf)
  -    return thisObj;
  -  else /* ToString */
  -    return String("[object "+thisObj.className()+"]");
  +    switch (id) {
  +        case ValueOf:
  +            return thisObj;
  +        case HasOwnProperty: {
  +            // Same as hasProperty() but without checking the prototype
  +            Identifier propertyName(args[0].toString(exec));
  +            bool exists = thisObj.hasOwnProperty(exec, propertyName);
  +            return Value(exists ? BooleanImp::staticTrue : BooleanImp::staticFalse);
  +        }
  +        case ToString:
  +        default:
  +            return String("[object " + thisObj.className() + "]");
  +    }
   }
   
   // ------------------------------ ObjectObjectImp --------------------------------
  
  
  
  1.6       +1 -1      JavaScriptCore/kjs/object_object.h
  
  Index: object_object.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/object_object.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- object_object.h	22 Jun 2005 00:48:47 -0000	1.5
  +++ object_object.h	3 Jul 2005 10:47:53 -0000	1.6
  @@ -53,7 +53,7 @@
       virtual bool implementsCall() const;
       virtual Value call(ExecState *exec, Object &thisObj, const List &args);
   
  -    enum { ToString, ValueOf };
  +    enum { ToString, ValueOf, HasOwnProperty };
     private:
       int id;
     };
  
  
  
  1.38      +2 -2      JavaScriptCore/kjs/string_object.cpp
  
  Index: string_object.cpp
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/string_object.cpp,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- string_object.cpp	22 Jun 2005 17:26:16 -0000	1.37
  +++ string_object.cpp	3 Jul 2005 10:47:53 -0000	1.38
  @@ -76,7 +76,7 @@
     ObjectImp::put(exec, propertyName, value, attr);
   }
   
  -bool StringInstanceImp::hasProperty(ExecState *exec, const Identifier &propertyName) const
  +bool StringInstanceImp::hasOwnProperty(ExecState *exec, const Identifier &propertyName) const
   {
     if (propertyName == lengthPropertyName)
       return true;
  @@ -89,7 +89,7 @@
         return true;
     }
   
  -  return ObjectImp::hasProperty(exec, propertyName);
  +  return ObjectImp::hasOwnProperty(exec, propertyName);
   }
   
   bool StringInstanceImp::deleteProperty(ExecState *exec, const Identifier &propertyName)
  
  
  
  1.10      +1 -1      JavaScriptCore/kjs/string_object.h
  
  Index: string_object.h
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/kjs/string_object.h,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- string_object.h	22 Jun 2005 00:48:47 -0000	1.9
  +++ string_object.h	3 Jul 2005 10:47:53 -0000	1.10
  @@ -34,7 +34,7 @@
   
       virtual Value get(ExecState *exec, const Identifier &propertyName) const;
       virtual void put(ExecState *exec, const Identifier &propertyName, const Value &value, int attr = None);
  -    virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const;
  +    virtual bool hasOwnProperty(ExecState *exec, const Identifier &propertyName) const;
       virtual bool deleteProperty(ExecState *exec, const Identifier &propertyName);
   
       virtual const ClassInfo *classInfo() const { return &info; }
  
  
  
  1.26      +196 -216  JavaScriptCore/tests/mozilla/expected.html
  
  Index: expected.html
  ===================================================================
  RCS file: /cvs/root/JavaScriptCore/tests/mozilla/expected.html,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- expected.html	1 Jul 2005 18:45:09 -0000	1.25
  +++ expected.html	3 Jul 2005 10:47:55 -0000	1.26
  @@ -7,11 +7,11 @@
   <p class='results_summary'>
   Test List: All tests<br>
   Skip List: ecma/Date<br>
  -967 test(s) selected, 962 test(s) completed, 116 failures reported (12.05% failed)<br>
  -Engine command line: /Users/ggaren/Development/symroots/testkjs <br>
  -OS type: Darwin il0204a-dhcp30.apple.com 8.2.0 Darwin Kernel Version 8.2.0: Fri Jun  3 21:09:06 PDT 2005; root:xnu-792.2.3.obj~1/RELEASE_PPC Power Macintosh powerpc<br>
  -Testcase execution time: 1 minutes, 38 seconds.<br>
  -Tests completed on Fri Jul  1 11:51:40 2005.<br><br>
  +967 test(s) selected, 962 test(s) completed, 114 failures reported (11.85% failed)<br>
  +Engine command line: /Users/mjs/Work/deployment-symroots/testkjs <br>
  +OS type: Darwin maciej-stachowiaks-powerbook-g4-17.local 8.2.0 Darwin Kernel Version 8.2.0: Fri Jun 24 17:46:54 PDT 2005; root:xnu-792.2.4.obj~3/RELEASE_PPC Power Macintosh powerpc<br>
  +Testcase execution time: 1 minutes, 19 seconds.<br>
  +Tests completed on Sun Jul  3 01:42:48 2005.<br><br>
   [ <a href='#fail_detail'>Failure Details</a> | <a href='#retest_list'>Retest List</a> | <a href='menu.html'>Test Selection Page</a> ]<br>
   <hr>
   <a name='fail_detail'></a>
  @@ -44,10 +44,6 @@
   --> parseFloat("1e2000") = NaN FAILED! expected: Infinity<br>
   --> -s2 == -Infinity || -s2 == -1.7976931348623157e+308  = false FAILED! expected: true<br>
   --> -s3 == -Infinity || -s3 == -1.7976931348623157e+308 = false FAILED! expected: true<br>
  ---> parseInt(s1,10) == 1.7976931348623157e+308 || parseInt(s1,10) == Infinity = false FAILED! expected: true<br>
  ---> parseInt(s2,10) == Infinity || parseInt(s2,10) == 1.7976931348623157e+308 = false FAILED! expected: true<br>
  ---> parseInt(s1) == 1.7976931348623157e+308 || parseInt(s1) == Infinity = false FAILED! expected: true<br>
  ---> parseInt(s2) == Infinity || parseInt(s2) == 1.7976931348623157e+308 = false FAILED! expected: true<br>
   --> 0x1000000000000081 = 1152921504606847000 FAILED! expected: 1152921504606847200<br>
   --> 0x1000000000000281 = 1152921504606847500 FAILED! expected: 1152921504606847700<br>
   --> parseInt("0000001000000001001000110100010101100111100010011010101111011",2) = 18054430506169720 FAILED! expected: 18054430506169724<br>
  @@ -128,8 +124,8 @@
   --> (Mon Feb 28 2000 16:00:00 GMT-0800).toLocaleTimeString() = 4:00:00 PM PST FAILED! expected: 16:00:00<br>
   --> (Mon Feb 28 2000 15:59:59 GMT-0800).toLocaleTimeString() = 3:59:59 PM PST FAILED! expected: 15:59:59<br>
   --> (Tue Feb 29 2000 00:00:00 GMT-0800).toLocaleTimeString() = 12:00:00 AM PST FAILED! expected: 00:00:00<br>
  ---> (Fri Jul 01 2005 11:51:09 GMT-0700).toLocaleTimeString() = 11:51:09 AM PDT FAILED! expected: 11:51:09<br>
  ---> (Fri Jul 01 2005 19:51:09 GMT-0700).toLocaleTimeString() = 7:51:09 PM PDT FAILED! expected: 19:51:09<br>
  +--> (Sun Jul 03 2005 01:42:26 GMT-0700).toLocaleTimeString() = 1:42:26 AM PDT FAILED! expected: 01:42:26<br>
  +--> (Sun Jul 03 2005 09:42:26 GMT-0700).toLocaleTimeString() = 9:42:26 AM PDT FAILED! expected: 09:42:26<br>
   --> (Fri Dec 31 2004 16:00:00 GMT-0800).toLocaleTimeString() = 4:00:00 PM PST FAILED! expected: 16:00:00<br>
   --> (Fri Dec 31 2004 15:59:59 GMT-0800).toLocaleTimeString() = 3:59:59 PM PST FAILED! expected: 15:59:59<br>
   --> (Sat Jan 01 2005 00:00:00 GMT-0800).toLocaleTimeString() = 12:00:00 AM PST FAILED! expected: 00:00:00<br>
  @@ -247,45 +243,31 @@
   yylex: ERROR.<br>
   Exception, line 83: SyntaxError - Parse error<br>
   </tt><br>
  -<a name='failure21'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Function/scope-001.js'>ecma_3/Function/scope-001.js</a> failed</b> <br>
  +<a name='failure21'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/FunExpr/fe-001.js'>ecma_3/FunExpr/fe-001.js</a> failed</b> <br>
    [ <a href='#failure20'>Previous Failure</a> | <a href='#failure22'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
  -Exception, line 185: TypeError - Value undefined (result of expression obj.hasOwnProperty) is not object.<br>
  -</tt><br>
  -<a name='failure22'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Function/scope-002.js'>ecma_3/Function/scope-002.js</a> failed</b> <br>
  - [ <a href='#failure21'>Previous Failure</a> | <a href='#failure23'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  -<tt>Expected exit code 0, got 3<br>
  -Testcase terminated with signal 0<br>
  -Complete testcase output was:<br>
  -Exception, line 168: TypeError - Value undefined (result of expression obj.hasOwnProperty) is not object.<br>
  -</tt><br>
  -<a name='failure23'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/FunExpr/fe-001.js'>ecma_3/FunExpr/fe-001.js</a> failed</b> <br>
  - [ <a href='#failure22'>Previous Failure</a> | <a href='#failure24'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  -<tt>Expected exit code 0, got 3<br>
  -Testcase terminated with signal 0<br>
  -Complete testcase output was:<br>
   Exception, line 26: SyntaxError - Parse error<br>
   </tt><br>
  -<a name='failure24'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Object/class-001.js'>ecma_3/Object/class-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=(none)' target='other_window'>Bug Number (none)</a><br>
  - [ <a href='#failure23'>Previous Failure</a> | <a href='#failure25'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure22'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Object/class-001.js'>ecma_3/Object/class-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=(none)' target='other_window'>Bug Number (none)</a><br>
  + [ <a href='#failure21'>Previous Failure</a> | <a href='#failure23'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing the internal [[Class]] property of objects<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Current object is: new Error()<br>
   --> FAILED!: [reported from test()] Expected value 'Error', Actual value 'Object'<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure25'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Object/class-002.js'>ecma_3/Object/class-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=(none)' target='other_window'>Bug Number (none)</a><br>
  - [ <a href='#failure24'>Previous Failure</a> | <a href='#failure26'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure23'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Object/class-002.js'>ecma_3/Object/class-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=(none)' target='other_window'>Bug Number (none)</a><br>
  + [ <a href='#failure22'>Previous Failure</a> | <a href='#failure24'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing the internal [[Class]] property of native constructors<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Current constructor is: Number<br>
   --> FAILED!: [reported from test()] Expected value 'Function', Actual value 'Number'<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure26'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Object/class-003.js'>ecma_3/Object/class-003.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=56868' target='other_window'>Bug Number 56868</a><br>
  - [ <a href='#failure25'>Previous Failure</a> | <a href='#failure27'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure24'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Object/class-003.js'>ecma_3/Object/class-003.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=56868' target='other_window'>Bug Number 56868</a><br>
  + [ <a href='#failure23'>Previous Failure</a> | <a href='#failure25'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing the internal [[Class]] property of native error types<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Current object is: new Error()<br>
  @@ -310,8 +292,8 @@
   --> FAILED!: [reported from test()] Expected value 'Error', Actual value 'Object'<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure27'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Object/class-004.js'>ecma_3/Object/class-004.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=56868' target='other_window'>Bug Number 56868</a><br>
  - [ <a href='#failure26'>Previous Failure</a> | <a href='#failure28'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure25'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Object/class-004.js'>ecma_3/Object/class-004.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=56868' target='other_window'>Bug Number 56868</a><br>
  + [ <a href='#failure24'>Previous Failure</a> | <a href='#failure26'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing the internal [[Class]] property of native error constructors<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Current constructor is: EvalError<br>
  @@ -333,16 +315,16 @@
   --> FAILED!: [reported from test()] Expected value 'Function', Actual value 'Error'<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure28'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Object/regress-72773.js'>ecma_3/Object/regress-72773.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=72773' target='other_window'>Bug Number 72773</a><br>
  - [ <a href='#failure27'>Previous Failure</a> | <a href='#failure29'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure26'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Object/regress-72773.js'>ecma_3/Object/regress-72773.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=72773' target='other_window'>Bug Number 72773</a><br>
  + [ <a href='#failure25'>Previous Failure</a> | <a href='#failure27'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Regression test: we shouldn't crash on this code<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Trying to catch an expected error<br>
   --> FAILED!: [reported from test()] Expected value 'Error', Actual value 'Object'<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure29'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/15.10.2-1.js'>ecma_3/RegExp/15.10.2-1.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=(none)' target='other_window'>Bug Number (none)</a><br>
  - [ <a href='#failure28'>Previous Failure</a> | <a href='#failure30'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure27'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/15.10.2-1.js'>ecma_3/RegExp/15.10.2-1.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=(none)' target='other_window'>Bug Number (none)</a><br>
  + [ <a href='#failure26'>Previous Failure</a> | <a href='#failure28'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: RegExp conformance test<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Section 7 of test -<br>
  @@ -367,8 +349,8 @@
   --> FAILED!: [reported from test()] Actual: null<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure30'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/15.10.6.2-2.js'>ecma_3/RegExp/15.10.6.2-2.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=76717' target='other_window'>Bug Number 76717</a><br>
  - [ <a href='#failure29'>Previous Failure</a> | <a href='#failure31'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure28'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/15.10.6.2-2.js'>ecma_3/RegExp/15.10.6.2-2.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=76717' target='other_window'>Bug Number 76717</a><br>
  + [ <a href='#failure27'>Previous Failure</a> | <a href='#failure29'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing re.exec(str) when re.lastIndex is < 0 or > str.length<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Section 6 of test -<br>
  @@ -435,8 +417,8 @@
   --> FAILED!: [reported from test()] Actual: ["Abc"]<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure31'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/octal-002.js'>ecma_3/RegExp/octal-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=141078' target='other_window'>Bug Number 141078</a><br>
  - [ <a href='#failure30'>Previous Failure</a> | <a href='#failure32'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure29'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/octal-002.js'>ecma_3/RegExp/octal-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=141078' target='other_window'>Bug Number 141078</a><br>
  + [ <a href='#failure28'>Previous Failure</a> | <a href='#failure30'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing regexps containing octal escape sequences<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Section 8 of test -<br>
  @@ -447,8 +429,8 @@
   --> FAILED!: [reported from test()] Actual: ["a"]<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure32'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/perlstress-001.js'>ecma_3/RegExp/perlstress-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=85721' target='other_window'>Bug Number 85721</a><br>
  - [ <a href='#failure31'>Previous Failure</a> | <a href='#failure33'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure30'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/perlstress-001.js'>ecma_3/RegExp/perlstress-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=85721' target='other_window'>Bug Number 85721</a><br>
  + [ <a href='#failure29'>Previous Failure</a> | <a href='#failure31'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing regular expression edge cases<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Section 218 of test -<br>
  @@ -508,8 +490,8 @@
   --> FAILED!: [reported from test()] Actual: ["aabbaa", "aa", "bb"]<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure33'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/perlstress-002.js'>ecma_3/RegExp/perlstress-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=85721' target='other_window'>Bug Number 85721</a><br>
  - [ <a href='#failure32'>Previous Failure</a> | <a href='#failure34'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure31'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/perlstress-002.js'>ecma_3/RegExp/perlstress-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=85721' target='other_window'>Bug Number 85721</a><br>
  + [ <a href='#failure30'>Previous Failure</a> | <a href='#failure32'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing regular expression edge cases<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Section 40 of test -<br>
  @@ -527,8 +509,8 @@
   --> FAILED!: [reported from test()] Actual: null<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure34'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-100199.js'>ecma_3/RegExp/regress-100199.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=100199' target='other_window'>Bug Number 100199</a><br>
  - [ <a href='#failure33'>Previous Failure</a> | <a href='#failure35'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure32'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-100199.js'>ecma_3/RegExp/regress-100199.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=100199' target='other_window'>Bug Number 100199</a><br>
  + [ <a href='#failure31'>Previous Failure</a> | <a href='#failure33'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: [], [^] are valid RegExp conditions. Should not cause errors -<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Section 19 of test -<br>
  @@ -630,8 +612,8 @@
   --> FAILED!: [reported from test()] Actual: null<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure35'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-188206.js'>ecma_3/RegExp/regress-188206.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=188206' target='other_window'>Bug Number 188206</a><br>
  - [ <a href='#failure34'>Previous Failure</a> | <a href='#failure36'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure33'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-188206.js'>ecma_3/RegExp/regress-188206.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=188206' target='other_window'>Bug Number 188206</a><br>
  + [ <a href='#failure32'>Previous Failure</a> | <a href='#failure34'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Invalid use of regexp quantifiers should generate SyntaxErrors<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Section 1 of test -<br>
  @@ -692,8 +674,8 @@
   --> FAILED!: [reported from test()] Expected value 'SyntaxError', Actual value 'Did not generate ANY error!!!'<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure36'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-209919.js'>ecma_3/RegExp/regress-209919.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=209919' target='other_window'>Bug Number 209919</a><br>
  - [ <a href='#failure35'>Previous Failure</a> | <a href='#failure37'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure34'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-209919.js'>ecma_3/RegExp/regress-209919.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=209919' target='other_window'>Bug Number 209919</a><br>
  + [ <a href='#failure33'>Previous Failure</a> | <a href='#failure35'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing regexp submatches with quantifiers<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Section 1 of test -<br>
  @@ -732,8 +714,8 @@
   --> FAILED!: [reported from test()] Actual: ["1.000,00", "", ",00"]<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure37'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-72964.js'>ecma_3/RegExp/regress-72964.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=72964' target='other_window'>Bug Number 72964</a><br>
  - [ <a href='#failure36'>Previous Failure</a> | <a href='#failure38'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure35'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-72964.js'>ecma_3/RegExp/regress-72964.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=72964' target='other_window'>Bug Number 72964</a><br>
  + [ <a href='#failure34'>Previous Failure</a> | <a href='#failure36'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing regular expressions containing non-Latin1 characters<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Section 3 of test -<br>
  @@ -751,8 +733,8 @@
   --> FAILED!: [reported from test()] Actual: null<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure38'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-78156.js'>ecma_3/RegExp/regress-78156.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=78156' target='other_window'>Bug Number 78156</a><br>
  - [ <a href='#failure37'>Previous Failure</a> | <a href='#failure39'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure36'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-78156.js'>ecma_3/RegExp/regress-78156.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=78156' target='other_window'>Bug Number 78156</a><br>
  + [ <a href='#failure35'>Previous Failure</a> | <a href='#failure37'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing regular expressions with  ^, $, and the m flag -<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Section 2 of test -<br>
  @@ -770,8 +752,8 @@
   --> FAILED!: [reported from test()] Actual: null<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure39'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-85721.js'>ecma_3/RegExp/regress-85721.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=85721' target='other_window'>Bug Number 85721</a><br>
  - [ <a href='#failure38'>Previous Failure</a> | <a href='#failure40'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure37'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/regress-85721.js'>ecma_3/RegExp/regress-85721.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=85721' target='other_window'>Bug Number 85721</a><br>
  + [ <a href='#failure36'>Previous Failure</a> | <a href='#failure38'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Performance: execution of regular expression<br>
   Failure messages were:<br>
   --> FAILED!: Section 4 of test -<br>
  @@ -892,47 +874,47 @@
   --> FAILED!: Actual: null<br>
   --> FAILED!: <br>
   </tt><br>
  -<a name='failure40'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Statements/regress-194364.js'>ecma_3/Statements/regress-194364.js</a> failed</b> <br>
  - [ <a href='#failure39'>Previous Failure</a> | <a href='#failure41'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure38'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Statements/regress-194364.js'>ecma_3/Statements/regress-194364.js</a> failed</b> <br>
  + [ <a href='#failure37'>Previous Failure</a> | <a href='#failure39'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 1: SyntaxError - Parse error<br>
   </tt><br>
  -<a name='failure41'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-001.js'>ecma_3/Unicode/uc-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=23610' target='other_window'>Bug Number 23610</a><br>
  - [ <a href='#failure40'>Previous Failure</a> | <a href='#failure42'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure39'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-001.js'>ecma_3/Unicode/uc-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=23610' target='other_window'>Bug Number 23610</a><br>
  + [ <a href='#failure38'>Previous Failure</a> | <a href='#failure40'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Unicode format-control character (Category Cf) test.<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Unicode format-control character test (Category Cf.)<br>
   --> FAILED!: [reported from test()] Expected value 'no error', Actual value 'no error'<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure42'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-002.js'>ecma_3/Unicode/uc-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=23613' target='other_window'>Bug Number 23613</a><br>
  - [ <a href='#failure41'>Previous Failure</a> | <a href='#failure43'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure40'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-002.js'>ecma_3/Unicode/uc-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=23613' target='other_window'>Bug Number 23613</a><br>
  + [ <a href='#failure39'>Previous Failure</a> | <a href='#failure41'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Unicode non-breaking space character test.<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Unicode non-breaking space character regexp test.<br>
   --> FAILED!: [reported from test()] Expected value '0', Actual value '-1'<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure43'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-003.js'>ecma_3/Unicode/uc-003.js</a> failed</b> <br>
  - [ <a href='#failure42'>Previous Failure</a> | <a href='#failure44'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure41'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-003.js'>ecma_3/Unicode/uc-003.js</a> failed</b> <br>
  + [ <a href='#failure40'>Previous Failure</a> | <a href='#failure42'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   yylex: ERROR.<br>
   Exception, line 32: SyntaxError - Parse error<br>
   </tt><br>
  -<a name='failure44'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-005.js'>ecma_3/Unicode/uc-005.js</a> failed</b> <br>
  - [ <a href='#failure43'>Previous Failure</a> | <a href='#failure45'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure42'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-005.js'>ecma_3/Unicode/uc-005.js</a> failed</b> <br>
  + [ <a href='#failure41'>Previous Failure</a> | <a href='#failure43'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   yylex: ERROR.<br>
   Exception, line 118: SyntaxError - Parse error<br>
   </tt><br>
  -<a name='failure45'></a><dd><b>Testcase <a target='other_window' href='./js1_2/Array/tostring_1.js'>js1_2/Array/tostring_1.js</a> failed</b> <br>
  - [ <a href='#failure44'>Previous Failure</a> | <a href='#failure46'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure43'></a><dd><b>Testcase <a target='other_window' href='./js1_2/Array/tostring_1.js'>js1_2/Array/tostring_1.js</a> failed</b> <br>
  + [ <a href='#failure42'>Previous Failure</a> | <a href='#failure44'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> var a = new Array(); a.toString() =  FAILED! expected: []<br>
  @@ -943,16 +925,16 @@
   --> var b = new Array(1000); b.toString() = ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, FAILED! expected: [1000]<br>
   --> b.length = 1000 FAILED! expected: 1<br>
   </tt><br>
  -<a name='failure46'></a><dd><b>Testcase <a target='other_window' href='./js1_2/Array/tostring_2.js'>js1_2/Array/tostring_2.js</a> failed</b> <br>
  - [ <a href='#failure45'>Previous Failure</a> | <a href='#failure47'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure44'></a><dd><b>Testcase <a target='other_window' href='./js1_2/Array/tostring_2.js'>js1_2/Array/tostring_2.js</a> failed</b> <br>
  + [ <a href='#failure43'>Previous Failure</a> | <a href='#failure45'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> a.toString() =  FAILED! expected: []<br>
   --> String( a ) =  FAILED! expected: []<br>
   --> a +'' =  FAILED! expected: []<br>
   </tt><br>
  -<a name='failure47'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/function-001-n.js'>js1_2/function/function-001-n.js</a> failed</b> <br>
  - [ <a href='#failure46'>Previous Failure</a> | <a href='#failure48'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure45'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/function-001-n.js'>js1_2/function/function-001-n.js</a> failed</b> <br>
  + [ <a href='#failure44'>Previous Failure</a> | <a href='#failure46'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 3, got 0<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
  @@ -960,8 +942,8 @@
   --> eval("function f(){}function g(){}") = undefined FAILED! expected: error<br>
   OK.<br>
   </tt><br>
  -<a name='failure48'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/Function_object.js'>js1_2/function/Function_object.js</a> failed</b> <br>
  - [ <a href='#failure47'>Previous Failure</a> | <a href='#failure49'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure46'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/Function_object.js'>js1_2/function/Function_object.js</a> failed</b> <br>
  + [ <a href='#failure45'>Previous Failure</a> | <a href='#failure47'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> f.name = undefined FAILED! expected: a_test_function<br>
  @@ -969,29 +951,29 @@
   --> (new Function()).name = undefined FAILED! expected: anonymous<br>
   } FAILED! expected: <br>
   </tt><br>
  -<a name='failure49'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/Number.js'>js1_2/function/Number.js</a> failed</b> <br>
  - [ <a href='#failure48'>Previous Failure</a> | <a href='#failure50'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure47'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/Number.js'>js1_2/function/Number.js</a> failed</b> <br>
  + [ <a href='#failure46'>Previous Failure</a> | <a href='#failure48'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> Number([1,2,3])          = NaN FAILED! expected: 3<br>
   </tt><br>
  -<a name='failure50'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/regexparg-1.js'>js1_2/function/regexparg-1.js</a> failed</b> <br>
  - [ <a href='#failure49'>Previous Failure</a> | <a href='#failure51'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure48'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/regexparg-1.js'>js1_2/function/regexparg-1.js</a> failed</b> <br>
  + [ <a href='#failure47'>Previous Failure</a> | <a href='#failure49'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   --> JS_1.2 The variable statment<br>
   Exception, line 81: TypeError - Object /abc/ (result of expression x) does not allow calls.<br>
   </tt><br>
  -<a name='failure51'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/String.js'>js1_2/function/String.js</a> failed</b> <br>
  - [ <a href='#failure50'>Previous Failure</a> | <a href='#failure52'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure49'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/String.js'>js1_2/function/String.js</a> failed</b> <br>
  + [ <a href='#failure48'>Previous Failure</a> | <a href='#failure50'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> String({p:1})            = [object Object] FAILED! expected: {p:1}<br>
   --> String([1,2,3])             = 1,2,3 FAILED! expected: [1, 2, 3]<br>
   </tt><br>
  -<a name='failure52'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/tostring-1.js'>js1_2/function/tostring-1.js</a> failed</b> <br>
  - [ <a href='#failure51'>Previous Failure</a> | <a href='#failure53'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure50'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/tostring-1.js'>js1_2/function/tostring-1.js</a> failed</b> <br>
  + [ <a href='#failure49'>Previous Failure</a> | <a href='#failure51'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   } FAILED! expected: <br>
  @@ -1000,8 +982,8 @@
   } FAILED! expected: <br>
   } FAILED! expected: <br>
   </tt><br>
  -<a name='failure53'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/tostring-2.js'>js1_2/function/tostring-2.js</a> failed</b> <br>
  - [ <a href='#failure52'>Previous Failure</a> | <a href='#failure54'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure51'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/tostring-2.js'>js1_2/function/tostring-2.js</a> failed</b> <br>
  + [ <a href='#failure50'>Previous Failure</a> | <a href='#failure52'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   } FAILED! expected: <br>
  @@ -1014,29 +996,29 @@
   } FAILED! expected: <br>
   } FAILED! expected: <br>
   </tt><br>
  -<a name='failure54'></a><dd><b>Testcase <a target='other_window' href='./js1_2/Objects/toString-001.js'>js1_2/Objects/toString-001.js</a> failed</b> <br>
  - [ <a href='#failure53'>Previous Failure</a> | <a href='#failure55'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure52'></a><dd><b>Testcase <a target='other_window' href='./js1_2/Objects/toString-001.js'>js1_2/Objects/toString-001.js</a> failed</b> <br>
  + [ <a href='#failure51'>Previous Failure</a> | <a href='#failure53'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   --> JS1_2 Object.toString()<br>
   Exception, line 104: TypeError - Object /^\{(.*)\}$/ (result of expression ^\{(.*)\}$) does not allow calls.<br>
   </tt><br>
  -<a name='failure55'></a><dd><b>Testcase <a target='other_window' href='./js1_2/operator/equality.js'>js1_2/operator/equality.js</a> failed</b> <br>
  - [ <a href='#failure54'>Previous Failure</a> | <a href='#failure56'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure53'></a><dd><b>Testcase <a target='other_window' href='./js1_2/operator/equality.js'>js1_2/operator/equality.js</a> failed</b> <br>
  + [ <a href='#failure52'>Previous Failure</a> | <a href='#failure54'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> (new String('x') == 'x')                  = true FAILED! expected: false<br>
   --> ('x' == new String('x'))                  = true FAILED! expected: false<br>
   </tt><br>
  -<a name='failure56'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/beginLine.js'>js1_2/regexp/beginLine.js</a> failed</b> <br>
  - [ <a href='#failure55'>Previous Failure</a> | <a href='#failure57'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure54'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/beginLine.js'>js1_2/regexp/beginLine.js</a> failed</b> <br>
  + [ <a href='#failure53'>Previous Failure</a> | <a href='#failure55'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   123xyz'.match(new RegExp('^\d+')) = null FAILED! expected: 123<br>
   </tt><br>
  -<a name='failure57'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/compile.js'>js1_2/regexp/compile.js</a> failed</b> <br>
  - [ <a href='#failure56'>Previous Failure</a> | <a href='#failure58'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure55'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/compile.js'>js1_2/regexp/compile.js</a> failed</b> <br>
  + [ <a href='#failure54'>Previous Failure</a> | <a href='#failure56'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
  @@ -1044,14 +1026,14 @@
   --> As described in Netscape doc "Whats new in JavaScript 1.2" RegExp: compile<br>
   Exception, line 44: TypeError - Value undefined (result of expression regularExpression.compile) is not object.<br>
   </tt><br>
  -<a name='failure58'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/endLine.js'>js1_2/regexp/endLine.js</a> failed</b> <br>
  - [ <a href='#failure57'>Previous Failure</a> | <a href='#failure59'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure56'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/endLine.js'>js1_2/regexp/endLine.js</a> failed</b> <br>
  + [ <a href='#failure55'>Previous Failure</a> | <a href='#failure57'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   xyz'.match(new RegExp('\d+$')) = null FAILED! expected: 890<br>
   </tt><br>
  -<a name='failure59'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_input.js'>js1_2/regexp/RegExp_input.js</a> failed</b> <br>
  - [ <a href='#failure58'>Previous Failure</a> | <a href='#failure60'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure57'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_input.js'>js1_2/regexp/RegExp_input.js</a> failed</b> <br>
  + [ <a href='#failure56'>Previous Failure</a> | <a href='#failure58'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> RegExp.input = 'abcd12357efg'; /\d+/.exec() = null FAILED! expected: 12357<br>
  @@ -1060,8 +1042,8 @@
   --> RegExp.input = 'abcd12357efg'; /[h-z]+/.test() = true FAILED! expected: false<br>
   --> RegExp.input = 'abcd12357efg'; (new RegExp('[h-z]+')).test() = true FAILED! expected: false<br>
   </tt><br>
  -<a name='failure60'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_input_as_array.js'>js1_2/regexp/RegExp_input_as_array.js</a> failed</b> <br>
  - [ <a href='#failure59'>Previous Failure</a> | <a href='#failure61'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure58'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_input_as_array.js'>js1_2/regexp/RegExp_input_as_array.js</a> failed</b> <br>
  + [ <a href='#failure57'>Previous Failure</a> | <a href='#failure59'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> RegExp['$_'] = 'abcd12357efg'; /\d+/.exec() = null FAILED! expected: 12357<br>
  @@ -1070,15 +1052,15 @@
   --> RegExp['$_'] = 'abcd12357efg'; /[h-z]+/.test() = true FAILED! expected: false<br>
   --> RegExp['$_'] = 'abcd12357efg'; (new RegExp('[h-z]+')).test() = true FAILED! expected: false<br>
   </tt><br>
  -<a name='failure61'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_lastIndex.js'>js1_2/regexp/RegExp_lastIndex.js</a> failed</b> <br>
  - [ <a href='#failure60'>Previous Failure</a> | <a href='#failure62'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure59'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_lastIndex.js'>js1_2/regexp/RegExp_lastIndex.js</a> failed</b> <br>
  + [ <a href='#failure58'>Previous Failure</a> | <a href='#failure60'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> re=/x./g; re.lastIndex=4; re.exec('xyabcdxa') = xa FAILED! expected: ["xa"]<br>
   --> re.exec('xyabcdef') = xy FAILED! expected: ["xy"]<br>
   </tt><br>
  -<a name='failure62'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_lastMatch.js'>js1_2/regexp/RegExp_lastMatch.js</a> failed</b> <br>
  - [ <a href='#failure61'>Previous Failure</a> | <a href='#failure63'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure60'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_lastMatch.js'>js1_2/regexp/RegExp_lastMatch.js</a> failed</b> <br>
  + [ <a href='#failure59'>Previous Failure</a> | <a href='#failure61'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> 'foo'.match(/foo/); RegExp.lastMatch = undefined FAILED! expected: foo<br>
  @@ -1088,8 +1070,8 @@
   --> 'abcdefg'.match(/^..(cd)[a-z]+/); RegExp.lastMatch = undefined FAILED! expected: abcdefg<br>
   --> 'abcdefgabcdefg'.match(/(a(b(c(d)e)f)g)\1/); RegExp.lastMatch = undefined FAILED! expected: abcdefgabcdefg<br>
   </tt><br>
  -<a name='failure63'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_lastMatch_as_array.js'>js1_2/regexp/RegExp_lastMatch_as_array.js</a> failed</b> <br>
  - [ <a href='#failure62'>Previous Failure</a> | <a href='#failure64'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure61'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_lastMatch_as_array.js'>js1_2/regexp/RegExp_lastMatch_as_array.js</a> failed</b> <br>
  + [ <a href='#failure60'>Previous Failure</a> | <a href='#failure62'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> 'foo'.match(/foo/); RegExp['$&'] = undefined FAILED! expected: foo<br>
  @@ -1099,8 +1081,8 @@
   --> 'abcdefg'.match(/^..(cd)[a-z]+/); RegExp['$&'] = undefined FAILED! expected: abcdefg<br>
   --> 'abcdefgabcdefg'.match(/(a(b(c(d)e)f)g)\1/); RegExp['$&'] = undefined FAILED! expected: abcdefgabcdefg<br>
   </tt><br>
  -<a name='failure64'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_lastParen.js'>js1_2/regexp/RegExp_lastParen.js</a> failed</b> <br>
  - [ <a href='#failure63'>Previous Failure</a> | <a href='#failure65'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure62'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_lastParen.js'>js1_2/regexp/RegExp_lastParen.js</a> failed</b> <br>
  + [ <a href='#failure61'>Previous Failure</a> | <a href='#failure63'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> 'abcd'.match(/(abc)d/); RegExp.lastParen = undefined FAILED! expected: abc<br>
  @@ -1113,8 +1095,8 @@
   --> 'abcdefg'.match(new RegExp('(^a)bc')); RegExp.lastParen = undefined FAILED! expected: a<br>
   --> 'abcdefg'.match(/bc/); RegExp.lastParen = undefined FAILED! expected: <br>
   </tt><br>
  -<a name='failure65'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_lastParen_as_array.js'>js1_2/regexp/RegExp_lastParen_as_array.js</a> failed</b> <br>
  - [ <a href='#failure64'>Previous Failure</a> | <a href='#failure66'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure63'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_lastParen_as_array.js'>js1_2/regexp/RegExp_lastParen_as_array.js</a> failed</b> <br>
  + [ <a href='#failure62'>Previous Failure</a> | <a href='#failure64'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> 'abcd'.match(/(abc)d/); RegExp['$+'] = undefined FAILED! expected: abc<br>
  @@ -1127,8 +1109,8 @@
   --> 'abcdefg'.match(new RegExp('(^a)bc')); RegExp['$+'] = undefined FAILED! expected: a<br>
   --> 'abcdefg'.match(/bc/); RegExp['$+'] = undefined FAILED! expected: <br>
   </tt><br>
  -<a name='failure66'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_leftContext.js'>js1_2/regexp/RegExp_leftContext.js</a> failed</b> <br>
  - [ <a href='#failure65'>Previous Failure</a> | <a href='#failure67'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure64'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_leftContext.js'>js1_2/regexp/RegExp_leftContext.js</a> failed</b> <br>
  + [ <a href='#failure63'>Previous Failure</a> | <a href='#failure65'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> 'abc123xyz'.match(/123/); RegExp.leftContext = undefined FAILED! expected: abc<br>
  @@ -1139,8 +1121,8 @@
   --> 'xxxx'.match(new RegExp('$')); RegExp.leftContext = undefined FAILED! expected: xxxx<br>
   --> 'test'.match(new RegExp('^')); RegExp.leftContext = undefined FAILED! expected: <br>
   </tt><br>
  -<a name='failure67'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_leftContext_as_array.js'>js1_2/regexp/RegExp_leftContext_as_array.js</a> failed</b> <br>
  - [ <a href='#failure66'>Previous Failure</a> | <a href='#failure68'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure65'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_leftContext_as_array.js'>js1_2/regexp/RegExp_leftContext_as_array.js</a> failed</b> <br>
  + [ <a href='#failure64'>Previous Failure</a> | <a href='#failure66'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> 'abc123xyz'.match(/123/); RegExp['$`'] = undefined FAILED! expected: abc<br>
  @@ -1151,8 +1133,8 @@
   --> 'xxxx'.match(new RegExp('$')); RegExp['$`'] = undefined FAILED! expected: xxxx<br>
   --> 'test'.match(new RegExp('^')); RegExp['$`'] = undefined FAILED! expected: <br>
   </tt><br>
  -<a name='failure68'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_multiline.js'>js1_2/regexp/RegExp_multiline.js</a> failed</b> <br>
  - [ <a href='#failure67'>Previous Failure</a> | <a href='#failure69'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure66'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_multiline.js'>js1_2/regexp/RegExp_multiline.js</a> failed</b> <br>
  + [ <a href='#failure65'>Previous Failure</a> | <a href='#failure67'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> RegExp.multiline = undefined FAILED! expected: false<br>
  @@ -1162,8 +1144,8 @@
   --> (multiline == true) 'a11\na22\na23\na24'.match(/a..$/g) = a24 FAILED! expected: a11,a22,a23,a24<br>
   --> (multiline == true) 'a11\na22\na23\na24'.match(new RegExp('a..$','g')) = a24 FAILED! expected: a11,a22,a23,a24<br>
   </tt><br>
  -<a name='failure69'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_multiline_as_array.js'>js1_2/regexp/RegExp_multiline_as_array.js</a> failed</b> <br>
  - [ <a href='#failure68'>Previous Failure</a> | <a href='#failure70'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure67'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_multiline_as_array.js'>js1_2/regexp/RegExp_multiline_as_array.js</a> failed</b> <br>
  + [ <a href='#failure66'>Previous Failure</a> | <a href='#failure68'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> RegExp['$*'] = undefined FAILED! expected: false<br>
  @@ -1173,8 +1155,8 @@
   --> (['$*'] == true) 'a11\na22\na23\na24'.match(/a..$/g) = a24 FAILED! expected: a11,a22,a23,a24<br>
   --> (['$*'] == true) 'a11\na22\na23\na24'.match(new RegExp('a..$','g')) = a24 FAILED! expected: a11,a22,a23,a24<br>
   </tt><br>
  -<a name='failure70'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_rightContext.js'>js1_2/regexp/RegExp_rightContext.js</a> failed</b> <br>
  - [ <a href='#failure69'>Previous Failure</a> | <a href='#failure71'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure68'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_rightContext.js'>js1_2/regexp/RegExp_rightContext.js</a> failed</b> <br>
  + [ <a href='#failure67'>Previous Failure</a> | <a href='#failure69'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> 'abc123xyz'.match(/123/); RegExp.rightContext = undefined FAILED! expected: xyz<br>
  @@ -1185,8 +1167,8 @@
   --> 'xxxx'.match(new RegExp('$')); RegExp.rightContext = undefined FAILED! expected: <br>
   --> 'test'.match(new RegExp('^')); RegExp.rightContext = undefined FAILED! expected: test<br>
   </tt><br>
  -<a name='failure71'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_rightContext_as_array.js'>js1_2/regexp/RegExp_rightContext_as_array.js</a> failed</b> <br>
  - [ <a href='#failure70'>Previous Failure</a> | <a href='#failure72'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure69'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/RegExp_rightContext_as_array.js'>js1_2/regexp/RegExp_rightContext_as_array.js</a> failed</b> <br>
  + [ <a href='#failure68'>Previous Failure</a> | <a href='#failure70'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> 'abc123xyz'.match(/123/); RegExp['$''] = undefined FAILED! expected: xyz<br>
  @@ -1197,24 +1179,24 @@
   --> 'xxxx'.match(new RegExp('$')); RegExp['$''] = undefined FAILED! expected: <br>
   --> 'test'.match(new RegExp('^')); RegExp['$''] = undefined FAILED! expected: test<br>
   </tt><br>
  -<a name='failure72'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/regress-6359.js'>js1_2/regexp/regress-6359.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=http://bugzilla.mozilla.org/show_bug.cgi?id=6359' target='other_window'>Bug Number http://bugzilla.mozilla.org/show_bug.cgi?id=6359</a><br>
  - [ <a href='#failure71'>Previous Failure</a> | <a href='#failure73'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure70'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/regress-6359.js'>js1_2/regexp/regress-6359.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=http://bugzilla.mozilla.org/show_bug.cgi?id=6359' target='other_window'>Bug Number http://bugzilla.mozilla.org/show_bug.cgi?id=6359</a><br>
  + [ <a href='#failure69'>Previous Failure</a> | <a href='#failure71'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   --> BUGNUMBER: http://bugzilla.mozilla.org/show_bug.cgi?id=6359<br>
   Exception, line 57: TypeError - Object /(a*)b\1+/ (result of expression (a*)b\1+) does not allow calls.<br>
   </tt><br>
  -<a name='failure73'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/regress-9141.js'>js1_2/regexp/regress-9141.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=http://bugzilla.mozilla.org/show_bug.cgi?id=9141' target='other_window'>Bug Number http://bugzilla.mozilla.org/show_bug.cgi?id=9141</a><br>
  - [ <a href='#failure72'>Previous Failure</a> | <a href='#failure74'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure71'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/regress-9141.js'>js1_2/regexp/regress-9141.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=http://bugzilla.mozilla.org/show_bug.cgi?id=9141' target='other_window'>Bug Number http://bugzilla.mozilla.org/show_bug.cgi?id=9141</a><br>
  + [ <a href='#failure70'>Previous Failure</a> | <a href='#failure72'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   --> BUGNUMBER: http://bugzilla.mozilla.org/show_bug.cgi?id=9141<br>
   Exception, line 74: TypeError - Object /(?:xx|x)*/ (result of expression (?:xx|x)*) does not allow calls.<br>
   </tt><br>
  -<a name='failure74'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/simple_form.js'>js1_2/regexp/simple_form.js</a> failed</b> <br>
  - [ <a href='#failure73'>Previous Failure</a> | <a href='#failure75'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure72'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/simple_form.js'>js1_2/regexp/simple_form.js</a> failed</b> <br>
  + [ <a href='#failure71'>Previous Failure</a> | <a href='#failure73'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
  @@ -1222,14 +1204,14 @@
   --> As described in Netscape doc "Whats new in JavaScript 1.2" RegExp: simple form<br>
   Exception, line 44: TypeError - Object /[0-9]{3}/ (result of expression [0-9]{3}) does not allow calls.<br>
   </tt><br>
  -<a name='failure75'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/special_characters.js'>js1_2/regexp/special_characters.js</a> failed</b> <br>
  - [ <a href='#failure74'>Previous Failure</a> | <a href='#failure76'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure73'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/special_characters.js'>js1_2/regexp/special_characters.js</a> failed</b> <br>
  + [ <a href='#failure72'>Previous Failure</a> | <a href='#failure74'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> 'ab a  b'.match(/a{2}/) = null FAILED! expected: a<br>
   </tt><br>
  -<a name='failure76'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/string_split.js'>js1_2/regexp/string_split.js</a> failed</b> <br>
  - [ <a href='#failure75'>Previous Failure</a> | <a href='#failure77'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure74'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/string_split.js'>js1_2/regexp/string_split.js</a> failed</b> <br>
  + [ <a href='#failure73'>Previous Failure</a> | <a href='#failure75'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> 'abc'.split(/[a-z]/) = ,,, FAILED! expected: ,,<br>
  @@ -1237,8 +1219,8 @@
   --> 'abc'.split(new RegExp('[a-z]')) = ,,, FAILED! expected: ,,<br>
   --> 'abc'.split(new RegExp('[a-z]')) = ,,, FAILED! expected: ,,<br>
   </tt><br>
  -<a name='failure77'></a><dd><b>Testcase <a target='other_window' href='./js1_2/String/concat.js'>js1_2/String/concat.js</a> failed</b> <br>
  - [ <a href='#failure76'>Previous Failure</a> | <a href='#failure78'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure75'></a><dd><b>Testcase <a target='other_window' href='./js1_2/String/concat.js'>js1_2/String/concat.js</a> failed</b> <br>
  + [ <a href='#failure74'>Previous Failure</a> | <a href='#failure76'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> aString.concat([])      = test string FAILED! expected: test string[]<br>
  @@ -1246,29 +1228,29 @@
   --> 'abcde'.concat([])      = abcde FAILED! expected: abcde[]<br>
   --> 'abcde'.concat([1,2,3]) = abcde1,2,3 FAILED! expected: abcde[1, 2, 3]<br>
   </tt><br>
  -<a name='failure78'></a><dd><b>Testcase <a target='other_window' href='./js1_2/String/slice.js'>js1_2/String/slice.js</a> failed</b> <br>
  - [ <a href='#failure77'>Previous Failure</a> | <a href='#failure79'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure76'></a><dd><b>Testcase <a target='other_window' href='./js1_2/String/slice.js'>js1_2/String/slice.js</a> failed</b> <br>
  + [ <a href='#failure75'>Previous Failure</a> | <a href='#failure77'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> exhaustive String.slice test 1 = false FAILED! expected: true<br>
   --> exhaustive String.slice test 2 = false FAILED! expected: true<br>
   </tt><br>
  -<a name='failure79'></a><dd><b>Testcase <a target='other_window' href='./js1_2/version120/boolean-001.js'>js1_2/version120/boolean-001.js</a> failed</b> <br>
  - [ <a href='#failure78'>Previous Failure</a> | <a href='#failure80'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure77'></a><dd><b>Testcase <a target='other_window' href='./js1_2/version120/boolean-001.js'>js1_2/version120/boolean-001.js</a> failed</b> <br>
  + [ <a href='#failure76'>Previous Failure</a> | <a href='#failure78'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> new Boolean(false) = true FAILED! expected: false<br>
   </tt><br>
  -<a name='failure80'></a><dd><b>Testcase <a target='other_window' href='./js1_2/version120/regress-99663.js'>js1_2/version120/regress-99663.js</a> failed</b> <br>
  - [ <a href='#failure79'>Previous Failure</a> | <a href='#failure81'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure78'></a><dd><b>Testcase <a target='other_window' href='./js1_2/version120/regress-99663.js'>js1_2/version120/regress-99663.js</a> failed</b> <br>
  + [ <a href='#failure77'>Previous Failure</a> | <a href='#failure79'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Regression test for Bugzilla bug 99663<br>
   Failure messages were:<br>
   --> Section 1 of test - got Error: Can't find variable: it FAILED! expected: a "read-only" error<br>
   --> Section 2 of test - got Error: Can't find variable: it FAILED! expected: a "read-only" error<br>
   --> Section 3 of test - got Error: Can't find variable: it FAILED! expected: a "read-only" error<br>
   </tt><br>
  -<a name='failure81'></a><dd><b>Testcase <a target='other_window' href='./js1_3/regress/function-001-n.js'>js1_3/regress/function-001-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=10278' target='other_window'>Bug Number 10278</a><br>
  - [ <a href='#failure80'>Previous Failure</a> | <a href='#failure82'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure79'></a><dd><b>Testcase <a target='other_window' href='./js1_3/regress/function-001-n.js'>js1_3/regress/function-001-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=10278' target='other_window'>Bug Number 10278</a><br>
  + [ <a href='#failure78'>Previous Failure</a> | <a href='#failure80'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 3, got 0<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
  @@ -1277,8 +1259,8 @@
   --> eval("function f(){}function g(){}") = undefined FAILED! expected: error<br>
   OK.<br>
   </tt><br>
  -<a name='failure82'></a><dd><b>Testcase <a target='other_window' href='./js1_3/Script/function-001-n.js'>js1_3/Script/function-001-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=10278' target='other_window'>Bug Number 10278</a><br>
  - [ <a href='#failure81'>Previous Failure</a> | <a href='#failure83'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure80'></a><dd><b>Testcase <a target='other_window' href='./js1_3/Script/function-001-n.js'>js1_3/Script/function-001-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=10278' target='other_window'>Bug Number 10278</a><br>
  + [ <a href='#failure79'>Previous Failure</a> | <a href='#failure81'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 3, got 0<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
  @@ -1287,28 +1269,28 @@
   --> eval("function f(){}function g(){}") = undefined FAILED! expected: error<br>
   OK.<br>
   </tt><br>
  -<a name='failure83'></a><dd><b>Testcase <a target='other_window' href='./js1_3/Script/script-001.js'>js1_3/Script/script-001.js</a> failed</b> <br>
  - [ <a href='#failure82'>Previous Failure</a> | <a href='#failure84'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure81'></a><dd><b>Testcase <a target='other_window' href='./js1_3/Script/script-001.js'>js1_3/Script/script-001.js</a> failed</b> <br>
  + [ <a href='#failure80'>Previous Failure</a> | <a href='#failure82'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   --> script-001 NativeScript<br>
   Exception, line 134: ReferenceError - Can't find variable: Script<br>
   </tt><br>
  -<a name='failure84'></a><dd><b>Testcase <a target='other_window' href='./js1_4/Regress/function-002.js'>js1_4/Regress/function-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=330462' target='other_window'>Bug Number 330462</a><br>
  - [ <a href='#failure83'>Previous Failure</a> | <a href='#failure85'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure82'></a><dd><b>Testcase <a target='other_window' href='./js1_4/Regress/function-002.js'>js1_4/Regress/function-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=330462' target='other_window'>Bug Number 330462</a><br>
  + [ <a href='#failure81'>Previous Failure</a> | <a href='#failure83'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> f1.toString() == dec1 = false FAILED! expected: true<br>
   </tt><br>
  -<a name='failure85'></a><dd><b>Testcase <a target='other_window' href='./js1_4/Regress/function-003.js'>js1_4/Regress/function-003.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=310514' target='other_window'>Bug Number 310514</a><br>
  - [ <a href='#failure84'>Previous Failure</a> | <a href='#failure86'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure83'></a><dd><b>Testcase <a target='other_window' href='./js1_4/Regress/function-003.js'>js1_4/Regress/function-003.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=310514' target='other_window'>Bug Number 310514</a><br>
  + [ <a href='#failure82'>Previous Failure</a> | <a href='#failure84'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt><br>
   Failure messages were:<br>
   --> StripSpaces(Array.prototype.concat.toString()).substring(0,17) = (InternalFunction FAILED! expected: functionconcat(){<br>
   </tt><br>
  -<a name='failure86'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Array/regress-157652.js'>js1_5/Array/regress-157652.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=157652' target='other_window'>Bug Number 157652</a><br>
  - [ <a href='#failure85'>Previous Failure</a> | <a href='#failure87'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure84'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Array/regress-157652.js'>js1_5/Array/regress-157652.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=157652' target='other_window'>Bug Number 157652</a><br>
  + [ <a href='#failure83'>Previous Failure</a> | <a href='#failure85'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 3, got 0<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
  @@ -1317,36 +1299,36 @@
   --> --- NOTE: IN THIS TESTCASE, WE EXPECT EXIT CODE 3 ---<br>
   OK.<br>
   </tt><br>
  -<a name='failure87'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-001.js'>js1_5/Exceptions/catchguard-001.js</a> failed</b> <br>
  - [ <a href='#failure86'>Previous Failure</a> | <a href='#failure88'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure85'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-001.js'>js1_5/Exceptions/catchguard-001.js</a> failed</b> <br>
  + [ <a href='#failure84'>Previous Failure</a> | <a href='#failure86'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 42: SyntaxError - Parse error<br>
   </tt><br>
  -<a name='failure88'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-002.js'>js1_5/Exceptions/catchguard-002.js</a> failed</b> <br>
  - [ <a href='#failure87'>Previous Failure</a> | <a href='#failure89'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure86'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-002.js'>js1_5/Exceptions/catchguard-002.js</a> failed</b> <br>
  + [ <a href='#failure85'>Previous Failure</a> | <a href='#failure87'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 42: SyntaxError - Parse error<br>
   </tt><br>
  -<a name='failure89'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-003.js'>js1_5/Exceptions/catchguard-003.js</a> failed</b> <br>
  - [ <a href='#failure88'>Previous Failure</a> | <a href='#failure90'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure87'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-003.js'>js1_5/Exceptions/catchguard-003.js</a> failed</b> <br>
  + [ <a href='#failure86'>Previous Failure</a> | <a href='#failure88'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 42: SyntaxError - Parse error<br>
   </tt><br>
  -<a name='failure90'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/errstack-001.js'>js1_5/Exceptions/errstack-001.js</a> failed</b> <br>
  - [ <a href='#failure89'>Previous Failure</a> | <a href='#failure91'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure88'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/errstack-001.js'>js1_5/Exceptions/errstack-001.js</a> failed</b> <br>
  + [ <a href='#failure87'>Previous Failure</a> | <a href='#failure89'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 248: TypeError - Undefined value<br>
   </tt><br>
  -<a name='failure91'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/regress-123002.js'>js1_5/Exceptions/regress-123002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=123002' target='other_window'>Bug Number 123002</a><br>
  - [ <a href='#failure90'>Previous Failure</a> | <a href='#failure92'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure89'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/regress-123002.js'>js1_5/Exceptions/regress-123002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=123002' target='other_window'>Bug Number 123002</a><br>
  + [ <a href='#failure88'>Previous Failure</a> | <a href='#failure90'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing Error.length<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Section "Error" of test -<br>
  @@ -1371,8 +1353,8 @@
   --> FAILED!: [reported from test()] Expected value '3', Actual value '0'<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure92'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/regress-50447.js'>js1_5/Exceptions/regress-50447.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=50447' target='other_window'>Bug Number 50447</a><br>
  - [ <a href='#failure91'>Previous Failure</a> | <a href='#failure93'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure90'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/regress-50447.js'>js1_5/Exceptions/regress-50447.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=50447' target='other_window'>Bug Number 50447</a><br>
  + [ <a href='#failure89'>Previous Failure</a> | <a href='#failure91'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
  @@ -1380,78 +1362,78 @@
   --> STATUS: Test (non-ECMA) Error object properties fileName, lineNumber<br>
   Exception, line 66: TypeError - Undefined value<br>
   </tt><br>
  -<a name='failure93'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-001.js'>js1_5/GetSet/getset-001.js</a> failed</b> <br>
  - [ <a href='#failure92'>Previous Failure</a> | <a href='#failure94'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure91'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-001.js'>js1_5/GetSet/getset-001.js</a> failed</b> <br>
  + [ <a href='#failure90'>Previous Failure</a> | <a href='#failure92'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 33: SyntaxError - Parse error<br>
   </tt><br>
  -<a name='failure94'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-002.js'>js1_5/GetSet/getset-002.js</a> failed</b> <br>
  - [ <a href='#failure93'>Previous Failure</a> | <a href='#failure95'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure92'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-002.js'>js1_5/GetSet/getset-002.js</a> failed</b> <br>
  + [ <a href='#failure91'>Previous Failure</a> | <a href='#failure93'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 29: SyntaxError - Parse error<br>
   </tt><br>
  -<a name='failure95'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-003.js'>js1_5/GetSet/getset-003.js</a> failed</b> <br>
  - [ <a href='#failure94'>Previous Failure</a> | <a href='#failure96'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure93'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-003.js'>js1_5/GetSet/getset-003.js</a> failed</b> <br>
  + [ <a href='#failure92'>Previous Failure</a> | <a href='#failure94'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 48: SyntaxError - Parse error<br>
   </tt><br>
  -<a name='failure96'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-004.js'>js1_5/GetSet/getset-004.js</a> failed</b> <br>
  - [ <a href='#failure95'>Previous Failure</a> | <a href='#failure97'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure94'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-004.js'>js1_5/GetSet/getset-004.js</a> failed</b> <br>
  + [ <a href='#failure93'>Previous Failure</a> | <a href='#failure95'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 48: TypeError - Value undefined (result of expression obj.__defineSetter__) is not object.<br>
   </tt><br>
  -<a name='failure97'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-005.js'>js1_5/GetSet/getset-005.js</a> failed</b> <br>
  - [ <a href='#failure96'>Previous Failure</a> | <a href='#failure98'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure95'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-005.js'>js1_5/GetSet/getset-005.js</a> failed</b> <br>
  + [ <a href='#failure94'>Previous Failure</a> | <a href='#failure96'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 57: TypeError - Value undefined (result of expression obj.__defineSetter__) is not object.<br>
   </tt><br>
  -<a name='failure98'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-006.js'>js1_5/GetSet/getset-006.js</a> failed</b> <br>
  - [ <a href='#failure97'>Previous Failure</a> | <a href='#failure99'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure96'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-006.js'>js1_5/GetSet/getset-006.js</a> failed</b> <br>
  + [ <a href='#failure95'>Previous Failure</a> | <a href='#failure97'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 62: TypeError - Value undefined (result of expression obj.__defineSetter__) is not object.<br>
   </tt><br>
  -<a name='failure99'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-001.js'>js1_5/Object/regress-90596-001.js</a> failed</b> <br>
  - [ <a href='#failure98'>Previous Failure</a> | <a href='#failure100'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure97'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-001.js'>js1_5/Object/regress-90596-001.js</a> failed</b> <br>
  + [ <a href='#failure96'>Previous Failure</a> | <a href='#failure98'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 49: TypeError - Value undefined (result of expression obj.toSource) is not object.<br>
   </tt><br>
  -<a name='failure100'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-002.js'>js1_5/Object/regress-90596-002.js</a> failed</b> <br>
  - [ <a href='#failure99'>Previous Failure</a> | <a href='#failure101'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure98'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-002.js'>js1_5/Object/regress-90596-002.js</a> failed</b> <br>
  + [ <a href='#failure97'>Previous Failure</a> | <a href='#failure99'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 49: ReferenceError - Can't find variable: uneval<br>
   </tt><br>
  -<a name='failure101'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-001.js'>js1_5/Object/regress-96284-001.js</a> failed</b> <br>
  - [ <a href='#failure100'>Previous Failure</a> | <a href='#failure102'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure99'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-001.js'>js1_5/Object/regress-96284-001.js</a> failed</b> <br>
  + [ <a href='#failure98'>Previous Failure</a> | <a href='#failure100'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 50: TypeError - Value undefined (result of expression obj1.toSource) is not object.<br>
   </tt><br>
  -<a name='failure102'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-002.js'>js1_5/Object/regress-96284-002.js</a> failed</b> <br>
  - [ <a href='#failure101'>Previous Failure</a> | <a href='#failure103'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure100'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-002.js'>js1_5/Object/regress-96284-002.js</a> failed</b> <br>
  + [ <a href='#failure99'>Previous Failure</a> | <a href='#failure101'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 50: ReferenceError - Can't find variable: uneval<br>
   </tt><br>
  -<a name='failure103'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-103602.js'>js1_5/Regress/regress-103602.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=103602' target='other_window'>Bug Number 103602</a><br>
  - [ <a href='#failure102'>Previous Failure</a> | <a href='#failure104'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure101'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-103602.js'>js1_5/Regress/regress-103602.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=103602' target='other_window'>Bug Number 103602</a><br>
  + [ <a href='#failure100'>Previous Failure</a> | <a href='#failure102'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Reassignment to a const is NOT an error per ECMA<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Section 1 of test -<br>
  @@ -1461,29 +1443,29 @@
   --> FAILED!: [reported from test()] Expected value '1', Actual value '2'<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure104'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-104077.js'>js1_5/Regress/regress-104077.js</a> failed</b> <br>
  - [ <a href='#failure103'>Previous Failure</a> | <a href='#failure105'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure102'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-104077.js'>js1_5/Regress/regress-104077.js</a> failed</b> <br>
  + [ <a href='#failure101'>Previous Failure</a> | <a href='#failure103'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 351: SyntaxError - Parse error<br>
   </tt><br>
  -<a name='failure105'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-127557.js'>js1_5/Regress/regress-127557.js</a> failed</b> <br>
  - [ <a href='#failure104'>Previous Failure</a> | <a href='#failure106'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure103'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-127557.js'>js1_5/Regress/regress-127557.js</a> failed</b> <br>
  + [ <a href='#failure102'>Previous Failure</a> | <a href='#failure104'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 76: ReferenceError - Can't find variable: clone<br>
   </tt><br>
  -<a name='failure106'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-156354.js'>js1_5/Regress/regress-156354.js</a> failed</b> <br>
  - [ <a href='#failure105'>Previous Failure</a> | <a href='#failure107'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure104'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-156354.js'>js1_5/Regress/regress-156354.js</a> failed</b> <br>
  + [ <a href='#failure103'>Previous Failure</a> | <a href='#failure105'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 56: TypeError - Value undefined (result of expression this.propertyIsEnumerable) is not object.<br>
   </tt><br>
  -<a name='failure107'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-168347.js'>js1_5/Regress/regress-168347.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=168347' target='other_window'>Bug Number 168347</a><br>
  - [ <a href='#failure106'>Previous Failure</a> | <a href='#failure108'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure105'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-168347.js'>js1_5/Regress/regress-168347.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=168347' target='other_window'>Bug Number 168347</a><br>
  + [ <a href='#failure104'>Previous Failure</a> | <a href='#failure106'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing F.toString()<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Section 2 of test -<br>
  @@ -1493,15 +1475,15 @@
   --> FAILED!: [reported from test()] Expected value '{--f.i;print("--isucceededi="+f.i);}catch(e){print("--ifailedwith"+e+"i="+f.i);}try{f.i--;print("i--', Actual value '{f.i--;print("--isucceededi="+f.i);}catch(e){print("--ifailedwith"+e+"i="+f.i);}try{f.i--;print("i--'<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure108'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-172699.js'>js1_5/Regress/regress-172699.js</a> failed</b> <br>
  - [ <a href='#failure107'>Previous Failure</a> | <a href='#failure109'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure106'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-172699.js'>js1_5/Regress/regress-172699.js</a> failed</b> <br>
  + [ <a href='#failure105'>Previous Failure</a> | <a href='#failure107'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 62: URIError - URI error<br>
   </tt><br>
  -<a name='failure109'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-179524.js'>js1_5/Regress/regress-179524.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=179524' target='other_window'>Bug Number 179524</a><br>
  - [ <a href='#failure108'>Previous Failure</a> | <a href='#failure110'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure107'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-179524.js'>js1_5/Regress/regress-179524.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=179524' target='other_window'>Bug Number 179524</a><br>
  + [ <a href='#failure106'>Previous Failure</a> | <a href='#failure108'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Don't crash on extraneous arguments to str.match(), etc.<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Section 14 of test -<br>
  @@ -1551,16 +1533,16 @@
   --> FAILED!: [reported from test()] Expected value 'SHOULD HAVE FALLEN INTO CATCH-BLOCK!', Actual value 'ABC Zbc'<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure110'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-185165.js'>js1_5/Regress/regress-185165.js</a> failed</b> <br>
  - [ <a href='#failure109'>Previous Failure</a> | <a href='#failure111'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure108'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-185165.js'>js1_5/Regress/regress-185165.js</a> failed</b> <br>
  + [ <a href='#failure107'>Previous Failure</a> | <a href='#failure109'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   yylex: ERROR.<br>
   Exception, line 3: SyntaxError - Parse error<br>
   </tt><br>
  -<a name='failure111'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-44009.js'>js1_5/Regress/regress-44009.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=44009' target='other_window'>Bug Number 44009</a><br>
  - [ <a href='#failure110'>Previous Failure</a> | <a href='#failure112'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure109'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-44009.js'>js1_5/Regress/regress-44009.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=44009' target='other_window'>Bug Number 44009</a><br>
  + [ <a href='#failure108'>Previous Failure</a> | <a href='#failure110'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
  @@ -1568,8 +1550,8 @@
   --> STATUS: Testing that we don't crash on obj.toSource()<br>
   Exception, line 61: TypeError - Value undefined (result of expression obj.toSource) is not object.<br>
   </tt><br>
  -<a name='failure112'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-68498-003.js'>js1_5/Regress/regress-68498-003.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=68498' target='other_window'>Bug Number 68498</a><br>
  - [ <a href='#failure111'>Previous Failure</a> | <a href='#failure113'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure110'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-68498-003.js'>js1_5/Regress/regress-68498-003.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=68498' target='other_window'>Bug Number 68498</a><br>
  + [ <a href='#failure109'>Previous Failure</a> | <a href='#failure111'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing calling obj.eval(str)<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Testing calling obj.eval(str); currently at expect[1] within test -<br>
  @@ -1577,16 +1559,16 @@
   --> FAILED!: [reported from test()] Expected value '43', Actual value 'false'<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure113'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-96128-n.js'>js1_5/Regress/regress-96128-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=96128' target='other_window'>Bug Number 96128</a><br>
  - [ <a href='#failure112'>Previous Failure</a> | <a href='#failure114'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure111'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-96128-n.js'>js1_5/Regress/regress-96128-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=96128' target='other_window'>Bug Number 96128</a><br>
  + [ <a href='#failure110'>Previous Failure</a> | <a href='#failure112'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 3, got 0<br>
   Testcase terminated with signal 11<br>
   Complete testcase output was:<br>
   --> BUGNUMBER: 96128<br>
   --> STATUS: Testing that JS infinite recursion protection works<br>
   </tt><br>
  -<a name='failure114'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/regress-185485.js'>js1_5/Scope/regress-185485.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=185485' target='other_window'>Bug Number 185485</a><br>
  - [ <a href='#failure113'>Previous Failure</a> | <a href='#failure115'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure112'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/regress-185485.js'>js1_5/Scope/regress-185485.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=185485' target='other_window'>Bug Number 185485</a><br>
  + [ <a href='#failure111'>Previous Failure</a> | <a href='#failure113'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing |with (x) {function f() {}}| when |x.f| already exists<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Section 2 of test -<br>
  @@ -1601,15 +1583,15 @@
   --> FAILED!: [reported from test()] }', Actual value '0'<br>
   --> FAILED!: [reported from test()] <br>
   </tt><br>
  -<a name='failure115'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/regress-220584.js'>js1_5/Scope/regress-220584.js</a> failed</b> <br>
  - [ <a href='#failure114'>Previous Failure</a> | <a href='#failure116'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure113'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/regress-220584.js'>js1_5/Scope/regress-220584.js</a> failed</b> <br>
  + [ <a href='#failure112'>Previous Failure</a> | <a href='#failure114'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>Expected exit code 0, got 3<br>
   Testcase terminated with signal 0<br>
   Complete testcase output was:<br>
   Exception, line 57: ReferenceError - Can't find variable: Script<br>
   </tt><br>
  -<a name='failure116'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/scope-001.js'>js1_5/Scope/scope-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=53268' target='other_window'>Bug Number 53268</a><br>
  - [ <a href='#failure115'>Previous Failure</a> | <a href='#failure117'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
  +<a name='failure114'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/scope-001.js'>js1_5/Scope/scope-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=53268' target='other_window'>Bug Number 53268</a><br>
  + [ <a href='#failure113'>Previous Failure</a> | <a href='#failure115'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
   <tt>--> STATUS: Testing scope after changing obj.__proto__<br>
   Failure messages were:<br>
   --> FAILED!: [reported from test()] Step 1:  setting obj.__proto__ = global object<br>
  @@ -1626,9 +1608,9 @@
   <pre>
   <a name='retest_list'></a>
   <h2>Retest List</h2><br>
  -# Retest List, kjs, generated Fri Jul  1 11:51:40 2005.
  +# Retest List, kjs, generated Sun Jul  3 01:42:48 2005.
   # Original test base was: All tests.
  -# 962 of 967 test(s) were completed, 116 failures reported.
  +# 962 of 967 test(s) were completed, 114 failures reported.
   ecma/GlobalObject/15.1.2.2-2.js
   ecma/LexicalConventions/7.7.3-1.js
   ecma/TypeConversion/9.3.1-3.js
  @@ -1649,8 +1631,6 @@
   ecma_3/Function/regress-104584.js
   ecma_3/Function/regress-193555.js
   ecma_3/Function/regress-58274.js
  -ecma_3/Function/scope-001.js
  -ecma_3/Function/scope-002.js
   ecma_3/FunExpr/fe-001.js
   ecma_3/Object/class-001.js
   ecma_3/Object/class-002.js
  
  
  
  1.27      +2 -2      WebCore/khtml/ecma/kjs_css.cpp
  
  Index: kjs_css.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_css.cpp,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- kjs_css.cpp	22 Jun 2005 16:38:02 -0000	1.26
  +++ kjs_css.cpp	3 Jul 2005 10:47:55 -0000	1.27
  @@ -133,13 +133,13 @@
     ScriptInterpreter::forgetDOMObject(m_impl.get());
   }
   
  -bool DOMCSSStyleDeclaration::hasProperty(ExecState *exec, const Identifier &p) const
  +bool DOMCSSStyleDeclaration::hasOwnProperty(ExecState *exec, const Identifier &p) const
   {
     if (p == "cssText")
       return true;
     if (isCSSPropertyName(p))
       return true;
  -  return ObjectImp::hasProperty(exec, p);
  +  return ObjectImp::hasOwnProperty(exec, p);
   }
   
   Value DOMCSSStyleDeclaration::tryGet(ExecState *exec, const Identifier &propertyName) const
  
  
  
  1.15      +1 -1      WebCore/khtml/ecma/kjs_css.h
  
  Index: kjs_css.h
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_css.h,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- kjs_css.h	22 Jun 2005 00:48:44 -0000	1.14
  +++ kjs_css.h	3 Jul 2005 10:47:55 -0000	1.15
  @@ -51,7 +51,7 @@
       virtual ~DOMCSSStyleDeclaration();
       virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
       virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
  -    virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const;
  +    virtual bool hasOwnProperty(ExecState *exec, const Identifier &propertyName) const;
       virtual const ClassInfo *classInfo() const { return &info; }
       static const ClassInfo info;
       enum { CssText, Length, ParentRule,
  
  
  
  1.77      +6 -5      WebCore/khtml/ecma/kjs_dom.cpp
  
  Index: kjs_dom.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_dom.cpp,v
  retrieving revision 1.76
  retrieving revision 1.77
  diff -u -r1.76 -r1.77
  --- kjs_dom.cpp	22 Jun 2005 00:48:44 -0000	1.76
  +++ kjs_dom.cpp	3 Jul 2005 10:47:55 -0000	1.77
  @@ -727,11 +727,11 @@
   
   // We have to implement hasProperty since we don't use a hashtable for 'length' and 'item'
   // ## this breaks "for (..in..)" though.
  -bool DOMNodeList::hasProperty(ExecState *exec, const Identifier &p) const
  +bool DOMNodeList::hasOwnProperty(ExecState *exec, const Identifier &p) const
   {
     if (p == lengthPropertyName || p == "item")
       return true;
  -  return ObjectImp::hasProperty(exec, p);
  +  return ObjectImp::hasOwnProperty(exec, p);
   }
   
   Value DOMNodeList::tryGet(ExecState *exec, const Identifier &p) const
  @@ -1198,7 +1198,8 @@
     // We have to check in DOMNode before giving access to attributes, otherwise
     // onload="..." would make onload return the string (attribute value) instead of
     // the listener object (function).
  -  if (DOMNode::hasProperty(exec, propertyName))
  +  ValueImp *proto = prototype().imp();
  +  if (DOMNode::hasOwnProperty(exec, propertyName) || (proto->dispatchType() == ObjectType && static_cast<ObjectImp *>(proto)->hasProperty(exec, propertyName)))
       return DOMNode::tryGet(exec, propertyName);
   
     DOM::DOMString attr = element.getAttribute( propertyName.string() );
  @@ -1430,11 +1431,11 @@
   
   // We have to implement hasProperty since we don't use a hashtable for 'length'
   // ## this breaks "for (..in..)" though.
  -bool DOMNamedNodeMap::hasProperty(ExecState *exec, const Identifier &p) const
  +bool DOMNamedNodeMap::hasOwnProperty(ExecState *exec, const Identifier &p) const
   {
     if (p == lengthPropertyName)
       return true;
  -  return DOMObject::hasProperty(exec, p);
  +  return DOMObject::hasOwnProperty(exec, p);
   }
   
   Value DOMNamedNodeMap::tryGet(ExecState* exec, const Identifier &p) const
  
  
  
  1.42      +2 -2      WebCore/khtml/ecma/kjs_dom.h
  
  Index: kjs_dom.h
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_dom.h,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- kjs_dom.h	22 Jun 2005 00:48:44 -0000	1.41
  +++ kjs_dom.h	3 Jul 2005 10:47:56 -0000	1.42
  @@ -91,7 +91,7 @@
     public:
       DOMNodeList(ExecState *, DOM::NodeListImpl *l) : m_impl(l) { }
       ~DOMNodeList();
  -    virtual bool hasProperty(ExecState *exec, const Identifier &p) const;
  +    virtual bool hasOwnProperty(ExecState *exec, const Identifier &p) const;
       virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
       virtual Value call(ExecState *exec, Object &thisObj, const List&args);
       virtual Value tryCall(ExecState *exec, Object &thisObj, const List&args);
  @@ -201,7 +201,7 @@
     public:
       DOMNamedNodeMap(ExecState *, DOM::NamedNodeMapImpl *m);
       ~DOMNamedNodeMap();
  -    virtual bool hasProperty(ExecState *exec, const Identifier &p) const;
  +    virtual bool hasOwnProperty(ExecState *exec, const Identifier &p) const;
       virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
       // no put - all read-only
       virtual const ClassInfo* classInfo() const { return &info; }
  
  
  
  1.121     +8 -7      WebCore/khtml/ecma/kjs_html.cpp
  
  Index: kjs_html.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_html.cpp,v
  retrieving revision 1.120
  retrieving revision 1.121
  diff -u -r1.120 -r1.121
  --- kjs_html.cpp	29 Jun 2005 17:41:38 -0000	1.120
  +++ kjs_html.cpp	3 Jul 2005 10:47:56 -0000	1.121
  @@ -270,13 +270,13 @@
   {
   }
   
  -bool HTMLDocument::hasProperty(ExecState *exec, const Identifier &p) const
  +bool HTMLDocument::hasOwnProperty(ExecState *exec, const Identifier &p) const
   {
   #ifdef KJS_VERBOSE
     //kdDebug(6070) << "HTMLDocument::hasProperty " << p.qstring() << endl;
   #endif
     HTMLDocumentImpl *doc = static_cast<HTMLDocumentImpl *>(impl());
  -  return DOMDocument::hasProperty(exec, p) || doc->haveNamedImageOrForm(p.qstring());
  +  return DOMDocument::hasOwnProperty(exec, p) || doc->haveNamedImageOrForm(p.qstring());
   }
   
   Value HTMLDocument::tryGet(ExecState *exec, const Identifier &propertyName) const
  @@ -391,7 +391,8 @@
       }
     }
   
  -  if (DOMDocument::hasProperty(exec, propertyName))
  +  ValueImp *proto = prototype().imp();
  +  if (DOMDocument::hasOwnProperty(exec, propertyName) || (proto->dispatchType() == ObjectType && static_cast<ObjectImp *>(proto)->hasProperty(exec, propertyName)))
       return DOMDocument::tryGet(exec, propertyName);
   
     //kdDebug(6070) << "KJS::HTMLDocument::tryGet " << propertyName.qstring() << " not found, returning element" << endl;
  @@ -2051,7 +2052,7 @@
     return Undefined();
   }
   
  -bool KJS::HTMLElement::hasProperty(ExecState *exec, const Identifier &propertyName) const
  +bool KJS::HTMLElement::hasOwnProperty(ExecState *exec, const Identifier &propertyName) const
   {
   #ifdef KJS_VERBOSE
     //kdDebug(6070) << "HTMLElement::hasProperty " << propertyName.qstring() << endl;
  @@ -2098,7 +2099,7 @@
         break;
     }
   
  -  return DOMElement::hasProperty(exec, propertyName);
  +  return DOMElement::hasOwnProperty(exec, propertyName);
   }
   
   UString KJS::HTMLElement::toString(ExecState *exec) const
  @@ -3159,11 +3160,11 @@
   
   // We have to implement hasProperty since we don't use a hashtable for 'selectedIndex' and 'length'
   // ## this breaks "for (..in..)" though.
  -bool KJS::HTMLCollection::hasProperty(ExecState *exec, const Identifier &p) const
  +bool KJS::HTMLCollection::hasOwnProperty(ExecState *exec, const Identifier &p) const
   {
     if (p == "selectedIndex" || p == lengthPropertyName)
       return true;
  -  return DOMObject::hasProperty(exec, p);
  +  return DOMObject::hasOwnProperty(exec, p);
   }
   
   Value KJS::HTMLCollection::tryGet(ExecState *exec, const Identifier &propertyName) const
  
  
  
  1.49      +3 -3      WebCore/khtml/ecma/kjs_html.h
  
  Index: kjs_html.h
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_html.h,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- kjs_html.h	24 Jun 2005 05:53:26 -0000	1.48
  +++ kjs_html.h	3 Jul 2005 10:47:56 -0000	1.49
  @@ -50,7 +50,7 @@
       virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
       virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
       void putValue(ExecState *exec, int token, const Value& value, int /*attr*/);
  -    virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const;
  +    virtual bool hasOwnProperty(ExecState *exec, const Identifier &propertyName) const;
       virtual const ClassInfo* classInfo() const { return &info; }
       static const ClassInfo info;
       enum { Title, Referrer, Domain, URL, Body, Location, Cookie,
  @@ -66,7 +66,7 @@
       Value getValueProperty(ExecState *exec, int token) const;
       virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
       void putValue(ExecState *exec, int token, const Value& value, int);
  -    virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const;
  +    virtual bool hasOwnProperty(ExecState *exec, const Identifier &propertyName) const;
       virtual UString toString(ExecState *exec) const;
       virtual void pushEventHandlerScope(ExecState *exec, ScopeChain &scope) const;
       virtual Value call(ExecState *exec, Object &thisObj, const List&args);
  @@ -175,7 +175,7 @@
       virtual Value tryCall(ExecState *exec, Object &thisObj, const List&args);
       virtual bool implementsCall() const { return true; }
       virtual bool toBoolean(ExecState *) const { return true; }
  -    virtual bool hasProperty(ExecState *exec, const Identifier &p) const;
  +    virtual bool hasOwnProperty(ExecState *exec, const Identifier &p) const;
       enum { Item, NamedItem, Tags };
       Value getNamedItems(ExecState *exec, const Identifier &propertyName) const;
       virtual const ClassInfo* classInfo() const { return &info; }
  
  
  
  1.162     +2 -2      WebCore/khtml/ecma/kjs_window.cpp
  
  Index: kjs_window.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_window.cpp,v
  retrieving revision 1.161
  retrieving revision 1.162
  diff -u -r1.161 -r1.162
  --- kjs_window.cpp	22 Jun 2005 00:48:44 -0000	1.161
  +++ kjs_window.cpp	3 Jul 2005 10:47:56 -0000	1.162
  @@ -1113,7 +1113,7 @@
     return Undefined();
   }
   
  -bool Window::hasProperty(ExecState *exec, const Identifier &p) const
  +bool Window::hasOwnProperty(ExecState *exec, const Identifier &p) const
   {
     // matches logic in get function above, but no need to handle numeric values (frame indices)
   
  @@ -2906,7 +2906,7 @@
   
   const ClassInfo Konqueror::info = { "Konqueror", 0, 0, 0 };
   
  -bool Konqueror::hasProperty(ExecState *exec, const Identifier &p) const
  +bool Konqueror::hasOwnProperty(ExecState *exec, const Identifier &p) const
   {
     if ( p.qstring().startsWith( "goHistory" ) ) return false;
   
  
  
  
  1.44      +2 -2      WebCore/khtml/ecma/kjs_window.h
  
  Index: kjs_window.h
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/ecma/kjs_window.h,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- kjs_window.h	22 Jun 2005 00:48:44 -0000	1.43
  +++ kjs_window.h	3 Jul 2005 10:47:56 -0000	1.44
  @@ -92,7 +92,7 @@
       QGuardedPtr<KHTMLPart> part() const { return m_part; }
       virtual void mark();
       virtual Value get(ExecState *exec, const Identifier &propertyName) const;
  -    virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const;
  +    virtual bool hasOwnProperty(ExecState *exec, const Identifier &propertyName) const;
       virtual void put(ExecState *exec, const Identifier &propertyName, const Value &value, int attr = None);
       virtual bool toBoolean(ExecState *exec) const;
       int installTimeout(const UString &handler, int t, bool singleShot);
  @@ -277,7 +277,7 @@
     public:
       Konqueror(KHTMLPart *p) : part(p) { }
       virtual Value get(ExecState *exec, const Identifier &propertyName) const;
  -    virtual bool hasProperty(ExecState *exec, const Identifier &p) const;
  +    virtual bool hasOwnProperty(ExecState *exec, const Identifier &p) const;
       virtual UString toString(ExecState *exec) const;
       virtual const ClassInfo* classInfo() const { return &info; }
       static const ClassInfo info;
  
  
  
  1.3       +0 -0      WebCore/layout-tests/fast/js/eval-var-decl.html
  
  
  
  
  1.1                  WebCore/layout-tests/fast/js/has-own-property.html
  
  Index: has-own-property.html
  ===================================================================
  <html>
      <head>
          <title>Test of hasOwnProperty</title>
          <script type="text/javascript">
              function print(message)
              {
                  var paragraph = document.createElement("li");
                  paragraph.appendChild(document.createTextNode(message));
                  document.getElementById("console").appendChild(paragraph);
              }
              
              function test()
              {
              
                  var anObject = {foo : 'yum'};
                  var aString = '';
                  
                  if (anObject.hasOwnProperty)
                  {
                      print("anObject has own property 'foo': " + anObject.hasOwnProperty('foo'));
                      print("aString has own property 'length': " + ''.hasOwnProperty('length'));
                      print("anObject has own property 'bar': " + anObject.hasOwnProperty('bar'));
                      print("anObject has own property 'toString': " + anObject.hasOwnProperty('toString'));
                      print("aString has own property 'toString': " + ''.hasOwnProperty('toString'));
                  }
                  else
                  {
                      print("ERROR: ECMAScript hasOwnProperty() method missing!");
                  }
              }        
          </script>
      </head>
      <body onload="test()">
          <p>This test verifies the behaviour of Object.prototype.hasOwnProperty, as documented in ECMA-262 rev3 section 15.2.4.5.</p>
          <p>If the test passes, you should see two 'true' outputs followed by three 'false' outputs.</p>
          <hr>
          <p><ol id=console></ol></p>
      </body>
  </html>
  
  



More information about the webkit-changes mailing list