Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (225149 => 225150)
--- trunk/Source/_javascript_Core/ChangeLog 2017-11-27 01:15:04 UTC (rev 225149)
+++ trunk/Source/_javascript_Core/ChangeLog 2017-11-27 01:22:43 UTC (rev 225150)
@@ -1,5 +1,31 @@
2017-11-26 Yusuke Suzuki <[email protected]>
+ [JSC] Remove JSStringBuilder
+ https://bugs.webkit.org/show_bug.cgi?id=180016
+
+ Reviewed by Saam Barati.
+
+ JSStringBuilder is replaced with WTF::StringBuilder.
+ This patch removes remaning uses and drop JSStringBuilder.
+
+ * _javascript_Core.xcodeproj/project.pbxproj:
+ * runtime/ArrayPrototype.cpp:
+ * runtime/AsyncFunctionPrototype.cpp:
+ * runtime/AsyncGeneratorFunctionPrototype.cpp:
+ * runtime/ErrorPrototype.cpp:
+ * runtime/FunctionPrototype.cpp:
+ * runtime/GeneratorFunctionPrototype.cpp:
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::decode):
+ (JSC::globalFuncEscape):
+ * runtime/JSStringBuilder.h: Removed.
+ * runtime/JSStringInlines.h:
+ (JSC::jsMakeNontrivialString):
+ * runtime/RegExpPrototype.cpp:
+ * runtime/StringPrototype.cpp:
+
+2017-11-26 Yusuke Suzuki <[email protected]>
+
[DFG] Remove GetLocalUnlinked
https://bugs.webkit.org/show_bug.cgi?id=180017
Modified: trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj (225149 => 225150)
--- trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2017-11-27 01:15:04 UTC (rev 225149)
+++ trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2017-11-27 01:22:43 UTC (rev 225150)
@@ -1151,7 +1151,6 @@
86E3C619167BABEE006D760A /* JSWrapperMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E3C60C167BAB87006D760A /* JSWrapperMap.h */; };
86E3C61B167BABEE006D760A /* JSValueInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E3C60E167BAB87006D760A /* JSValueInternal.h */; settings = {ATTRIBUTES = (Private, ); }; };
86E3C61D167BABEE006D760A /* JSVirtualMachineInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E3C611167BAB87006D760A /* JSVirtualMachineInternal.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 86E85539111B9968001AF51E /* JSStringBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E85538111B9968001AF51E /* JSStringBuilder.h */; };
86EC9DC51328DF82002B2AD7 /* DFGByteCodeParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DB51328DF82002B2AD7 /* DFGByteCodeParser.h */; };
86EC9DC61328DF82002B2AD7 /* DFGGenerationInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DB61328DF82002B2AD7 /* DFGGenerationInfo.h */; };
86EC9DC81328DF82002B2AD7 /* DFGGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC9DB81328DF82002B2AD7 /* DFGGraph.h */; };
@@ -3683,7 +3682,6 @@
86E3C60F167BAB87006D760A /* JSVirtualMachine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVirtualMachine.h; sourceTree = "<group>"; };
86E3C610167BAB87006D760A /* JSVirtualMachine.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = JSVirtualMachine.mm; sourceTree = "<group>"; };
86E3C611167BAB87006D760A /* JSVirtualMachineInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVirtualMachineInternal.h; sourceTree = "<group>"; };
- 86E85538111B9968001AF51E /* JSStringBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStringBuilder.h; sourceTree = "<group>"; };
86EC9DB41328DF82002B2AD7 /* DFGByteCodeParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGByteCodeParser.cpp; path = dfg/DFGByteCodeParser.cpp; sourceTree = "<group>"; };
86EC9DB51328DF82002B2AD7 /* DFGByteCodeParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGByteCodeParser.h; path = dfg/DFGByteCodeParser.h; sourceTree = "<group>"; };
86EC9DB61328DF82002B2AD7 /* DFGGenerationInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGGenerationInfo.h; path = dfg/DFGGenerationInfo.h; sourceTree = "<group>"; };
@@ -5852,14 +5850,14 @@
isa = PBXGroup;
children = (
536B31981F735E5C0037FC33 /* UnifiedSource1-mm.mm */,
+ 536B30DA1F71C5380037FC33 /* UnifiedSource1.cpp */,
536B31961F735E5B0037FC33 /* UnifiedSource2-mm.mm */,
+ 536B30D21F71C5380037FC33 /* UnifiedSource2.cpp */,
530A66B11FA3E77A0026A545 /* UnifiedSource3-mm.mm */,
+ 536B30D31F71C5380037FC33 /* UnifiedSource3.cpp */,
530A66B81FA3E77E0026A545 /* UnifiedSource4-mm.mm */,
+ 536B30E11F71C5380037FC33 /* UnifiedSource4.cpp */,
530A66B51FA3E77D0026A545 /* UnifiedSource5-mm.mm */,
- 536B30DA1F71C5380037FC33 /* UnifiedSource1.cpp */,
- 536B30D21F71C5380037FC33 /* UnifiedSource2.cpp */,
- 536B30D31F71C5380037FC33 /* UnifiedSource3.cpp */,
- 536B30E11F71C5380037FC33 /* UnifiedSource4.cpp */,
536B30E21F71C5380037FC33 /* UnifiedSource5.cpp */,
536B30EA1F71C5380037FC33 /* UnifiedSource6.cpp */,
536B30E91F71C5380037FC33 /* UnifiedSource7.cpp */,
@@ -6603,7 +6601,6 @@
3032175DF1AD47D8998B34E1 /* JSSourceCode.h */,
BC02E9B60E1842FA000F9297 /* JSString.cpp */,
F692A8620255597D01FF60F7 /* JSString.h */,
- 86E85538111B9968001AF51E /* JSStringBuilder.h */,
FEFD6FC51D5E7970008F2F0B /* JSStringInlines.h */,
70EC0EBC1AA0D7DA00B6AAFA /* JSStringIterator.cpp */,
70EC0EBD1AA0D7DA00B6AAFA /* JSStringIterator.h */,
@@ -8855,7 +8852,6 @@
A790DD70182F499700588807 /* JSSetIterator.h in Headers */,
BDFCB2BBE90F41349E1B0BED /* JSSourceCode.h in Headers */,
BC18C4270E16F5CD00B34460 /* JSString.h in Headers */,
- 86E85539111B9968001AF51E /* JSStringBuilder.h in Headers */,
FEFD6FC61D5E7992008F2F0B /* JSStringInlines.h in Headers */,
70EC0EC31AA0D7DA00B6AAFA /* JSStringIterator.h in Headers */,
2600B5A7152BAAA70091EE5F /* JSStringJoiner.h in Headers */,
@@ -9898,14 +9894,14 @@
0FF42746158EBE91004CB9FF /* udis86_syn-intel.c in Sources */,
0FF42747158EBE91004CB9FF /* udis86_syn.c in Sources */,
536B319A1F735E780037FC33 /* UnifiedSource1-mm.mm in Sources */,
+ 536B315F1F71C5990037FC33 /* UnifiedSource1.cpp in Sources */,
536B319B1F735E780037FC33 /* UnifiedSource2-mm.mm in Sources */,
+ 536B31571F71C5990037FC33 /* UnifiedSource2.cpp in Sources */,
530A66B91FA3E78B0026A545 /* UnifiedSource3-mm.mm in Sources */,
+ 536B31581F71C5990037FC33 /* UnifiedSource3.cpp in Sources */,
530A66BA1FA3E78B0026A545 /* UnifiedSource4-mm.mm in Sources */,
+ 536B31661F71C5990037FC33 /* UnifiedSource4.cpp in Sources */,
530A66BB1FA3E78B0026A545 /* UnifiedSource5-mm.mm in Sources */,
- 536B315F1F71C5990037FC33 /* UnifiedSource1.cpp in Sources */,
- 536B31571F71C5990037FC33 /* UnifiedSource2.cpp in Sources */,
- 536B31581F71C5990037FC33 /* UnifiedSource3.cpp in Sources */,
- 536B31661F71C5990037FC33 /* UnifiedSource4.cpp in Sources */,
536B31671F71C5990037FC33 /* UnifiedSource5.cpp in Sources */,
536B316F1F71C5990037FC33 /* UnifiedSource6.cpp in Sources */,
536B316E1F71C5990037FC33 /* UnifiedSource7.cpp in Sources */,
Modified: trunk/Source/_javascript_Core/runtime/ArrayPrototype.cpp (225149 => 225150)
--- trunk/Source/_javascript_Core/runtime/ArrayPrototype.cpp 2017-11-27 01:15:04 UTC (rev 225149)
+++ trunk/Source/_javascript_Core/runtime/ArrayPrototype.cpp 2017-11-27 01:22:43 UTC (rev 225150)
@@ -36,7 +36,6 @@
#include "JSArrayInlines.h"
#include "JSCBuiltins.h"
#include "JSCInlines.h"
-#include "JSStringBuilder.h"
#include "JSStringJoiner.h"
#include "Lookup.h"
#include "ObjectConstructor.h"
Modified: trunk/Source/_javascript_Core/runtime/AsyncFunctionPrototype.cpp (225149 => 225150)
--- trunk/Source/_javascript_Core/runtime/AsyncFunctionPrototype.cpp 2017-11-27 01:15:04 UTC (rev 225149)
+++ trunk/Source/_javascript_Core/runtime/AsyncFunctionPrototype.cpp 2017-11-27 01:22:43 UTC (rev 225150)
@@ -33,7 +33,6 @@
#include "JSCInlines.h"
#include "JSFunction.h"
#include "JSString.h"
-#include "JSStringBuilder.h"
#include "Lexer.h"
namespace JSC {
Modified: trunk/Source/_javascript_Core/runtime/AsyncGeneratorFunctionPrototype.cpp (225149 => 225150)
--- trunk/Source/_javascript_Core/runtime/AsyncGeneratorFunctionPrototype.cpp 2017-11-27 01:15:04 UTC (rev 225149)
+++ trunk/Source/_javascript_Core/runtime/AsyncGeneratorFunctionPrototype.cpp 2017-11-27 01:22:43 UTC (rev 225150)
@@ -33,7 +33,6 @@
#include "JSCInlines.h"
#include "JSFunction.h"
#include "JSString.h"
-#include "JSStringBuilder.h"
#include "Lexer.h"
namespace JSC {
Modified: trunk/Source/_javascript_Core/runtime/ErrorPrototype.cpp (225149 => 225150)
--- trunk/Source/_javascript_Core/runtime/ErrorPrototype.cpp 2017-11-27 01:15:04 UTC (rev 225149)
+++ trunk/Source/_javascript_Core/runtime/ErrorPrototype.cpp 2017-11-27 01:22:43 UTC (rev 225150)
@@ -23,8 +23,7 @@
#include "Error.h"
#include "JSFunction.h"
-#include "JSString.h"
-#include "JSStringBuilder.h"
+#include "JSStringInlines.h"
#include "ObjectPrototype.h"
#include "JSCInlines.h"
#include "StringRecursionChecker.h"
Modified: trunk/Source/_javascript_Core/runtime/FunctionPrototype.cpp (225149 => 225150)
--- trunk/Source/_javascript_Core/runtime/FunctionPrototype.cpp 2017-11-27 01:15:04 UTC (rev 225149)
+++ trunk/Source/_javascript_Core/runtime/FunctionPrototype.cpp 2017-11-27 01:22:43 UTC (rev 225150)
@@ -25,15 +25,11 @@
#include "BuiltinNames.h"
#include "Error.h"
#include "GetterSetter.h"
-#include "JSArray.h"
#include "JSAsyncFunction.h"
+#include "JSCInlines.h"
#include "JSFunction.h"
-#include "JSGlobalObjectFunctions.h"
-#include "JSString.h"
-#include "JSStringBuilder.h"
-#include "Interpreter.h"
+#include "JSStringInlines.h"
#include "Lexer.h"
-#include "JSCInlines.h"
namespace JSC {
Modified: trunk/Source/_javascript_Core/runtime/GeneratorFunctionPrototype.cpp (225149 => 225150)
--- trunk/Source/_javascript_Core/runtime/GeneratorFunctionPrototype.cpp 2017-11-27 01:15:04 UTC (rev 225149)
+++ trunk/Source/_javascript_Core/runtime/GeneratorFunctionPrototype.cpp 2017-11-27 01:22:43 UTC (rev 225150)
@@ -33,7 +33,6 @@
#include "JSCInlines.h"
#include "JSFunction.h"
#include "JSString.h"
-#include "JSStringBuilder.h"
#include "Lexer.h"
namespace JSC {
Modified: trunk/Source/_javascript_Core/runtime/JSGlobalObjectFunctions.cpp (225149 => 225150)
--- trunk/Source/_javascript_Core/runtime/JSGlobalObjectFunctions.cpp 2017-11-27 01:15:04 UTC (rev 225149)
+++ trunk/Source/_javascript_Core/runtime/JSGlobalObjectFunctions.cpp 2017-11-27 01:22:43 UTC (rev 225150)
@@ -39,7 +39,6 @@
#include "JSPromise.h"
#include "JSPromiseDeferred.h"
#include "JSString.h"
-#include "JSStringBuilder.h"
#include "Lexer.h"
#include "LiteralParser.h"
#include "Nodes.h"
@@ -172,7 +171,7 @@
VM& vm = exec->vm();
auto scope = DECLARE_THROW_SCOPE(vm);
- JSStringBuilder builder;
+ StringBuilder builder;
int k = 0;
UChar u = 0;
while (k < length) {
@@ -232,7 +231,7 @@
builder.append(c);
}
scope.release();
- return builder.build(exec);
+ return jsString(&vm, builder.toString());
}
static JSValue decode(ExecState* exec, const Bitmap<256>& doNotUnescape, bool strict)
@@ -593,7 +592,7 @@
);
return JSValue::encode(toStringView(exec, exec->argument(0), [&] (StringView view) {
- JSStringBuilder builder;
+ StringBuilder builder;
if (view.is8Bit()) {
const LChar* c = view.characters8();
for (unsigned k = 0; k < view.length(); k++, c++) {
@@ -605,8 +604,7 @@
appendByteAsHex(static_cast<LChar>(u), builder);
}
}
-
- return builder.build(exec);
+ return jsString(exec, builder.toString());
}
const UChar* c = view.characters16();
@@ -625,7 +623,7 @@
}
}
- return builder.build(exec);
+ return jsString(exec, builder.toString());
}));
}
Deleted: trunk/Source/_javascript_Core/runtime/JSStringBuilder.h (225149 => 225150)
--- trunk/Source/_javascript_Core/runtime/JSStringBuilder.h 2017-11-27 01:15:04 UTC (rev 225149)
+++ trunk/Source/_javascript_Core/runtime/JSStringBuilder.h 2017-11-27 01:22:43 UTC (rev 225150)
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) 2009-2017 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#include "ExceptionHelpers.h"
-#include "JSString.h"
-#include <wtf/text/StringVector.h>
-
-namespace JSC {
-
-// FIXME: Should move the last few callers over from this to WTF::StringBuilder.
-class JSStringBuilder {
-public:
- JSStringBuilder()
- : m_okay(true)
- , m_is8Bit(true)
- {
- }
-
- void append(LChar character)
- {
- if (m_is8Bit) {
- m_okay &= buffer8.tryAppend(&character, 1);
- return;
- }
- UChar upconvertedCharacter = character;
- m_okay &= buffer16.tryAppend(&upconvertedCharacter, 1);
- }
-
- void append(UChar character)
- {
- if (m_is8Bit) {
- if (character < 0x100) {
- LChar narrowedCharacter = character;
- m_okay &= buffer8.tryAppend(&narrowedCharacter, 1);
- return;
- }
- upConvert();
- }
- m_okay &= buffer16.tryAppend(&character, 1);
- }
-
- void append(const char* str)
- {
- append(reinterpret_cast<const LChar*>(str), strlen(str));
- }
-
- JSValue build(ExecState* exec)
- {
- VM& vm = exec->vm();
- auto scope = DECLARE_THROW_SCOPE(vm);
- if (!m_okay)
- return throwOutOfMemoryError(exec, scope);
- if (m_is8Bit) {
- buffer8.shrinkToFit();
- if (!buffer8.data())
- return throwOutOfMemoryError(exec, scope);
- return jsString(exec, String::adopt(WTFMove(buffer8)));
- }
- buffer16.shrinkToFit();
- if (!buffer16.data())
- return throwOutOfMemoryError(exec, scope);
- return jsString(exec, String::adopt(WTFMove(buffer16)));
- }
-
-private:
- void append(const LChar* characters, size_t length)
- {
- if (m_is8Bit) {
- m_okay &= buffer8.tryAppend(characters, length);
- return;
- }
- // FIXME: There must be a more efficient way of doing this.
- m_okay &= buffer16.tryReserveCapacity(buffer16.size() + length);
- for (size_t i = 0; i < length; i++) {
- UChar upconvertedCharacter = characters[i];
- m_okay &= buffer16.tryAppend(&upconvertedCharacter, 1);
- }
- }
-
- void upConvert()
- {
- ASSERT(m_is8Bit);
- size_t len = buffer8.size();
-
- for (size_t i = 0; i < len; i++)
- buffer16.append(buffer8[i]);
-
- buffer8.clear();
- m_is8Bit = false;
- }
-
- StringVector<LChar, 64, UnsafeVectorOverflow> buffer8;
- StringVector<UChar, 64, UnsafeVectorOverflow> buffer16;
- bool m_okay;
- bool m_is8Bit;
-};
-
-template<typename StringType>
-inline JSValue jsMakeNontrivialString(ExecState* exec, StringType&& string)
-{
- return jsNontrivialString(exec, std::forward<StringType>(string));
-}
-
-template<typename StringType, typename... StringTypes>
-inline JSValue jsMakeNontrivialString(ExecState* exec, const StringType& string, const StringTypes&... strings)
-{
- VM& vm = exec->vm();
- auto scope = DECLARE_THROW_SCOPE(vm);
- String result = tryMakeString(string, strings...);
- if (UNLIKELY(!result))
- return throwOutOfMemoryError(exec, scope);
- return jsNontrivialString(exec, WTFMove(result));
-}
-
-} // namespace JSC
Modified: trunk/Source/_javascript_Core/runtime/JSStringInlines.h (225149 => 225150)
--- trunk/Source/_javascript_Core/runtime/JSStringInlines.h 2017-11-27 01:15:04 UTC (rev 225149)
+++ trunk/Source/_javascript_Core/runtime/JSStringInlines.h 2017-11-27 01:22:43 UTC (rev 225150)
@@ -36,4 +36,21 @@
return WTF::equal(*m_value.impl(), *other->m_value.impl());
}
+template<typename StringType>
+inline JSValue jsMakeNontrivialString(ExecState* exec, StringType&& string)
+{
+ return jsNontrivialString(exec, std::forward<StringType>(string));
+}
+
+template<typename StringType, typename... StringTypes>
+inline JSValue jsMakeNontrivialString(ExecState* exec, StringType&& string, StringTypes&&... strings)
+{
+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
+ String result = tryMakeString(std::forward<StringType>(string), std::forward<StringTypes>(strings)...);
+ if (UNLIKELY(!result))
+ return throwOutOfMemoryError(exec, scope);
+ return jsNontrivialString(exec, WTFMove(result));
+}
+
} // namespace JSC
Modified: trunk/Source/_javascript_Core/runtime/RegExpPrototype.cpp (225149 => 225150)
--- trunk/Source/_javascript_Core/runtime/RegExpPrototype.cpp 2017-11-27 01:15:04 UTC (rev 225149)
+++ trunk/Source/_javascript_Core/runtime/RegExpPrototype.cpp 2017-11-27 01:22:43 UTC (rev 225150)
@@ -30,8 +30,7 @@
#include "JSCJSValue.h"
#include "JSFunction.h"
#include "JSObject.h"
-#include "JSString.h"
-#include "JSStringBuilder.h"
+#include "JSStringInlines.h"
#include "Lexer.h"
#include "ObjectPrototype.h"
#include "RegExp.h"
Modified: trunk/Source/_javascript_Core/runtime/StringPrototype.cpp (225149 => 225150)
--- trunk/Source/_javascript_Core/runtime/StringPrototype.cpp 2017-11-27 01:15:04 UTC (rev 225149)
+++ trunk/Source/_javascript_Core/runtime/StringPrototype.cpp 2017-11-27 01:22:43 UTC (rev 225150)
@@ -34,7 +34,6 @@
#include "JSCInlines.h"
#include "JSFunction.h"
#include "JSGlobalObjectFunctions.h"
-#include "JSStringBuilder.h"
#include "JSStringIterator.h"
#include "Lookup.h"
#include "ObjectPrototype.h"