Title: [184860] trunk/Source/_javascript_Core
Revision
184860
Author
akl...@apple.com
Date
2015-05-26 10:28:32 -0700 (Tue, 26 May 2015)

Log Message

Try to use StringView when comparing JSStrings for equality.
<https://webkit.org/b/145379>

Reviewed by Darin Adler.

Use JSString::view() when sending two JSStrings to WTF::equal()
for comparison. This avoids creating new objects in the case where
the strings are actually substrings.

* jit/JITOperations.cpp:
* runtime/JSCJSValueInlines.h:
(JSC::JSValue::equalSlowCaseInline):
(JSC::JSValue::strictEqualSlowCaseInline):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (184859 => 184860)


--- trunk/Source/_javascript_Core/ChangeLog	2015-05-26 17:26:40 UTC (rev 184859)
+++ trunk/Source/_javascript_Core/ChangeLog	2015-05-26 17:28:32 UTC (rev 184860)
@@ -1,3 +1,19 @@
+2015-05-26  Andreas Kling  <akl...@apple.com>
+
+        Try to use StringView when comparing JSStrings for equality.
+        <https://webkit.org/b/145379>
+
+        Reviewed by Darin Adler.
+
+        Use JSString::view() when sending two JSStrings to WTF::equal()
+        for comparison. This avoids creating new objects in the case where
+        the strings are actually substrings.
+
+        * jit/JITOperations.cpp:
+        * runtime/JSCJSValueInlines.h:
+        (JSC::JSValue::equalSlowCaseInline):
+        (JSC::JSValue::strictEqualSlowCaseInline):
+
 2015-05-26  Yusuke Suzuki  <utatane....@gmail.com>
 
         [JSC] Generate put_by_val_direct for indexed identifiers instead of put_by_id with direct postfix

Modified: trunk/Source/_javascript_Core/jit/JITOperations.cpp (184859 => 184860)


--- trunk/Source/_javascript_Core/jit/JITOperations.cpp	2015-05-26 17:26:40 UTC (rev 184859)
+++ trunk/Source/_javascript_Core/jit/JITOperations.cpp	2015-05-26 17:28:32 UTC (rev 184860)
@@ -923,7 +923,7 @@
     VM* vm = &exec->vm();
     NativeCallFrameTracer tracer(vm, exec);
 
-    bool result = WTF::equal(*asString(left)->value(exec).impl(), *asString(right)->value(exec).impl());
+    bool result = WTF::equal(asString(left)->view(exec), asString(right)->view(exec));
 #if USE(JSVALUE64)
     return JSValue::encode(jsBoolean(result));
 #else

Modified: trunk/Source/_javascript_Core/runtime/JSCJSValueInlines.h (184859 => 184860)


--- trunk/Source/_javascript_Core/runtime/JSCJSValueInlines.h	2015-05-26 17:26:40 UTC (rev 184859)
+++ trunk/Source/_javascript_Core/runtime/JSCJSValueInlines.h	2015-05-26 17:28:32 UTC (rev 184860)
@@ -786,7 +786,7 @@
         bool s1 = v1.isString();
         bool s2 = v2.isString();
         if (s1 && s2)
-            return WTF::equal(*asString(v1)->value(exec).impl(), *asString(v2)->value(exec).impl());
+            return WTF::equal(asString(v1)->view(exec), asString(v2)->view(exec));
 
         if (v1.isUndefinedOrNull()) {
             if (v2.isUndefinedOrNull())
@@ -856,7 +856,7 @@
     ASSERT(v1.isCell() && v2.isCell());
 
     if (v1.asCell()->isString() && v2.asCell()->isString())
-        return WTF::equal(*asString(v1)->value(exec).impl(), *asString(v2)->value(exec).impl());
+        return WTF::equal(asString(v1)->view(exec), asString(v2)->view(exec));
     if (v1.asCell()->isSymbol() && v2.asCell()->isSymbol())
         return asSymbol(v1)->privateName() == asSymbol(v2)->privateName();
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to