Title: [114195] trunk/Source/_javascript_Core
Revision
114195
Author
commit-qu...@webkit.org
Date
2012-04-13 18:29:00 -0700 (Fri, 13 Apr 2012)

Log Message

Unreviewed, rolling out r114185.
http://trac.webkit.org/changeset/114185
https://bugs.webkit.org/show_bug.cgi?id=83967

Broke a bunch of _javascript_ related tests (Requested by
andersca on #webkit).

Patch by Sheriff Bot <webkit.review....@gmail.com> on 2012-04-13

* runtime/ArrayPrototype.cpp:
(JSC::arrayProtoFuncToString):
(JSC::arrayProtoFuncToLocaleString):
* runtime/CommonIdentifiers.h:
* tests/mozilla/ecma/Array/15.4.4.2.js:
(getTestCases):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (114194 => 114195)


--- trunk/Source/_javascript_Core/ChangeLog	2012-04-14 01:27:13 UTC (rev 114194)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-04-14 01:29:00 UTC (rev 114195)
@@ -1,3 +1,19 @@
+2012-04-13  Sheriff Bot  <webkit.review....@gmail.com>
+
+        Unreviewed, rolling out r114185.
+        http://trac.webkit.org/changeset/114185
+        https://bugs.webkit.org/show_bug.cgi?id=83967
+
+        Broke a bunch of _javascript_ related tests (Requested by
+        andersca on #webkit).
+
+        * runtime/ArrayPrototype.cpp:
+        (JSC::arrayProtoFuncToString):
+        (JSC::arrayProtoFuncToLocaleString):
+        * runtime/CommonIdentifiers.h:
+        * tests/mozilla/ecma/Array/15.4.4.2.js:
+        (getTestCases):
+
 2012-04-13  Gavin Barraclough  <barraclo...@apple.com>
 
         Don't rely on fixed offsets to patch calls

Modified: trunk/Source/_javascript_Core/runtime/ArrayPrototype.cpp (114194 => 114195)


--- trunk/Source/_javascript_Core/runtime/ArrayPrototype.cpp	2012-04-14 01:27:13 UTC (rev 114194)
+++ trunk/Source/_javascript_Core/runtime/ArrayPrototype.cpp	2012-04-14 01:29:00 UTC (rev 114195)
@@ -254,25 +254,11 @@
 {
     JSValue thisValue = exec->hostThisValue();
 
-    JSObject* thisObject = thisValue.toObject(exec);
-    if (exec->hadException())
-        return JSValue::encode(jsUndefined());
-
-    JSValue function = JSValue(thisObject).get(exec, exec->propertyNames().join);
-    if (!function.isCell())
-        return objectProtoFuncToString(exec);
-
-    CallData callData;
-    CallType callType = getCallData(function, callData);
-    if (callType == CallTypeNone)
-        return objectProtoFuncToString(exec);
-
-    if (!isJSArray(thisObject) || callType != CallTypeHost || callData.native.function != arrayProtoFuncJoin)
-        return JSValue::encode(call(exec, function, callType, callData, thisObject, exec->emptyList()));
-
-    ASSERT(isJSArray(thisValue));
+    bool isRealArray = isJSArray(thisValue);
+    if (!isRealArray && !thisValue.inherits(&JSArray::s_info))
+        return throwVMTypeError(exec);
     JSArray* thisObj = asArray(thisValue);
-
+    
     unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
     if (exec->hadException())
         return JSValue::encode(jsUndefined());
@@ -287,7 +273,7 @@
 
     for (unsigned k = 0; k < length; k++) {
         JSValue element;
-        if (thisObj->canGetIndex(k))
+        if (isRealArray && thisObj->canGetIndex(k))
             element = thisObj->getIndex(k);
         else
             element = thisObj->get(exec, k);
@@ -345,9 +331,9 @@
 {
     JSValue thisValue = exec->hostThisValue();
 
-    JSObject* thisObj = thisValue.toObject(exec);
-    if (exec->hadException())
-        return JSValue::encode(jsUndefined());
+    if (!thisValue.inherits(&JSArray::s_info))
+        return throwVMTypeError(exec);
+    JSObject* thisObj = asArray(thisValue);
 
     unsigned length = thisObj->get(exec, exec->propertyNames().length).toUInt32(exec);
     if (exec->hadException())
@@ -374,12 +360,11 @@
             if (callType != CallTypeNone)
                 str = call(exec, conversionFunction, callType, callData, element, exec->emptyList()).toUString(exec);
             else
-                return throwVMTypeError(exec);
+                str = element.toUString(exec);
             if (exec->hadException())
                 return JSValue::encode(jsUndefined());
             stringJoiner.append(str);
-        } else
-            return JSValue::encode(jsEmptyString(exec)); 
+        }
     }
 
     return JSValue::encode(stringJoiner.build(exec));

Modified: trunk/Source/_javascript_Core/runtime/CommonIdentifiers.h (114194 => 114195)


--- trunk/Source/_javascript_Core/runtime/CommonIdentifiers.h	2012-04-14 01:27:13 UTC (rev 114194)
+++ trunk/Source/_javascript_Core/runtime/CommonIdentifiers.h	2012-04-14 01:29:00 UTC (rev 114195)
@@ -72,8 +72,7 @@
     macro(value) \
     macro(valueOf) \
     macro(writable) \
-    macro(displayName)\
-    macro(join)
+    macro(displayName)
 
 #define JSC_COMMON_IDENTIFIERS_EACH_KEYWORD(macro) \
     macro(null) \

Modified: trunk/Source/_javascript_Core/tests/mozilla/ecma/Array/15.4.4.2.js (114194 => 114195)


--- trunk/Source/_javascript_Core/tests/mozilla/ecma/Array/15.4.4.2.js	2012-04-14 01:27:13 UTC (rev 114194)
+++ trunk/Source/_javascript_Core/tests/mozilla/ecma/Array/15.4.4.2.js	2012-04-14 01:29:00 UTC (rev 114195)
@@ -55,31 +55,6 @@
     array[item++] = new TestCase( SECTION,  "(new Array( Boolean(1), Boolean(0))).toString()",   "true,false",   (new Array(Boolean(1),Boolean(0))).toString() );
     array[item++] = new TestCase( SECTION,  "(new Array(void 0,null)).toString()",    ",",    (new Array(void 0,null)).toString() );
 
-    array[item++] = new TestCase( SECTION,
-                                  "{__proto__: Array.prototype, 0: 'a', 1: 'b', 2: 'c', length: 3}.toString()",
-                                  "a,b,c",
-                                  {__proto__: Array.prototype, 0: 'a', 1: 'b', 2: 'c', length: 3}.toString() );
-    array[item++] = new TestCase( SECTION,
-                                  "{__proto__: Array.prototype, 0: 'a', 1: 'b', 2: 'c', join: function() { return 'join' }}.toString()",
-                                  "join",
-                                  {__proto__: Array.prototype, 0: 'a', 1: 'b', 2: 'c', join: function() { return 'join' }}.toString() );
-    array[item++] = new TestCase( SECTION,
-                                  "Array.prototype.toString.call({join: function() { return 'join' }})",
-                                  "join",
-                                  Array.prototype.toString.call({join: function() { return 'join' }}) );
-    array[item++] = new TestCase( SECTION,
-                                  "Array.prototype.toString.call({sort: function() { return 'sort' }})",
-                                  "[object Object]",
-                                  Array.prototype.toString.call({sort: function() { return 'sort' }}) );
-    array[item++] = new TestCase( SECTION,
-                                  "Array.prototype.toString.call(new Date)",
-                                  "[object Date]", 
-                                  Array.prototype.toString.call(new Date) );
-    array[item++] = new TestCase( SECTION,
-                                  "Number.prototype.join = function() { return 'number join' }; Array.prototype.toString.call(42)",
-                                  "number join",
-                                  eval("Number.prototype.join = function() { return 'number join' }; Array.prototype.toString.call(42)") );
-
     var EXPECT_STRING = "";
     var MYARR = new Array();
 
@@ -92,10 +67,6 @@
 
     array[item++] = new TestCase( SECTION, "MYARR.toString()",  EXPECT_STRING,  MYARR.toString() );
 
-    array[item++] = new TestCase( SECTION,
-                                  "Array.prototype.join = function() { return 'join' }; [0, 1, 2].toString()",
-                                  "join",
-                                  eval("Array.prototype.join = function() { return 'join' }; [0, 1, 2].toString()") );
 
     return ( array );
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to