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