[webkit-changes] cvs commit: JavaScriptCore/tests/mozilla
expected.html
Maciej
mjs at opensource.apple.com
Sat Sep 24 15:34:17 PDT 2005
mjs 05/09/24 15:34:16
Modified: . ChangeLog
kjs grammar.y nodes.cpp nodes.h nodes2string.cpp
reference.cpp reference.h
tests/mozilla expected.html
Log:
Reviewed by Darin.
<rdar://problem/4260479> Finish deploying PropertySlot in the interpreter
http://bugzilla.opendarwin.org/show_bug.cgi?id=5112
Convert postfix, prefix, delete, prefix, and for..in expressions to use
PropertySlot-based lookup instead of evaluateReference.
3% speedup on JS iBench.
Fixed two of the JS tests:
* tests/mozilla/expected.html:
* kjs/grammar.y:
* kjs/nodes.cpp:
(PostfixResolveNode::evaluate):
(PostfixBracketNode::evaluate):
(PostfixDotNode::evaluate):
(DeleteResolveNode::evaluate):
(DeleteBracketNode::evaluate):
(DeleteDotNode::evaluate):
(DeleteValueNode::evaluate):
(typeStringForValue):
(TypeOfResolveNode::evaluate):
(TypeOfValueNode::evaluate):
(PrefixResolveNode::evaluate):
(PrefixBracketNode::evaluate):
(PrefixDotNode::evaluate):
(ForInNode::execute):
* kjs/nodes.h:
(KJS::PostfixResolveNode::PostfixResolveNode):
(KJS::PostfixBracketNode::PostfixBracketNode):
(KJS::PostfixDotNode::PostfixDotNode):
(KJS::DeleteResolveNode::DeleteResolveNode):
(KJS::DeleteBracketNode::DeleteBracketNode):
(KJS::DeleteDotNode::DeleteDotNode):
(KJS::DeleteValueNode::DeleteValueNode):
(KJS::TypeOfResolveNode::TypeOfResolveNode):
(KJS::TypeOfValueNode::TypeOfValueNode):
(KJS::PrefixResolveNode::PrefixResolveNode):
(KJS::PrefixBracketNode::PrefixBracketNode):
(KJS::PrefixDotNode::PrefixDotNode):
* kjs/nodes2string.cpp:
(PostfixResolveNode::streamTo):
(PostfixBracketNode::streamTo):
(PostfixDotNode::streamTo):
(DeleteResolveNode::streamTo):
(DeleteBracketNode::streamTo):
(DeleteDotNode::streamTo):
(DeleteValueNode::streamTo):
(TypeOfValueNode::streamTo):
(TypeOfResolveNode::streamTo):
(PrefixResolveNode::streamTo):
(PrefixBracketNode::streamTo):
(PrefixDotNode::streamTo):
* kjs/reference.cpp:
(KJS::Reference::Reference):
(KJS::Reference::getPropertyName):
(KJS::Reference::getValue):
(KJS::Reference::deleteValue):
* kjs/reference.h:
Revision Changes Path
1.837 +64 -0 JavaScriptCore/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /cvs/root/JavaScriptCore/ChangeLog,v
retrieving revision 1.836
retrieving revision 1.837
diff -u -r1.836 -r1.837
--- ChangeLog 24 Sep 2005 03:28:28 -0000 1.836
+++ ChangeLog 24 Sep 2005 22:34:12 -0000 1.837
@@ -1,3 +1,67 @@
+2005-09-23 Maciej Stachowiak <mjs at apple.com>
+
+ Reviewed by Darin.
+
+ <rdar://problem/4260479> Finish deploying PropertySlot in the interpreter
+ http://bugzilla.opendarwin.org/show_bug.cgi?id=5112
+
+ Convert postfix, prefix, delete, prefix, and for..in expressions to use
+ PropertySlot-based lookup instead of evaluateReference.
+
+ 3% speedup on JS iBench.
+
+ Fixed two of the JS tests:
+ * tests/mozilla/expected.html:
+
+ * kjs/grammar.y:
+ * kjs/nodes.cpp:
+ (PostfixResolveNode::evaluate):
+ (PostfixBracketNode::evaluate):
+ (PostfixDotNode::evaluate):
+ (DeleteResolveNode::evaluate):
+ (DeleteBracketNode::evaluate):
+ (DeleteDotNode::evaluate):
+ (DeleteValueNode::evaluate):
+ (typeStringForValue):
+ (TypeOfResolveNode::evaluate):
+ (TypeOfValueNode::evaluate):
+ (PrefixResolveNode::evaluate):
+ (PrefixBracketNode::evaluate):
+ (PrefixDotNode::evaluate):
+ (ForInNode::execute):
+ * kjs/nodes.h:
+ (KJS::PostfixResolveNode::PostfixResolveNode):
+ (KJS::PostfixBracketNode::PostfixBracketNode):
+ (KJS::PostfixDotNode::PostfixDotNode):
+ (KJS::DeleteResolveNode::DeleteResolveNode):
+ (KJS::DeleteBracketNode::DeleteBracketNode):
+ (KJS::DeleteDotNode::DeleteDotNode):
+ (KJS::DeleteValueNode::DeleteValueNode):
+ (KJS::TypeOfResolveNode::TypeOfResolveNode):
+ (KJS::TypeOfValueNode::TypeOfValueNode):
+ (KJS::PrefixResolveNode::PrefixResolveNode):
+ (KJS::PrefixBracketNode::PrefixBracketNode):
+ (KJS::PrefixDotNode::PrefixDotNode):
+ * kjs/nodes2string.cpp:
+ (PostfixResolveNode::streamTo):
+ (PostfixBracketNode::streamTo):
+ (PostfixDotNode::streamTo):
+ (DeleteResolveNode::streamTo):
+ (DeleteBracketNode::streamTo):
+ (DeleteDotNode::streamTo):
+ (DeleteValueNode::streamTo):
+ (TypeOfValueNode::streamTo):
+ (TypeOfResolveNode::streamTo):
+ (PrefixResolveNode::streamTo):
+ (PrefixBracketNode::streamTo):
+ (PrefixDotNode::streamTo):
+ * kjs/reference.cpp:
+ (KJS::Reference::Reference):
+ (KJS::Reference::getPropertyName):
+ (KJS::Reference::getValue):
+ (KJS::Reference::deleteValue):
+ * kjs/reference.h:
+
2005-09-23 Krzysztof Kowalczyk <kkowalczyk at gmail.com>
Reviewed and landed by Darin.
1.30 +139 -38 JavaScriptCore/kjs/grammar.y
Index: grammar.y
===================================================================
RCS file: /cvs/root/JavaScriptCore/kjs/grammar.y,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- grammar.y 21 Sep 2005 05:53:05 -0000 1.29
+++ grammar.y 24 Sep 2005 22:34:13 -0000 1.30
@@ -49,7 +49,12 @@
using namespace KJS;
+static bool makeAssignNode(Node*& result, Node *loc, Operator op, Node *expr);
+static bool makePrefixNode(Node*& result, Node *expr, Operator op);
+static bool makePostfixNode(Node*& result, Node *expr, Operator op);
static Node *makeFunctionCallNode(Node *func, ArgumentsNode *args);
+static Node *makeTypeOfNode(Node *expr);
+static Node *makeDeleteNode(Node *expr);
%}
@@ -165,7 +170,6 @@
%type <elm> ElementList
%type <plist> PropertyNameAndValueList
%type <pnode> PropertyName
-%type <ident> ParenthesizedIdent
%%
@@ -184,17 +188,12 @@
$$ = new RegExpNode(UString('=')+l->pattern,l->flags);}
;
-ParenthesizedIdent:
- IDENT
- | '(' ParenthesizedIdent ')' { $$ = $2; }
-;
-
PrimaryExpr:
THIS { $$ = new ThisNode(); }
| Literal
| ArrayLiteral
- | ParenthesizedIdent { $$ = new ResolveNode(*$1); }
- | '(' Expr ')' { $$ = new GroupNode($2); }
+ | IDENT { $$ = new ResolveNode(*$1); }
+ | '(' Expr ')' { if ($2->isResolveNode()) $$ = $2; else $$ = new GroupNode($2); }
| '{' '}' { $$ = new ObjectLiteralNode(); }
| '{' PropertyNameAndValueList '}' { $$ = new ObjectLiteralNode($2); }
;
@@ -270,19 +269,19 @@
PostfixExpr: /* TODO: no line terminator here */
LeftHandSideExpr
- | LeftHandSideExpr PLUSPLUS { $$ = new PostfixNode($1, OpPlusPlus); }
- | LeftHandSideExpr MINUSMINUS { $$ = new PostfixNode($1, OpMinusMinus); }
+ | LeftHandSideExpr PLUSPLUS { if (!makePostfixNode($$, $1, OpPlusPlus)) YYABORT; }
+ | LeftHandSideExpr MINUSMINUS { if (!makePostfixNode($$, $1, OpMinusMinus)) YYABORT; }
;
UnaryExpr:
PostfixExpr
- | DELETE UnaryExpr { $$ = new DeleteNode($2); }
+ | DELETE UnaryExpr { $$ = makeDeleteNode($2); }
| VOID UnaryExpr { $$ = new VoidNode($2); }
- | TYPEOF UnaryExpr { $$ = new TypeOfNode($2); }
- | PLUSPLUS UnaryExpr { $$ = new PrefixNode(OpPlusPlus, $2); }
- | AUTOPLUSPLUS UnaryExpr { $$ = new PrefixNode(OpPlusPlus, $2); }
- | MINUSMINUS UnaryExpr { $$ = new PrefixNode(OpMinusMinus, $2); }
- | AUTOMINUSMINUS UnaryExpr { $$ = new PrefixNode(OpMinusMinus, $2); }
+ | TYPEOF UnaryExpr { $$ = makeTypeOfNode($2); }
+ | PLUSPLUS UnaryExpr { if (!makePrefixNode($$, $2, OpPlusPlus)) YYABORT; }
+ | AUTOPLUSPLUS UnaryExpr { if (!makePrefixNode($$, $2, OpPlusPlus)) YYABORT; }
+ | MINUSMINUS UnaryExpr { if (!makePrefixNode($$, $2, OpMinusMinus)) YYABORT; }
+ | AUTOMINUSMINUS UnaryExpr { if (!makePrefixNode($$, $2, OpMinusMinus)) YYABORT; }
| '+' UnaryExpr { $$ = new UnaryPlusNode($2); }
| '-' UnaryExpr { $$ = new NegateNode($2); }
| '~' UnaryExpr { $$ = new BitwiseNotNode($2); }
@@ -369,26 +368,7 @@
AssignmentExpr:
ConditionalExpr
| LeftHandSideExpr AssignmentOperator AssignmentExpr
- {
- Node *n = $1;
- bool paren = n->isGroupNode();
- if (paren)
- n = static_cast<GroupNode *>(n)->nodeInsideAllParens();
-
- if (!n->isLocation())
- YYABORT;
- else if (n->isResolveNode()) {
- ResolveNode *resolve = static_cast<ResolveNode *>(n);
- $$ = new AssignResolveNode(resolve->identifier(), $2, $3);
- } else if (n->isBracketAccessorNode()) {
- BracketAccessorNode *bracket = static_cast<BracketAccessorNode *>(n);
- $$ = new AssignBracketNode(bracket->base(), bracket->subscript(), $2, $3);
- } else {
- assert(n->isDotAccessorNode());
- DotAccessorNode *dot = static_cast<DotAccessorNode *>(n);
- $$ = new AssignDotNode(dot->base(), dot->identifier(), $2, $3);
- }
- }
+ { if (!makeAssignNode($$, $1, $2, $3)) YYABORT; }
;
AssignmentOperator:
@@ -519,8 +499,18 @@
Statement { $$ = new ForNode($4,$6,$8,$10);
DBG($$, at 1, at 9); }
| FOR '(' LeftHandSideExpr IN Expr ')'
- Statement { $$ = new ForInNode($3, $5, $7);
- DBG($$, at 1, at 6); }
+ Statement {
+ Node *n = $3;
+ bool paren = n->isGroupNode();
+ if (paren)
+ n = static_cast<GroupNode *>(n)->nodeInsideAllParens();
+
+ if (!n->isLocation())
+ YYABORT;
+
+ $$ = new ForInNode(n, $5, $7);
+ DBG($$, at 1, at 6);
+ }
| FOR '(' VAR IDENT IN Expr ')'
Statement { $$ = new ForInNode(*$4,0,$6,$8);
DBG($$, at 1, at 7); }
@@ -685,6 +675,81 @@
%%
+static bool makeAssignNode(Node*& result, Node *loc, Operator op, Node *expr)
+{
+ Node *n = loc;
+ bool paren = n->isGroupNode();
+ if (paren)
+ n = static_cast<GroupNode *>(n)->nodeInsideAllParens();
+
+ if (!n->isLocation())
+ return false;
+
+ if (n->isResolveNode()) {
+ ResolveNode *resolve = static_cast<ResolveNode *>(n);
+ result = new AssignResolveNode(resolve->identifier(), op, expr);
+ } else if (n->isBracketAccessorNode()) {
+ BracketAccessorNode *bracket = static_cast<BracketAccessorNode *>(n);
+ result = new AssignBracketNode(bracket->base(), bracket->subscript(), op, expr);
+ } else {
+ assert(n->isDotAccessorNode());
+ DotAccessorNode *dot = static_cast<DotAccessorNode *>(n);
+ result = new AssignDotNode(dot->base(), dot->identifier(), op, expr);
+ }
+
+ return true;
+}
+
+static bool makePrefixNode(Node*& result, Node *expr, Operator op)
+{
+ Node *n = expr;
+ bool paren = n->isGroupNode();
+ if (paren)
+ n = static_cast<GroupNode *>(n)->nodeInsideAllParens();
+
+ if (!n->isLocation())
+ return false;
+
+ if (n->isResolveNode()) {
+ ResolveNode *resolve = static_cast<ResolveNode *>(n);
+ result = new PrefixResolveNode(resolve->identifier(), op);
+ } else if (n->isBracketAccessorNode()) {
+ BracketAccessorNode *bracket = static_cast<BracketAccessorNode *>(n);
+ result = new PrefixBracketNode(bracket->base(), bracket->subscript(), op);
+ } else {
+ assert(n->isDotAccessorNode());
+ DotAccessorNode *dot = static_cast<DotAccessorNode *>(n);
+ result = new PrefixDotNode(dot->base(), dot->identifier(), op);
+ }
+
+ return true;
+}
+
+static bool makePostfixNode(Node*& result, Node *expr, Operator op)
+{
+ Node *n = expr;
+ bool paren = n->isGroupNode();
+ if (paren)
+ n = static_cast<GroupNode *>(n)->nodeInsideAllParens();
+
+ if (!n->isLocation())
+ return false;
+
+ if (n->isResolveNode()) {
+ ResolveNode *resolve = static_cast<ResolveNode *>(n);
+ result = new PostfixResolveNode(resolve->identifier(), op);
+ } else if (n->isBracketAccessorNode()) {
+ BracketAccessorNode *bracket = static_cast<BracketAccessorNode *>(n);
+ result = new PostfixBracketNode(bracket->base(), bracket->subscript(), op);
+ } else {
+ assert(n->isDotAccessorNode());
+ DotAccessorNode *dot = static_cast<DotAccessorNode *>(n);
+ result = new PostfixDotNode(dot->base(), dot->identifier(), op);
+ }
+
+ return true;
+}
+
static Node *makeFunctionCallNode(Node *func, ArgumentsNode *args)
{
Node *n = func;
@@ -713,6 +778,42 @@
}
}
+static Node *makeTypeOfNode(Node *expr)
+{
+ Node *n = expr;
+ bool paren = n->isGroupNode();
+ if (paren)
+ n = static_cast<GroupNode *>(n)->nodeInsideAllParens();
+
+ if (n->isResolveNode()) {
+ ResolveNode *resolve = static_cast<ResolveNode *>(n);
+ return new TypeOfResolveNode(resolve->identifier());
+ } else
+ return new TypeOfValueNode(n);
+}
+
+static Node *makeDeleteNode(Node *expr)
+{
+ Node *n = expr;
+ bool paren = n->isGroupNode();
+ if (paren)
+ n = static_cast<GroupNode *>(n)->nodeInsideAllParens();
+
+ if (!n->isLocation())
+ return new DeleteValueNode(expr);
+ else if (n->isResolveNode()) {
+ ResolveNode *resolve = static_cast<ResolveNode *>(n);
+ return new DeleteResolveNode(resolve->identifier());
+ } else if (n->isBracketAccessorNode()) {
+ BracketAccessorNode *bracket = static_cast<BracketAccessorNode *>(n);
+ return new DeleteBracketNode(bracket->base(), bracket->subscript());
+ } else {
+ assert(n->isDotAccessorNode());
+ DotAccessorNode *dot = static_cast<DotAccessorNode *>(n);
+ return new DeleteDotNode(dot->base(), dot->identifier());
+ }
+}
+
int yyerror (const char * /* s */) /* Called by yyparse on error */
{
// fprintf(stderr, "ERROR: %s at line %d\n",
1.82 +325 -113 JavaScriptCore/kjs/nodes.cpp
Index: nodes.cpp
===================================================================
RCS file: /cvs/root/JavaScriptCore/kjs/nodes.cpp,v
retrieving revision 1.81
retrieving revision 1.82
diff -u -r1.81 -r1.82
--- nodes.cpp 9 Sep 2005 01:19:19 -0000 1.81
+++ nodes.cpp 24 Sep 2005 22:34:13 -0000 1.82
@@ -72,14 +72,6 @@
if (Collector::outOfMemory()) \
return Undefined(); // will be picked up by KJS_CHECKEXCEPTION
-#define KJS_CHECKEXCEPTIONREFERENCE \
- if (exec->hadException()) { \
- setExceptionDetailsIfNeeded(exec); \
- return Reference::makeValueReference(Undefined()); \
- } \
- if (Collector::outOfMemory()) \
- return Reference::makeValueReference(Undefined()); // will be picked up by KJS_CHECKEXCEPTION
-
#define KJS_CHECKEXCEPTIONLIST \
if (exec->hadException()) { \
setExceptionDetailsIfNeeded(exec); \
@@ -106,13 +98,6 @@
{
}
-Reference Node::evaluateReference(ExecState *exec)
-{
- ValueImp *v = evaluate(exec);
- KJS_CHECKEXCEPTIONREFERENCE
- return Reference::makeValueReference(v);
-}
-
#ifdef KJS_DEBUG_MEM
void Node::finalCheck()
{
@@ -306,27 +291,6 @@
return undefinedVariableError(exec, ident);
}
-Reference ResolveNode::evaluateReference(ExecState *exec)
-{
- const ScopeChain& chain = exec->context().imp()->scopeChain();
- ScopeChainIterator iter = chain.begin();
- ScopeChainIterator end = chain.end();
-
- // we must always have something in the scope chain
- assert(iter != end);
-
- PropertySlot slot;
- do {
- ObjectImp *o = *iter;
- if (o->getPropertySlot(exec, ident, slot))
- return Reference(o, ident);
-
- ++iter;
- } while (iter != end);
-
- return Reference(ident);
-}
-
// ------------------------------ GroupNode ------------------------------------
// ECMA 11.1.6
@@ -335,11 +299,6 @@
return group->evaluate(exec);
}
-Reference GroupNode::evaluateReference(ExecState *exec)
-{
- return group->evaluateReference(exec);
-}
-
// ------------------------------ ElementNode ----------------------------------
// ECMA 11.1.4
@@ -442,19 +401,6 @@
return o->get(exec, Identifier(v2->toString(exec)));
}
-Reference BracketAccessorNode::evaluateReference(ExecState *exec)
-{
- ValueImp *v1 = expr1->evaluate(exec);
- KJS_CHECKEXCEPTIONREFERENCE
- ValueImp *v2 = expr2->evaluate(exec);
- KJS_CHECKEXCEPTIONREFERENCE
- ObjectImp *o = v1->toObject(exec);
- uint32_t i;
- if (v2->getUInt32(i))
- return Reference(o, i);
- return Reference(o, Identifier(v2->toString(exec)));
-}
-
// ------------------------------ DotAccessorNode --------------------------------
// ECMA 11.2.1b
@@ -466,14 +412,6 @@
}
-Reference DotAccessorNode::evaluateReference(ExecState *exec)
-{
- ValueImp *v = expr->evaluate(exec);
- KJS_CHECKEXCEPTIONREFERENCE
- ObjectImp *o = v->toObject(exec);
- return Reference(o, ident);
-}
-
// ------------------------------ ArgumentListNode -----------------------------
ValueImp *ArgumentListNode::evaluate(ExecState */*exec*/)
@@ -701,32 +639,164 @@
return func->call(exec, thisObj, argList);
}
-// ------------------------------ PostfixNode ----------------------------------
-
// ECMA 11.3
-ValueImp *PostfixNode::evaluate(ExecState *exec)
+
+// ------------------------------ PostfixResolveNode ----------------------------------
+
+ValueImp *PostfixResolveNode::evaluate(ExecState *exec)
{
- Reference ref = expr->evaluateReference(exec);
+ const ScopeChain& chain = exec->context().imp()->scopeChain();
+ ScopeChainIterator iter = chain.begin();
+ ScopeChainIterator end = chain.end();
+
+ // we must always have something in the scope chain
+ assert(iter != end);
+
+ PropertySlot slot;
+ ObjectImp *base;
+ do {
+ base = *iter;
+ if (base->getPropertySlot(exec, m_ident, slot)) {
+ ValueImp *v = slot.getValue(exec, m_ident);
+
+ bool knownToBeInteger;
+ double n = v->toNumber(exec, knownToBeInteger);
+
+ double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
+ base->put(exec, m_ident, jsNumber(newValue, knownToBeInteger));
+
+ return jsNumber(n, knownToBeInteger);
+ }
+
+ ++iter;
+ } while (iter != end);
+
+ return undefinedVariableError(exec, m_ident);
+}
+
+// ------------------------------ PostfixBracketNode ----------------------------------
+
+ValueImp *PostfixBracketNode::evaluate(ExecState *exec)
+{
+ ValueImp *baseValue = m_base->evaluate(exec);
+ KJS_CHECKEXCEPTIONVALUE
+ ValueImp *subscript = m_subscript->evaluate(exec);
+ KJS_CHECKEXCEPTIONVALUE
+
+ ObjectImp *base = baseValue->toObject(exec);
+
+ uint32_t propertyIndex;
+ if (subscript->getUInt32(propertyIndex)) {
+ PropertySlot slot;
+ ValueImp *v = base->getPropertySlot(exec, propertyIndex, slot) ? slot.getValue(exec, propertyIndex) : Undefined();
+ KJS_CHECKEXCEPTIONVALUE
+
+ bool knownToBeInteger;
+ double n = v->toNumber(exec, knownToBeInteger);
+
+ double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
+ base->put(exec, propertyIndex, jsNumber(newValue, knownToBeInteger));
+
+ return jsNumber(n, knownToBeInteger);
+ }
+
+ Identifier propertyName(subscript->toString(exec));
+ PropertySlot slot;
+ ValueImp *v = base->getPropertySlot(exec, propertyName, slot) ? slot.getValue(exec, propertyName) : Undefined();
KJS_CHECKEXCEPTIONVALUE
- ValueImp *v = ref.getValue(exec);
bool knownToBeInteger;
double n = v->toNumber(exec, knownToBeInteger);
+
+ double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
+ base->put(exec, propertyName, jsNumber(newValue, knownToBeInteger));
+
+ return jsNumber(n, knownToBeInteger);
+}
+
+// ------------------------------ PostfixDotNode ----------------------------------
- double newValue = (oper == OpPlusPlus) ? n + 1 : n - 1;
- ref.putValue(exec, jsNumber(newValue, knownToBeInteger));
+ValueImp *PostfixDotNode::evaluate(ExecState *exec)
+{
+ ValueImp *baseValue = m_base->evaluate(exec);
+ KJS_CHECKEXCEPTIONVALUE
+ ObjectImp *base = baseValue->toObject(exec);
+ PropertySlot slot;
+ ValueImp *v = base->getPropertySlot(exec, m_ident, slot) ? slot.getValue(exec, m_ident) : Undefined();
+ KJS_CHECKEXCEPTIONVALUE
+
+ bool knownToBeInteger;
+ double n = v->toNumber(exec, knownToBeInteger);
+
+ double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
+ base->put(exec, m_ident, jsNumber(newValue, knownToBeInteger));
+
return jsNumber(n, knownToBeInteger);
}
-// ------------------------------ DeleteNode -----------------------------------
-
// ECMA 11.4.1
-ValueImp *DeleteNode::evaluate(ExecState *exec)
+
+// ------------------------------ DeleteResolveNode -----------------------------------
+ValueImp *DeleteResolveNode::evaluate(ExecState *exec)
{
- Reference ref = expr->evaluateReference(exec);
+ const ScopeChain& chain = exec->context().imp()->scopeChain();
+ ScopeChainIterator iter = chain.begin();
+ ScopeChainIterator end = chain.end();
+
+ // we must always have something in the scope chain
+ assert(iter != end);
+
+ PropertySlot slot;
+ ObjectImp *base;
+ do {
+ base = *iter;
+ if (base->getPropertySlot(exec, m_ident, slot)) {
+ return jsBoolean(base->deleteProperty(exec, m_ident));
+ }
+
+ ++iter;
+ } while (iter != end);
+
+ return jsBoolean(true);
+}
+
+// ------------------------------ DeleteBracketNode -----------------------------------
+ValueImp *DeleteBracketNode::evaluate(ExecState *exec)
+{
+ ValueImp *baseValue = m_base->evaluate(exec);
+ KJS_CHECKEXCEPTIONVALUE
+ ValueImp *subscript = m_subscript->evaluate(exec);
+ KJS_CHECKEXCEPTIONVALUE
+
+ ObjectImp *base = baseValue->toObject(exec);
+
+ uint32_t propertyIndex;
+ if (subscript->getUInt32(propertyIndex))
+ return jsBoolean(base->deleteProperty(exec, propertyIndex));
+
+ Identifier propertyName(subscript->toString(exec));
+ return jsBoolean(base->deleteProperty(exec, propertyName));
+}
+
+// ------------------------------ DeleteDotNode -----------------------------------
+ValueImp *DeleteDotNode::evaluate(ExecState *exec)
+{
+ ValueImp *baseValue = m_base->evaluate(exec);
+ ObjectImp *base = baseValue->toObject(exec);
+ KJS_CHECKEXCEPTIONVALUE
+
+ return jsBoolean(base->deleteProperty(exec, m_ident));
+}
+
+// ------------------------------ DeleteValueNode -----------------------------------
+ValueImp *DeleteValueNode::evaluate(ExecState *exec)
+{
+ m_expr->evaluate(exec);
KJS_CHECKEXCEPTIONVALUE
- return jsBoolean(ref.deleteValue(exec));
+
+ // delete on a non-location expression ignores the value and returns true
+ return jsBoolean(true);
}
// ------------------------------ VoidNode -------------------------------------
@@ -740,62 +810,161 @@
return Undefined();
}
-// ------------------------------ TypeOfNode -----------------------------------
-
// ECMA 11.4.3
-ValueImp *TypeOfNode::evaluate(ExecState *exec)
+
+// ------------------------------ TypeOfValueNode -----------------------------------
+
+static ValueImp *typeStringForValue(ValueImp *v)
{
- const char *s = 0L;
- Reference ref = expr->evaluateReference(exec);
- KJS_CHECKEXCEPTIONVALUE
- ValueImp *b = ref.baseIfMutable();
- if (b && b->isNull())
- return jsString("undefined");
- ValueImp *v = ref.getValue(exec);
- switch (v->type())
- {
+ switch (v->type()) {
case UndefinedType:
- s = "undefined";
- break;
+ return jsString("undefined");
case NullType:
- s = "object";
- break;
+ return jsString("object");
case BooleanType:
- s = "boolean";
- break;
+ return jsString("boolean");
case NumberType:
- s = "number";
- break;
+ return jsString("number");
case StringType:
- s = "string";
- break;
+ return jsString("string");
default:
- if (v->isObject() && static_cast<ObjectImp*>(v)->implementsCall())
- s = "function";
- else
- s = "object";
- break;
+ if (v->isObject() && static_cast<ObjectImp*>(v)->implementsCall())
+ return jsString("function");
+ else
+ return jsString("object");
+ }
+}
+
+ValueImp *TypeOfResolveNode::evaluate(ExecState *exec)
+{
+ const ScopeChain& chain = exec->context().imp()->scopeChain();
+ ScopeChainIterator iter = chain.begin();
+ ScopeChainIterator end = chain.end();
+
+ // we must always have something in the scope chain
+ assert(iter != end);
+
+ PropertySlot slot;
+ ObjectImp *base;
+ do {
+ base = *iter;
+ if (base->getPropertySlot(exec, m_ident, slot)) {
+ ValueImp *v = slot.getValue(exec, m_ident);
+ return typeStringForValue(v);
}
- return jsString(s);
+ ++iter;
+ } while (iter != end);
+
+ return jsString("undefined");
}
-// ------------------------------ PrefixNode -----------------------------------
+// ------------------------------ TypeOfValueNode -----------------------------------
+
+ValueImp *TypeOfValueNode::evaluate(ExecState *exec)
+{
+ ValueImp *v = m_expr->evaluate(exec);
+ KJS_CHECKEXCEPTIONVALUE
+
+ return typeStringForValue(v);
+}
// ECMA 11.4.4 and 11.4.5
-ValueImp *PrefixNode::evaluate(ExecState *exec)
+
+// ------------------------------ PrefixResolveNode ----------------------------------
+
+ValueImp *PrefixResolveNode::evaluate(ExecState *exec)
+{
+ const ScopeChain& chain = exec->context().imp()->scopeChain();
+ ScopeChainIterator iter = chain.begin();
+ ScopeChainIterator end = chain.end();
+
+ // we must always have something in the scope chain
+ assert(iter != end);
+
+ PropertySlot slot;
+ ObjectImp *base;
+ do {
+ base = *iter;
+ if (base->getPropertySlot(exec, m_ident, slot)) {
+ ValueImp *v = slot.getValue(exec, m_ident);
+
+ bool knownToBeInteger;
+ double n = v->toNumber(exec, knownToBeInteger);
+
+ double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
+ ValueImp *n2 = jsNumber(newValue, knownToBeInteger);
+ base->put(exec, m_ident, n2);
+
+ return n2;
+ }
+
+ ++iter;
+ } while (iter != end);
+
+ return undefinedVariableError(exec, m_ident);
+}
+
+// ------------------------------ PrefixBracketNode ----------------------------------
+
+ValueImp *PrefixBracketNode::evaluate(ExecState *exec)
{
- Reference ref = expr->evaluateReference(exec);
+ ValueImp *baseValue = m_base->evaluate(exec);
+ KJS_CHECKEXCEPTIONVALUE
+ ValueImp *subscript = m_subscript->evaluate(exec);
+ KJS_CHECKEXCEPTIONVALUE
+
+ ObjectImp *base = baseValue->toObject(exec);
+
+ uint32_t propertyIndex;
+ if (subscript->getUInt32(propertyIndex)) {
+ PropertySlot slot;
+ ValueImp *v = base->getPropertySlot(exec, propertyIndex, slot) ? slot.getValue(exec, propertyIndex) : Undefined();
+ KJS_CHECKEXCEPTIONVALUE
+
+ bool knownToBeInteger;
+ double n = v->toNumber(exec, knownToBeInteger);
+
+ double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
+ ValueImp *n2 = jsNumber(newValue, knownToBeInteger);
+ base->put(exec, propertyIndex, n2);
+
+ return n2;
+ }
+
+ Identifier propertyName(subscript->toString(exec));
+ PropertySlot slot;
+ ValueImp *v = base->getPropertySlot(exec, propertyName, slot) ? slot.getValue(exec, propertyName) : Undefined();
KJS_CHECKEXCEPTIONVALUE
- ValueImp *v = ref.getValue(exec);
bool knownToBeInteger;
double n = v->toNumber(exec, knownToBeInteger);
-
- double newValue = (oper == OpPlusPlus) ? n + 1 : n - 1;
+
+ double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
ValueImp *n2 = jsNumber(newValue, knownToBeInteger);
+ base->put(exec, propertyName, n2);
+
+ return n2;
+}
+
+// ------------------------------ PrefixDotNode ----------------------------------
+
+ValueImp *PrefixDotNode::evaluate(ExecState *exec)
+{
+ ValueImp *baseValue = m_base->evaluate(exec);
+ KJS_CHECKEXCEPTIONVALUE
+ ObjectImp *base = baseValue->toObject(exec);
+
+ PropertySlot slot;
+ ValueImp *v = base->getPropertySlot(exec, m_ident, slot) ? slot.getValue(exec, m_ident) : Undefined();
+ KJS_CHECKEXCEPTIONVALUE
- ref.putValue(exec, n2);
+ bool knownToBeInteger;
+ double n = v->toNumber(exec, knownToBeInteger);
+
+ double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
+ ValueImp *n2 = jsNumber(newValue, knownToBeInteger);
+ base->put(exec, m_ident, n2);
return n2;
}
@@ -1622,7 +1791,7 @@
Completion c;
ReferenceList propList;
- if ( varDecl ) {
+ if (varDecl) {
varDecl->evaluate(exec);
KJS_CHECKEXCEPTION
}
@@ -1645,14 +1814,57 @@
while (propIt != propList.end()) {
Identifier name = propIt->getPropertyName(exec);
- if (!v->hasProperty(exec,name)) {
+ if (!v->hasProperty(exec, name)) {
propIt++;
continue;
}
- Reference ref = lexpr->evaluateReference(exec);
+ ValueImp *str = jsString(name.ustring());
+
+ if (lexpr->isResolveNode()) {
+ const Identifier &ident = static_cast<ResolveNode *>(lexpr.get())->identifier();
+
+ const ScopeChain& chain = exec->context().imp()->scopeChain();
+ ScopeChainIterator iter = chain.begin();
+ ScopeChainIterator end = chain.end();
+
+ // we must always have something in the scope chain
+ assert(iter != end);
+
+ PropertySlot slot;
+ ObjectImp *o;
+ do {
+ o = *iter;
+ if (o->getPropertySlot(exec, ident, slot))
+ o->put(exec, ident, str);
+
+ ++iter;
+ } while (iter != end);
+
+ if (iter == end)
+ o->put(exec, ident, str);
+ } else if (lexpr->isDotAccessorNode()) {
+ const Identifier& ident = static_cast<DotAccessorNode *>(lexpr.get())->identifier();
+ ValueImp *v = static_cast<DotAccessorNode *>(lexpr.get())->base()->evaluate(exec);
+ KJS_CHECKEXCEPTION
+ ObjectImp *o = v->toObject(exec);
+
+ o->put(exec, ident, str);
+ } else {
+ assert(lexpr->isBracketAccessorNode());
+ ValueImp *v = static_cast<BracketAccessorNode *>(lexpr.get())->base()->evaluate(exec);
+ KJS_CHECKEXCEPTION
+ ValueImp *v2 = static_cast<BracketAccessorNode *>(lexpr.get())->subscript()->evaluate(exec);
+ KJS_CHECKEXCEPTION
+ ObjectImp *o = v->toObject(exec);
+
+ uint32_t i;
+ if (v2->getUInt32(i))
+ o->put(exec, i, str);
+ o->put(exec, Identifier(v2->toString(exec)), str);
+ }
+
KJS_CHECKEXCEPTION
- ref.putValue(exec, String(name.ustring()));
exec->context().imp()->seenLabels()->pushIteration();
c = statement->execute(exec);
1.35 +96 -19 JavaScriptCore/kjs/nodes.h
Index: nodes.h
===================================================================
RCS file: /cvs/root/JavaScriptCore/kjs/nodes.h,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- nodes.h 21 Sep 2005 05:53:05 -0000 1.34
+++ nodes.h 24 Sep 2005 22:34:13 -0000 1.35
@@ -85,7 +85,6 @@
KJS_FAST_ALLOCATED;
virtual ValueImp *evaluate(ExecState *exec) = 0;
- virtual Reference evaluateReference(ExecState *exec);
UString toString() const;
virtual void streamTo(SourceStream &s) const = 0;
virtual void processVarDecls(ExecState */*exec*/) {}
@@ -199,7 +198,6 @@
public:
ResolveNode(const Identifier &s) : ident(s) { }
ValueImp *evaluate(ExecState *exec);
- virtual Reference evaluateReference(ExecState *exec);
virtual void streamTo(SourceStream &s) const;
virtual bool isLocation() const { return true; }
@@ -214,7 +212,6 @@
public:
GroupNode(Node *g) : group(g) { }
virtual ValueImp *evaluate(ExecState *exec);
- virtual Reference evaluateReference(ExecState *exec);
virtual void streamTo(SourceStream &s) const;
virtual bool isGroupNode() const { return true; }
@@ -302,7 +299,6 @@
public:
BracketAccessorNode(Node *e1, Node *e2) : expr1(e1), expr2(e2) {}
ValueImp *evaluate(ExecState *exec);
- virtual Reference evaluateReference(ExecState *exec);
virtual void streamTo(SourceStream &s) const;
virtual bool isLocation() const { return true; }
@@ -319,7 +315,6 @@
public:
DotAccessorNode(Node *e, const Identifier &s) : expr(e), ident(s) { }
ValueImp *evaluate(ExecState *exec);
- virtual Reference evaluateReference(ExecState *exec);
virtual void streamTo(SourceStream &s) const;
virtual bool isLocation() const { return true; }
@@ -424,23 +419,74 @@
virtual void streamTo(SourceStream &s) const;
};
- class PostfixNode : public Node {
+ class PostfixResolveNode : public Node {
public:
- PostfixNode(Node *e, Operator o) : expr(e), oper(o) {}
+ PostfixResolveNode(const Identifier& i, Operator o) : m_ident(i), m_oper(o) {}
ValueImp *evaluate(ExecState *exec);
virtual void streamTo(SourceStream &s) const;
private:
- KXMLCore::SharedPtr<Node> expr;
- Operator oper;
+ Identifier m_ident;
+ Operator m_oper;
};
- class DeleteNode : public Node {
+ class PostfixBracketNode : public Node {
public:
- DeleteNode(Node *e) : expr(e) {}
+ PostfixBracketNode(Node *b, Node *s, Operator o) : m_base(b), m_subscript(s), m_oper(o) {}
ValueImp *evaluate(ExecState *exec);
virtual void streamTo(SourceStream &s) const;
private:
- KXMLCore::SharedPtr<Node> expr;
+ KXMLCore::SharedPtr<Node> m_base;
+ KXMLCore::SharedPtr<Node> m_subscript;
+ Operator m_oper;
+ };
+
+ class PostfixDotNode : public Node {
+ public:
+ PostfixDotNode(Node *b, const Identifier& i, Operator o) : m_base(b), m_ident(i), m_oper(o) {}
+ ValueImp *evaluate(ExecState *exec);
+ virtual void streamTo(SourceStream &s) const;
+ private:
+ KXMLCore::SharedPtr<Node> m_base;
+ Identifier m_ident;
+ Operator m_oper;
+ };
+
+ class DeleteResolveNode : public Node {
+ public:
+ DeleteResolveNode(const Identifier& i) : m_ident(i) {}
+ ValueImp *evaluate(ExecState *exec);
+ virtual void streamTo(SourceStream &s) const;
+ private:
+ Identifier m_ident;
+ };
+
+ class DeleteBracketNode : public Node {
+ public:
+ DeleteBracketNode(Node *base, Node *subscript) : m_base(base), m_subscript(subscript) {}
+ ValueImp *evaluate(ExecState *exec);
+ virtual void streamTo(SourceStream &s) const;
+ private:
+ KXMLCore::SharedPtr<Node> m_base;
+ KXMLCore::SharedPtr<Node> m_subscript;
+ };
+
+ class DeleteDotNode : public Node {
+ public:
+ DeleteDotNode(Node *base, const Identifier& i) : m_base(base), m_ident(i) {}
+ ValueImp *evaluate(ExecState *exec);
+ virtual void streamTo(SourceStream &s) const;
+ private:
+ KXMLCore::SharedPtr<Node> m_base;
+ Identifier m_ident;
+ };
+
+ class DeleteValueNode : public Node {
+ public:
+ DeleteValueNode(Node *e) : m_expr(e) {}
+ ValueImp *evaluate(ExecState *exec);
+ virtual void streamTo(SourceStream &s) const;
+ private:
+ KXMLCore::SharedPtr<Node> m_expr;
};
class VoidNode : public Node {
@@ -452,23 +498,54 @@
KXMLCore::SharedPtr<Node> expr;
};
- class TypeOfNode : public Node {
+ class TypeOfResolveNode : public Node {
public:
- TypeOfNode(Node *e) : expr(e) {}
+ TypeOfResolveNode(const Identifier& i) : m_ident(i) {}
ValueImp *evaluate(ExecState *exec);
virtual void streamTo(SourceStream &s) const;
private:
- KXMLCore::SharedPtr<Node> expr;
+ Identifier m_ident;
};
- class PrefixNode : public Node {
+ class TypeOfValueNode : public Node {
public:
- PrefixNode(Operator o, Node *e) : oper(o), expr(e) {}
+ TypeOfValueNode(Node *e) : m_expr(e) {}
ValueImp *evaluate(ExecState *exec);
virtual void streamTo(SourceStream &s) const;
private:
- Operator oper;
- KXMLCore::SharedPtr<Node> expr;
+ KXMLCore::SharedPtr<Node> m_expr;
+ };
+
+ class PrefixResolveNode : public Node {
+ public:
+ PrefixResolveNode(const Identifier& i, Operator o) : m_ident(i), m_oper(o) {}
+ ValueImp *evaluate(ExecState *exec);
+ virtual void streamTo(SourceStream &s) const;
+ private:
+ Identifier m_ident;
+ Operator m_oper;
+ };
+
+ class PrefixBracketNode : public Node {
+ public:
+ PrefixBracketNode(Node *b, Node *s, Operator o) : m_base(b), m_subscript(s), m_oper(o) {}
+ ValueImp *evaluate(ExecState *exec);
+ virtual void streamTo(SourceStream &s) const;
+ private:
+ KXMLCore::SharedPtr<Node> m_base;
+ KXMLCore::SharedPtr<Node> m_subscript;
+ Operator m_oper;
+ };
+
+ class PrefixDotNode : public Node {
+ public:
+ PrefixDotNode(Node *b, const Identifier& i, Operator o) : m_base(b), m_ident(i), m_oper(o) {}
+ ValueImp *evaluate(ExecState *exec);
+ virtual void streamTo(SourceStream &s) const;
+ private:
+ KXMLCore::SharedPtr<Node> m_base;
+ Identifier m_ident;
+ Operator m_oper;
};
class UnaryPlusNode : public Node {
1.17 +69 -9 JavaScriptCore/kjs/nodes2string.cpp
Index: nodes2string.cpp
===================================================================
RCS file: /cvs/root/JavaScriptCore/kjs/nodes2string.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- nodes2string.cpp 30 Aug 2005 23:56:14 -0000 1.16
+++ nodes2string.cpp 24 Sep 2005 22:34:14 -0000 1.17
@@ -228,18 +228,51 @@
s << "(" << base << "." << ident << ")" << args;
}
-void PostfixNode::streamTo(SourceStream &s) const
+void PostfixResolveNode::streamTo(SourceStream &s) const
{
- s << expr;
- if (oper == OpPlusPlus)
+ s << m_ident;
+ if (m_oper == OpPlusPlus)
+ s << "++";
+ else
+ s << "--";
+}
+
+void PostfixBracketNode::streamTo(SourceStream &s) const
+{
+ s << m_base << "[" << m_subscript << "]";
+ if (m_oper == OpPlusPlus)
s << "++";
else
s << "--";
}
-void DeleteNode::streamTo(SourceStream &s) const
+void PostfixDotNode::streamTo(SourceStream &s) const
{
- s << "delete " << expr;
+ s << m_base << "." << m_ident;
+ if (m_oper == OpPlusPlus)
+ s << "++";
+ else
+ s << "--";
+}
+
+void DeleteResolveNode::streamTo(SourceStream &s) const
+{
+ s << "delete " << m_ident;
+}
+
+void DeleteBracketNode::streamTo(SourceStream &s) const
+{
+ s << "delete " << m_base << "[" << m_subscript << "]";
+}
+
+void DeleteDotNode::streamTo(SourceStream &s) const
+{
+ s << "delete " << m_base << "." << m_ident;
+}
+
+void DeleteValueNode::streamTo(SourceStream &s) const
+{
+ s << "delete " << m_expr;
}
void VoidNode::streamTo(SourceStream &s) const
@@ -247,14 +280,41 @@
s << "void " << expr;
}
-void TypeOfNode::streamTo(SourceStream &s) const
+void TypeOfValueNode::streamTo(SourceStream &s) const
+{
+ s << "typeof " << m_expr;
+}
+
+void TypeOfResolveNode::streamTo(SourceStream &s) const
+{
+ s << "typeof " << m_ident;
+}
+
+void PrefixResolveNode::streamTo(SourceStream &s) const
+{
+ if (m_oper == OpPlusPlus)
+ s << "++";
+ else
+ s << "--";
+ s << m_ident;
+}
+
+void PrefixBracketNode::streamTo(SourceStream &s) const
{
- s << "typeof " << expr;
+ if (m_oper == OpPlusPlus)
+ s << "++";
+ else
+ s << "--";
+ s << m_base << "[" << m_subscript << "]";
}
-void PrefixNode::streamTo(SourceStream &s) const
+void PrefixDotNode::streamTo(SourceStream &s) const
{
- s << expr << (oper == OpPlusPlus ? "++" : "--");
+ if (m_oper == OpPlusPlus)
+ s << "++";
+ else
+ s << "--";
+ s << m_base << "." << m_ident;
}
void UnaryPlusNode::streamTo(SourceStream &s) const
1.15 +0 -70 JavaScriptCore/kjs/reference.cpp
Index: reference.cpp
===================================================================
RCS file: /cvs/root/JavaScriptCore/kjs/reference.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- reference.cpp 16 Aug 2005 00:47:26 -0000 1.14
+++ reference.cpp 24 Sep 2005 22:34:14 -0000 1.15
@@ -29,7 +29,6 @@
Reference::Reference(ObjectImp *b, const Identifier& p)
: base(b),
- baseIsValue(false),
propertyNameIsNumber(false),
prop(p)
{
@@ -38,51 +37,12 @@
Reference::Reference(ObjectImp *b, unsigned p)
: base(b),
propertyNameAsNumber(p),
- baseIsValue(false),
propertyNameIsNumber(true)
{
}
-Reference::Reference(const Identifier& p)
- : base(jsNull()),
- baseIsValue(false),
- propertyNameIsNumber(false),
- prop(p)
-{
-}
-
-Reference::Reference(unsigned p)
- : base(jsNull()),
- propertyNameAsNumber(p),
- baseIsValue(false),
- propertyNameIsNumber(true)
-{
-}
-
-Reference Reference::makeValueReference(ValueImp *v)
-{
- Reference valueRef;
- valueRef.base = v;
- valueRef.baseIsValue = true;
- return valueRef;
-}
-
-ValueImp *Reference::getBase(ExecState *exec) const
-{
- if (baseIsValue)
- return throwError(exec, ReferenceError, "Invalid reference base");
- return base;
-}
-
Identifier Reference::getPropertyName(ExecState *exec) const
{
- if (baseIsValue) {
- // the spec wants a runtime error here. But getValue() and putValue()
- // will catch this case on their own earlier. When returning a Null
- // string we should be on the safe side.
- return Identifier();
- }
-
if (propertyNameIsNumber && prop.isNull())
prop = Identifier::from(propertyNameAsNumber);
return prop;
@@ -90,9 +50,6 @@
ValueImp *Reference::getValue(ExecState *exec) const
{
- if (baseIsValue)
- return base;
-
ValueImp *o = base;
if (!o || !o->isObject()) {
if (!o || o->isNull())
@@ -105,35 +62,8 @@
return static_cast<ObjectImp*>(o)->get(exec, prop);
}
-void Reference::putValue(ExecState *exec, ValueImp *w)
-{
- if (baseIsValue) {
- throwError(exec, ReferenceError);
- return;
- }
-
-#ifdef KJS_VERBOSE
- printInfo(exec,(UString("setting property ")+getPropertyName(exec).ustring()).cstring().c_str(),w);
-#endif
-
- ValueImp *o = base;
- Type t = o ? o->type() : NullType;
-
- if (t == NullType)
- o = exec->lexicalInterpreter()->globalObject();
-
- if (propertyNameIsNumber)
- return static_cast<ObjectImp*>(o)->put(exec, propertyNameAsNumber, w);
- return static_cast<ObjectImp*>(o)->put(exec, prop, w);
-}
-
bool Reference::deleteValue(ExecState *exec)
{
- if (baseIsValue) {
- throwError(exec, ReferenceError);
- return false;
- }
-
ValueImp *o = base;
Type t = o ? o->type() : NullType;
1.14 +0 -15 JavaScriptCore/kjs/reference.h
Index: reference.h
===================================================================
RCS file: /cvs/root/JavaScriptCore/kjs/reference.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- reference.h 19 Sep 2005 06:57:28 -0000 1.13
+++ reference.h 24 Sep 2005 22:34:14 -0000 1.14
@@ -36,19 +36,8 @@
public:
Reference(ObjectImp *b, const Identifier& p);
Reference(ObjectImp *b, unsigned p);
- Reference(const Identifier& p);
- Reference(unsigned p);
- static Reference makeValueReference(ValueImp *);
/**
- * Performs the GetBase type conversion operation on this value (ECMA 8.7)
- *
- * Since references are supposed to have an Object or null as their base,
- * this method is guaranteed to return either Null() or an Object value.
- */
- ValueImp *getBase(ExecState *exec) const;
-
- /**
* Performs the GetPropertyName type conversion operation on this value
* (ECMA 8.7)
*/
@@ -64,11 +53,8 @@
* Performs the PutValue type conversion operation on this value
* (ECMA 8.7.1)
*/
- void putValue(ExecState *exec, ValueImp *);
bool deleteValue(ExecState *exec);
- ValueImp *baseIfMutable() const { return baseIsValue ? 0 : base; }
-
protected:
ValueImp *base;
@@ -76,7 +62,6 @@
Reference() { }
unsigned propertyNameAsNumber;
- bool baseIsValue;
bool propertyNameIsNumber;
mutable Identifier prop;
};
1.44 +371 -250 JavaScriptCore/tests/mozilla/expected.html
Index: expected.html
===================================================================
RCS file: /cvs/root/JavaScriptCore/tests/mozilla/expected.html,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- expected.html 7 Sep 2005 22:08:55 -0000 1.43
+++ expected.html 24 Sep 2005 22:34:15 -0000 1.44
@@ -7,11 +7,11 @@
<p class='results_summary'>
Test List: All tests<br>
Skip List: (none)<br>
-1116 test(s) selected, 1111 test(s) completed, 96 failures reported (8.64% failed)<br>
-Engine command line: /Volumes/Home/ggaren/symroots/Development/testkjs <br>
-OS type: Darwin darin-adler-portable.apple.com 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: 5 minutes, 30 seconds.<br>
-Tests completed on Wed Sep 7 14:49:22 2005.<br><br>
+1116 test(s) selected, 1111 test(s) completed, 94 failures reported (8.46% failed)<br>
+Engine command line: /Users/mjs/Work/symroots/Development/testkjs <br>
+OS type: Darwin maciej-stachowiaks-powerbook-g4-17.local 8.3.0 Darwin Kernel Version 8.3.0: Fri Sep 16 11:56:43 PDT 2005; root:xnu-792.6.17.obj~1/RELEASE_PPC Power Macintosh powerpc<br>
+Testcase execution time: 5 minutes, 56 seconds.<br>
+Tests completed on Thu Sep 22 23:37:42 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>
@@ -89,6 +89,7 @@
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
--> RegExp/unicode-001.js new RegExp( pattern, flags )<br>
+KJS: pcre_compile() failed with 'PCRE does not support \L, \l, \N, \U, or \u'<br>
Exception, line 34: TypeError: Null value<br>
</tt><br>
<a name='failure8'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Date/15.9.5.7.js'>ecma_3/Date/15.9.5.7.js</a> failed</b> <br>
@@ -104,18 +105,19 @@
--> (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>
---> (Wed Sep 07 2005 14:48:42 GMT-0700).toLocaleTimeString() = 2:48:42 PM PDT FAILED! expected: 14:48:42<br>
---> (Wed Sep 07 2005 22:48:42 GMT-0700).toLocaleTimeString() = 10:48:42 PM PDT FAILED! expected: 22:48:42<br>
+--> (Thu Sep 22 2005 23:37:00 GMT-0700).toLocaleTimeString() = 11:37:00 PM PDT FAILED! expected: 23:37:00<br>
+--> (Fri Sep 23 2005 07:37:00 GMT-0700).toLocaleTimeString() = 7:37:00 AM PDT FAILED! expected: 07:37:00<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>
</tt><br>
-<a name='failure9'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Function/regress-193555.js'>ecma_3/Function/regress-193555.js</a> failed</b> <br>
+<a name='failure9'></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='#failure8'>Previous Failure</a> | <a href='#failure10'>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 65: ReferenceError: Can't find variable: g<br>
+--> STATUS: Function Expression Statements basic test.<br>
+Exception, line 35: ReferenceError: Can't find variable: f<br>
</tt><br>
<a name='failure10'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Function/regress-58274.js'>ecma_3/Function/regress-58274.js</a> failed</b> <br>
[ <a href='#failure9'>Previous Failure</a> | <a href='#failure11'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -125,13 +127,12 @@
yylex: ERROR.<br>
Exception, line 83: SyntaxError: Parse error<br>
</tt><br>
-<a name='failure11'></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 name='failure11'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Function/regress-193555.js'>ecma_3/Function/regress-193555.js</a> failed</b> <br>
[ <a href='#failure10'>Previous Failure</a> | <a href='#failure12'>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>
---> STATUS: Function Expression Statements basic test.<br>
-Exception, line 35: ReferenceError: Can't find variable: f<br>
+Exception, line 65: ReferenceError: Can't find variable: g<br>
</tt><br>
<a name='failure12'></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='#failure11'>Previous Failure</a> | <a href='#failure13'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -272,27 +273,6 @@
--> FAILED!: [reported from test()] Expect: ["ab", , ]<br>
--> FAILED!: [reported from test()] Actual: ["ab", "b"]<br>
--> FAILED!: [reported from test()] <br>
---> FAILED!: [reported from test()] Section 402 of test -<br>
---> FAILED!: [reported from test()] regexp = /^([^,]{1,3},){3}d/i<br>
---> FAILED!: [reported from test()] string = 'aaa,b,c,d'<br>
---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br>
---> FAILED!: [reported from test()] Expect: ["aaa,b,c,d", "c,"]<br>
---> FAILED!: [reported from test()] Actual: null<br>
---> FAILED!: [reported from test()] <br>
---> FAILED!: [reported from test()] Section 403 of test -<br>
---> FAILED!: [reported from test()] regexp = /^([^,]{1,3},){3,}d/<br>
---> FAILED!: [reported from test()] string = 'aaa,b,c,d'<br>
---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br>
---> FAILED!: [reported from test()] Expect: ["aaa,b,c,d", "c,"]<br>
---> FAILED!: [reported from test()] Actual: null<br>
---> FAILED!: [reported from test()] <br>
---> FAILED!: [reported from test()] Section 404 of test -<br>
---> FAILED!: [reported from test()] regexp = /^([^,]{1,3},){0,3}d/<br>
---> FAILED!: [reported from test()] string = 'aaa,b,c,d'<br>
---> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br>
---> FAILED!: [reported from test()] Expect: ["aaa,b,c,d", "c,"]<br>
---> FAILED!: [reported from test()] Actual: null<br>
---> FAILED!: [reported from test()] <br>
--> FAILED!: [reported from test()] Section 412 of test -<br>
--> FAILED!: [reported from test()] regexp = /^(a(b)?)+$/<br>
--> FAILED!: [reported from test()] string = 'aba'<br>
@@ -327,8 +307,168 @@
--> FAILED!: [reported from test()] Actual: null<br>
--> FAILED!: [reported from test()] <br>
</tt><br>
-<a name='failure18'></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 name='failure18'></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='#failure17'>Previous Failure</a> | <a href='#failure19'>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>
+--> FAILED!: [reported from test()] regexp = /[\S]+/<br>
+--> FAILED!: [reported from test()] string = '<br>
+--> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br>
+--> FAILED!: [reported from test()] Expect: ["<br>
+--> FAILED!: [reported from test()] Actual: null<br>
+--> FAILED!: [reported from test()] <br>
+--> FAILED!: [reported from test()] Section 4 of test -<br>
+--> FAILED!: [reported from test()] regexp = /[\S]+/<br>
+--> FAILED!: [reported from test()] string = '<br>
+--> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br>
+--> FAILED!: [reported from test()] Expect: ["<br>
+--> FAILED!: [reported from test()] Actual: null<br>
+--> FAILED!: [reported from test()] <br>
+</tt><br>
+<a name='failure19'></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='#failure18'>Previous Failure</a> | <a href='#failure20'>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>
+--> FAILED!: [reported from test()] regexp = /\d$/gm<br>
+--> FAILED!: [reported from test()] string = 'aaa\n789\r\nccc\r\n345'<br>
+--> FAILED!: [reported from test()] ERROR !!! match arrays have different lengths:<br>
+--> FAILED!: [reported from test()] Expect: ["9", "5"]<br>
+--> FAILED!: [reported from test()] Actual: ["5"]<br>
+--> FAILED!: [reported from test()] <br>
+--> FAILED!: [reported from test()] Section 4 of test -<br>
+--> FAILED!: [reported from test()] regexp = /\d$/gm<br>
+--> FAILED!: [reported from test()] string = 'aaa\n789\r\nccc\r\nddd'<br>
+--> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br>
+--> FAILED!: [reported from test()] Expect: ["9"]<br>
+--> FAILED!: [reported from test()] Actual: null<br>
+--> FAILED!: [reported from test()] <br>
+</tt><br>
+<a name='failure20'></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='#failure19'>Previous Failure</a> | <a href='#failure21'>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>
+--> FAILED!: regexp = /[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*(?:(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: "]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: "]*)*")[^()<>@,;:".\\\[\]-ÿ<br>
+--> FAILED!: -]*(?:(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)|"[^\\-ÿ<br>
+--> FAILED!: "]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: "]*)*")[^()<>@,;:".\\\[\]-ÿ<br>
+--> FAILED!: -]*)*<[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*(?:@[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \[\]]|\\[^-ÿ])*\])[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \[\]]|\\[^-ÿ])*\])[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*)*(?:,[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*@[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \[\]]|\\[^-ÿ])*\])[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \[\]]|\\[^-ÿ])*\])[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*)*)*:[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*)?(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: "]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: "]*)*")[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*@[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \[\]]|\\[^-ÿ])*\])[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \[\]]|\\[^-ÿ])*\])[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*)*>|(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: "]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: "]*)*")[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*@[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \[\]]|\\[^-ÿ])*\])[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \[\]]|\\[^-ÿ])*\])[ ]*(?:\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:(?:\\[^-ÿ]|\([^\\-ÿ<br>
+--> FAILED!: ()]*(?:\\[^-ÿ][^\\-ÿ<br>
+--> FAILED!: ()]*)*\))[^\\-ÿ<br>
+--> FAILED!: ()]*)*\)[ ]*)*)*)/g<br>
+--> FAILED!: string = 'Jeffy<"That Tall Guy"@ora.com (this address is no longer acti\ve)>'<br>
+--> FAILED!: ERROR !!! regexp FAILED to match anything !!!<br>
+--> FAILED!: Expect: ["Jeffy<"That Tall Guy"@ora.com (this address is no longer active)>"]<br>
+--> FAILED!: Actual: null<br>
+--> FAILED!: <br>
+</tt><br>
+<a name='failure21'></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='#failure20'>Previous Failure</a> | <a href='#failure22'>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>
@@ -430,8 +570,8 @@
--> FAILED!: [reported from test()] Actual: null<br>
--> FAILED!: [reported from test()] <br>
</tt><br>
-<a name='failure19'></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='#failure18'>Previous Failure</a> | <a href='#failure20'>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/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='#failure21'>Previous Failure</a> | <a href='#failure23'>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>
@@ -492,8 +632,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='failure20'></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='#failure19'>Previous Failure</a> | <a href='#failure21'>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/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='#failure22'>Previous Failure</a> | <a href='#failure24'>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>
@@ -731,47 +871,71 @@
yylex: ERROR.<br>
Exception, line 118: SyntaxError: Parse error<br>
</tt><br>
-<a name='failure29'></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 name='failure29'></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='#failure28'>Previous Failure</a> | <a href='#failure30'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
-<tt>Expected exit code 3, got 0<br>
+<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
---> function-001.js functions not separated by semicolons are errors in version 120 and higher<br>
---> eval("function f(){}function g(){}") = undefined FAILED! expected: error<br>
-OK.<br>
+--> JS1_2 Object.toString()<br>
+Exception, line 104: TypeError: Object /^\{(.*)\}$/ (result of expression ^\{(.*)\}$) does not allow calls.<br>
</tt><br>
-<a name='failure30'></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 name='failure30'></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='#failure29'>Previous Failure</a> | <a href='#failure31'>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>
+--> aString.concat([1,2,3]) = test string1,2,3 FAILED! expected: test string[1, 2, 3]<br>
+--> '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='failure31'></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='#failure30'>Previous Failure</a> | <a href='#failure32'>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='failure32'></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='#failure31'>Previous Failure</a> | <a href='#failure33'>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>
--> f.arity = undefined FAILED! expected: 3<br>
--> (new Function()).name = undefined FAILED! expected: anonymous<br>
} FAILED! expected: <br>
</tt><br>
-<a name='failure31'></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='#failure30'>Previous Failure</a> | <a href='#failure32'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure33'></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='#failure32'>Previous Failure</a> | <a href='#failure34'>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='failure32'></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='#failure31'>Previous Failure</a> | <a href='#failure33'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure34'></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='#failure33'>Previous Failure</a> | <a href='#failure35'>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='failure35'></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='#failure34'>Previous Failure</a> | <a href='#failure36'>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>
+--> function-001.js functions not separated by semicolons are errors in version 120 and higher<br>
+--> eval("function f(){}function g(){}") = undefined FAILED! expected: error<br>
+OK.<br>
+</tt><br>
+<a name='failure36'></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='#failure35'>Previous Failure</a> | <a href='#failure37'>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='failure33'></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='#failure32'>Previous Failure</a> | <a href='#failure34'>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='failure34'></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='#failure33'>Previous Failure</a> | <a href='#failure35'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure37'></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='#failure36'>Previous Failure</a> | <a href='#failure38'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt><br>
Failure messages were:<br>
} FAILED! expected: <br>
@@ -780,8 +944,8 @@
} FAILED! expected: <br>
} FAILED! expected: <br>
</tt><br>
-<a name='failure35'></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='#failure34'>Previous Failure</a> | <a href='#failure36'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure38'></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='#failure37'>Previous Failure</a> | <a href='#failure39'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt><br>
Failure messages were:<br>
} FAILED! expected: <br>
@@ -794,54 +958,25 @@
} FAILED! expected: <br>
} FAILED! expected: <br>
</tt><br>
-<a name='failure36'></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='#failure35'>Previous Failure</a> | <a href='#failure37'>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='failure37'></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='#failure36'>Previous Failure</a> | <a href='#failure38'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure39'></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='#failure38'>Previous Failure</a> | <a href='#failure40'>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='failure38'></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='#failure37'>Previous Failure</a> | <a href='#failure39'>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='failure39'></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='#failure38'>Previous Failure</a> | <a href='#failure40'>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>
---> Executing script: compile.js<br>
---> As described in Netscape doc "Whats new in JavaScript 1.2" RegExp: compile<br>
-Exception, line 44: TypeError: Value undefined (result of expression regularExpression.%s) is not object.<br>
-</tt><br>
-<a name='failure40'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/endLine.js'>js1_2/regexp/endLine.js</a> failed</b> <br>
+<a name='failure40'></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='#failure39'>Previous Failure</a> | <a href='#failure41'>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='failure41'></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='#failure40'>Previous Failure</a> | <a href='#failure42'>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>
--> RegExp.input = 'abcd12357efg'; /[h-z]+/.exec() = un FAILED! expected: null<br>
--> RegExp.input = 'abcd12357efg'; /\d+/.test() = false FAILED! expected: true<br>
--> 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='failure42'></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='#failure41'>Previous Failure</a> | <a href='#failure43'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure41'></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='#failure40'>Previous Failure</a> | <a href='#failure42'>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>
@@ -850,15 +985,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='failure43'></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='#failure42'>Previous Failure</a> | <a href='#failure44'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure42'></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='#failure41'>Previous Failure</a> | <a href='#failure43'>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='failure44'></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='#failure43'>Previous Failure</a> | <a href='#failure45'>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/regexp/RegExp_lastMatch.js'>js1_2/regexp/RegExp_lastMatch.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>
--> 'foo'.match(/foo/); RegExp.lastMatch = undefined FAILED! expected: foo<br>
@@ -868,8 +1003,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='failure45'></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='#failure44'>Previous Failure</a> | <a href='#failure46'>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/regexp/RegExp_lastMatch_as_array.js'>js1_2/regexp/RegExp_lastMatch_as_array.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>
--> 'foo'.match(/foo/); RegExp['$&'] = undefined FAILED! expected: foo<br>
@@ -879,8 +1014,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='failure46'></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='#failure45'>Previous Failure</a> | <a href='#failure47'>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/regexp/RegExp_lastParen.js'>js1_2/regexp/RegExp_lastParen.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><br>
Failure messages were:<br>
--> 'abcd'.match(/(abc)d/); RegExp.lastParen = undefined FAILED! expected: abc<br>
@@ -893,8 +1028,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='failure47'></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='#failure46'>Previous Failure</a> | <a href='#failure48'>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/regexp/RegExp_lastParen_as_array.js'>js1_2/regexp/RegExp_lastParen_as_array.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>
--> 'abcd'.match(/(abc)d/); RegExp['$+'] = undefined FAILED! expected: abc<br>
@@ -907,8 +1042,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='failure48'></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='#failure47'>Previous Failure</a> | <a href='#failure49'>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/regexp/RegExp_leftContext.js'>js1_2/regexp/RegExp_leftContext.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>
--> 'abc123xyz'.match(/123/); RegExp.leftContext = undefined FAILED! expected: abc<br>
@@ -919,8 +1054,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='failure49'></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='#failure48'>Previous Failure</a> | <a href='#failure50'>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/regexp/RegExp_leftContext_as_array.js'>js1_2/regexp/RegExp_leftContext_as_array.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><br>
Failure messages were:<br>
--> 'abc123xyz'.match(/123/); RegExp['$`'] = undefined FAILED! expected: abc<br>
@@ -931,8 +1066,8 @@
--> 'xxxx'.match(new RegExp('$')); RegExp['$`'] = undefined FAILED! expected: xxxx<br>
--> 'test'.match(new RegExp('^')); RegExp['$`'] = undefined FAILED! expected: <br>
</tt><br>
-<a name='failure50'></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='#failure49'>Previous Failure</a> | <a href='#failure51'>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/regexp/RegExp_multiline.js'>js1_2/regexp/RegExp_multiline.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>
--> RegExp.multiline = undefined FAILED! expected: false<br>
@@ -942,8 +1077,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='failure51'></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='#failure50'>Previous Failure</a> | <a href='#failure52'>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/regexp/RegExp_multiline_as_array.js'>js1_2/regexp/RegExp_multiline_as_array.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>
--> RegExp['$*'] = undefined FAILED! expected: false<br>
@@ -953,8 +1088,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='failure52'></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='#failure51'>Previous Failure</a> | <a href='#failure53'>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/regexp/RegExp_rightContext.js'>js1_2/regexp/RegExp_rightContext.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>
--> 'abc123xyz'.match(/123/); RegExp.rightContext = undefined FAILED! expected: xyz<br>
@@ -965,8 +1100,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='failure53'></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='#failure52'>Previous Failure</a> | <a href='#failure54'>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/regexp/RegExp_rightContext_as_array.js'>js1_2/regexp/RegExp_rightContext_as_array.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><br>
Failure messages were:<br>
--> 'abc123xyz'.match(/123/); RegExp['$''] = undefined FAILED! expected: xyz<br>
@@ -977,24 +1112,45 @@
--> 'xxxx'.match(new RegExp('$')); RegExp['$''] = undefined FAILED! expected: <br>
--> 'test'.match(new RegExp('^')); RegExp['$''] = undefined FAILED! expected: test<br>
</tt><br>
-<a name='failure54'></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 name='failure53'></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='#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>
+123xyz'.match(new RegExp('^\d+')) = null FAILED! expected: 123<br>
+</tt><br>
+<a name='failure54'></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='#failure53'>Previous Failure</a> | <a href='#failure55'>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>
+--> Executing script: compile.js<br>
+--> 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='failure55'></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='#failure54'>Previous Failure</a> | <a href='#failure56'>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='failure56'></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='#failure55'>Previous Failure</a> | <a href='#failure57'>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='failure55'></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='#failure54'>Previous Failure</a> | <a href='#failure56'>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/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='#failure56'>Previous Failure</a> | <a href='#failure58'>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='failure56'></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='#failure55'>Previous Failure</a> | <a href='#failure57'>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/simple_form.js'>js1_2/regexp/simple_form.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>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
@@ -1002,14 +1158,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='failure57'></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='#failure56'>Previous Failure</a> | <a href='#failure58'>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/special_characters.js'>js1_2/regexp/special_characters.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>
--> 'ab a b'.match(/a{2}/) = null FAILED! expected: a<br>
</tt><br>
-<a name='failure58'></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='#failure57'>Previous Failure</a> | <a href='#failure59'>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/string_split.js'>js1_2/regexp/string_split.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>
--> 'abc'.split(/[a-z]/) = ,,, FAILED! expected: ,,<br>
@@ -1017,22 +1173,6 @@
--> 'abc'.split(new RegExp('[a-z]')) = ,,, FAILED! expected: ,,<br>
--> 'abc'.split(new RegExp('[a-z]')) = ,,, FAILED! expected: ,,<br>
</tt><br>
-<a name='failure59'></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='#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>
---> aString.concat([]) = test string FAILED! expected: test string[]<br>
---> aString.concat([1,2,3]) = test string1,2,3 FAILED! expected: test string[1, 2, 3]<br>
---> '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='failure60'></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='#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>
---> exhaustive String.slice test 1 = false FAILED! expected: true<br>
---> exhaustive String.slice test 2 = false FAILED! expected: true<br>
-</tt><br>
<a name='failure61'></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='#failure60'>Previous Failure</a> | <a href='#failure62'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt><br>
@@ -1047,7 +1187,7 @@
--> 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='failure63'></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 name='failure63'></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='#failure62'>Previous Failure</a> | <a href='#failure64'>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>
@@ -1057,8 +1197,16 @@
--> eval("function f(){}function g(){}") = undefined FAILED! expected: error<br>
OK.<br>
</tt><br>
-<a name='failure64'></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 name='failure64'></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='#failure63'>Previous Failure</a> | <a href='#failure65'>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='failure65'></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='#failure64'>Previous Failure</a> | <a href='#failure66'>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>
@@ -1067,135 +1215,139 @@
--> eval("function f(){}function g(){}") = undefined FAILED! expected: error<br>
OK.<br>
</tt><br>
-<a name='failure65'></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='#failure64'>Previous Failure</a> | <a href='#failure66'>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='failure66'></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 name='failure66'></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='#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>
---> f1.toString() == dec1 = false FAILED! expected: true<br>
+--> StripSpaces(Array.prototype.concat.toString()).substring(0,17) = (InternalFunction FAILED! expected: functionconcat(){<br>
</tt><br>
-<a name='failure67'></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 name='failure67'></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='#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>
---> StripSpaces(Array.prototype.concat.toString()).substring(0,17) = (InternalFunction FAILED! expected: functionconcat(){<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='failure68'></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 name='failure68'></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='#failure67'>Previous Failure</a> | <a href='#failure69'>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='failure69'></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 name='failure69'></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='#failure68'>Previous Failure</a> | <a href='#failure70'>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='failure70'></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 name='failure70'></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='#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>
-Exception, line 42: SyntaxError: Parse error<br>
+Exception, line 248: TypeError: Undefined value<br>
</tt><br>
-<a name='failure71'></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 name='failure71'></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='#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>
-Exception, line 248: TypeError: Undefined value<br>
+--> BUGNUMBER: 50447<br>
+--> STATUS: Test (non-ECMA) Error object properties fileName, lineNumber<br>
+Exception, line 66: TypeError: Undefined value<br>
</tt><br>
-<a name='failure72'></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 name='failure72'></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='#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>
---> BUGNUMBER: 50447<br>
---> STATUS: Test (non-ECMA) Error object properties fileName, lineNumber<br>
-Exception, line 66: TypeError: Undefined value<br>
+Exception, line 33: SyntaxError: Parse error<br>
</tt><br>
-<a name='failure73'></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 name='failure73'></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='#failure72'>Previous Failure</a> | <a href='#failure74'>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>
+Exception, line 29: SyntaxError: Parse error<br>
</tt><br>
-<a name='failure74'></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 name='failure74'></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='#failure73'>Previous Failure</a> | <a href='#failure75'>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>
+Exception, line 48: SyntaxError: Parse error<br>
</tt><br>
-<a name='failure75'></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 name='failure75'></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='#failure74'>Previous Failure</a> | <a href='#failure76'>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>
+Exception, line 48: TypeError: Value undefined (result of expression obj.__defineSetter__) is not object.<br>
</tt><br>
-<a name='failure76'></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 name='failure76'></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='#failure75'>Previous Failure</a> | <a href='#failure77'>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.%s) is not object.<br>
+Exception, line 57: TypeError: Value undefined (result of expression obj.__defineSetter__) is not object.<br>
</tt><br>
-<a name='failure77'></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 name='failure77'></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='#failure76'>Previous Failure</a> | <a href='#failure78'>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.%s) is not object.<br>
+Exception, line 62: TypeError: Value undefined (result of expression obj.__defineSetter__) is not object.<br>
</tt><br>
-<a name='failure78'></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 name='failure78'></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='#failure77'>Previous Failure</a> | <a href='#failure79'>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.%s) is not object.<br>
+Exception, line 49: TypeError: Value undefined (result of expression obj.toSource) is not object.<br>
</tt><br>
-<a name='failure79'></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 name='failure79'></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='#failure78'>Previous Failure</a> | <a href='#failure80'>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.%s) is not object.<br>
+Exception, line 49: ReferenceError: Can't find variable: uneval<br>
</tt><br>
-<a name='failure80'></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 name='failure80'></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='#failure79'>Previous Failure</a> | <a href='#failure81'>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>
+Exception, line 50: TypeError: Value undefined (result of expression obj1.toSource) is not object.<br>
</tt><br>
-<a name='failure81'></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 name='failure81'></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='#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>
-Exception, line 50: TypeError: Value undefined (result of expression obj1.%s) is not object.<br>
+Exception, line 50: ReferenceError: Can't find variable: uneval<br>
</tt><br>
-<a name='failure82'></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 name='failure82'></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='#failure81'>Previous Failure</a> | <a href='#failure83'>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>
+--> BUGNUMBER: 44009<br>
+--> 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='failure83'></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 name='failure83'></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='#failure82'>Previous Failure</a> | <a href='#failure84'>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>
+--> FAILED!: [reported from test()] Type mismatch, expected type number, actual type boolean<br>
+--> FAILED!: [reported from test()] Expected value '43', Actual value 'false'<br>
+--> FAILED!: [reported from test()] <br>
+</tt><br>
+<a name='failure84'></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='#failure83'>Previous Failure</a> | <a href='#failure85'>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>
@@ -1205,45 +1357,34 @@
--> FAILED!: [reported from test()] Expected value '1', Actual value '2'<br>
--> FAILED!: [reported from test()] <br>
</tt><br>
-<a name='failure84'></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='#failure83'>Previous Failure</a> | <a href='#failure85'>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/Regress/regress-104077.js'>js1_5/Regress/regress-104077.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 351: SyntaxError: Parse error<br>
</tt><br>
-<a name='failure85'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-114491.js'>js1_5/Regress/regress-114491.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=114491' target='other_window'>Bug Number 114491</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='failure86'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-114491.js'>js1_5/Regress/regress-114491.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=114491' target='other_window'>Bug Number 114491</a><br>
+ [ <a href='#failure85'>Previous Failure</a> | <a href='#failure87'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>--> STATUS: Regression test for bug 114491<br>
Failure messages were:<br>
--> FAILED!: [reported from test()] Section 1 of test -<br>
--> FAILED!: [reported from test()] Expected value 'Program execution fell into into catch-block', Actual value 'Program execution did NOT fall into catch-block'<br>
--> FAILED!: [reported from test()] <br>
</tt><br>
-<a name='failure86'></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='#failure85'>Previous Failure</a> | <a href='#failure87'>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/Regress/regress-127557.js'>js1_5/Regress/regress-127557.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 76: ReferenceError: Can't find variable: clone<br>
</tt><br>
-<a name='failure87'></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='#failure86'>Previous Failure</a> | <a href='#failure88'>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/Regress/regress-156354.js'>js1_5/Regress/regress-156354.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 56: TypeError: Value undefined (result of expression this.%s) is not object.<br>
-</tt><br>
-<a name='failure88'></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='#failure87'>Previous Failure</a> | <a href='#failure89'>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>
---> FAILED!: [reported from test()] Expected value '"i=i+1failedwith"+e+"i="+f.i);}try{++f.i;print("++isucceededi="+f.i);}catch(e){print("++ifailedwith"', Actual value '"i=i+1failedwith"+e+"i="+f.i);}try{f.i++;print("++isucceededi="+f.i);}catch(e){print("++ifailedwith"'<br>
---> FAILED!: [reported from test()] <br>
---> FAILED!: [reported from test()] Section 4 of test -<br>
---> 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>
+Exception, line 56: TypeError: Value undefined (result of expression this.propertyIsEnumerable) is not object.<br>
</tt><br>
<a name='failure89'></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='#failure88'>Previous Failure</a> | <a href='#failure90'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
@@ -1311,26 +1452,8 @@
yylex: ERROR.<br>
Exception, line 3: SyntaxError: Parse error<br>
</tt><br>
-<a name='failure92'></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 name='failure92'></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='#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>
---> BUGNUMBER: 44009<br>
---> STATUS: Testing that we don't crash on obj.toSource()<br>
-Exception, line 61: TypeError: Value undefined (result of expression obj.%s) is not object.<br>
-</tt><br>
-<a name='failure93'></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='#failure92'>Previous Failure</a> | <a href='#failure94'>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>
---> FAILED!: [reported from test()] Type mismatch, expected type number, actual type boolean<br>
---> FAILED!: [reported from test()] Expected value '43', Actual value 'false'<br>
---> FAILED!: [reported from test()] <br>
-</tt><br>
-<a name='failure94'></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='#failure93'>Previous Failure</a> | <a href='#failure95'>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>
@@ -1345,15 +1468,15 @@
--> FAILED!: [reported from test()] }', Actual value '0'<br>
--> FAILED!: [reported from test()] <br>
</tt><br>
-<a name='failure95'></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='#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/Scope/regress-220584.js'>js1_5/Scope/regress-220584.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 57: ReferenceError: Can't find variable: Script<br>
</tt><br>
-<a name='failure96'></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='#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/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='#failure93'>Previous Failure</a> | <a href='#failure95'>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>
@@ -1370,9 +1493,9 @@
<pre>
<a name='retest_list'></a>
<h2>Retest List</h2><br>
-# Retest List, kjs, generated Wed Sep 7 14:49:22 2005.
+# Retest List, kjs, generated Thu Sep 22 23:37:42 2005.
# Original test base was: All tests.
-# 1111 of 1116 test(s) were completed, 96 failures reported.
+# 1111 of 1116 test(s) were completed, 94 failures reported.
ecma/Date/15.9.5.28-1.js
ecma/GlobalObject/15.1.2.2-2.js
ecma/LexicalConventions/7.7.3-1.js
@@ -1381,38 +1504,37 @@
ecma_2/RegExp/regress-001.js
ecma_2/RegExp/unicode-001.js
ecma_3/Date/15.9.5.7.js
-ecma_3/Function/regress-193555.js
-ecma_3/Function/regress-58274.js
ecma_3/FunExpr/fe-001.js
+ecma_3/Function/regress-58274.js
+ecma_3/Function/regress-193555.js
ecma_3/Object/class-002.js
ecma_3/RegExp/15.10.2-1.js
ecma_3/RegExp/15.10.6.2-2.js
ecma_3/RegExp/octal-002.js
ecma_3/RegExp/perlstress-001.js
ecma_3/RegExp/perlstress-002.js
-ecma_3/RegExp/regress-100199.js
-ecma_3/RegExp/regress-188206.js
-ecma_3/RegExp/regress-209919.js
ecma_3/RegExp/regress-72964.js
ecma_3/RegExp/regress-78156.js
ecma_3/RegExp/regress-85721.js
+ecma_3/RegExp/regress-100199.js
+ecma_3/RegExp/regress-188206.js
+ecma_3/RegExp/regress-209919.js
ecma_3/Statements/regress-194364.js
ecma_3/Unicode/uc-001.js
ecma_3/Unicode/uc-002.js
ecma_3/Unicode/uc-003.js
ecma_3/Unicode/uc-005.js
-js1_2/function/function-001-n.js
+js1_2/Objects/toString-001.js
+js1_2/String/concat.js
+js1_2/String/slice.js
js1_2/function/Function_object.js
js1_2/function/Number.js
-js1_2/function/regexparg-1.js
js1_2/function/String.js
+js1_2/function/function-001-n.js
+js1_2/function/regexparg-1.js
js1_2/function/tostring-1.js
js1_2/function/tostring-2.js
-js1_2/Objects/toString-001.js
js1_2/operator/equality.js
-js1_2/regexp/beginLine.js
-js1_2/regexp/compile.js
-js1_2/regexp/endLine.js
js1_2/regexp/RegExp_input.js
js1_2/regexp/RegExp_input_as_array.js
js1_2/regexp/RegExp_lastIndex.js
@@ -1426,19 +1548,19 @@
js1_2/regexp/RegExp_multiline_as_array.js
js1_2/regexp/RegExp_rightContext.js
js1_2/regexp/RegExp_rightContext_as_array.js
+js1_2/regexp/beginLine.js
+js1_2/regexp/compile.js
+js1_2/regexp/endLine.js
js1_2/regexp/regress-6359.js
js1_2/regexp/regress-9141.js
js1_2/regexp/simple_form.js
js1_2/regexp/special_characters.js
js1_2/regexp/string_split.js
-js1_2/String/concat.js
-js1_2/String/slice.js
js1_2/version120/boolean-001.js
js1_2/version120/regress-99663.js
-js1_3/regress/function-001-n.js
js1_3/Script/function-001-n.js
js1_3/Script/script-001.js
-js1_4/Regress/function-002.js
+js1_3/regress/function-001-n.js
js1_4/Regress/function-003.js
js1_5/Exceptions/catchguard-001.js
js1_5/Exceptions/catchguard-002.js
@@ -1455,17 +1577,16 @@
js1_5/Object/regress-90596-002.js
js1_5/Object/regress-96284-001.js
js1_5/Object/regress-96284-002.js
+js1_5/Regress/regress-44009.js
+js1_5/Regress/regress-68498-003.js
js1_5/Regress/regress-103602.js
js1_5/Regress/regress-104077.js
js1_5/Regress/regress-114491.js
js1_5/Regress/regress-127557.js
js1_5/Regress/regress-156354.js
-js1_5/Regress/regress-168347.js
js1_5/Regress/regress-172699.js
js1_5/Regress/regress-179524.js
js1_5/Regress/regress-185165.js
-js1_5/Regress/regress-44009.js
-js1_5/Regress/regress-68498-003.js
js1_5/Scope/regress-185485.js
js1_5/Scope/regress-220584.js
js1_5/Scope/scope-001.js
\ No newline at end of file
More information about the webkit-changes
mailing list