Skip to content

Commit ed9f7db

Browse files
committed
Drop WTF_ALLOW_UNSAFE_BUFFER_USAGE for WTF::makeLatin1CharacterBitSet()
https://bugs.webkit.org/show_bug.cgi?id=294631 Reviewed by Darin Adler. This tested as performance neutral on Speedometer and JetStream. * Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION): * Source/WTF/wtf/text/ASCIIFastPath.h: (WTF::makeLatin1CharacterBitSet): Canonical link: https://commits.webkit.org/296379@main
1 parent 0d9a8c7 commit ed9f7db

2 files changed

Lines changed: 8 additions & 11 deletions

File tree

Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ JSC_DEFINE_HOST_FUNCTION(globalFuncParseFloat, (JSGlobalObject* globalObject, Ca
570570
JSC_DEFINE_HOST_FUNCTION(globalFuncDecodeURI, (JSGlobalObject* globalObject, CallFrame* callFrame))
571571
{
572572
static constexpr auto doNotUnescapeWhenDecodingURI = makeLatin1CharacterBitSet(
573-
"#$&+,/:;=?@"
573+
"#$&+,/:;=?@"_s
574574
);
575575

576576
return JSValue::encode(decode(globalObject, callFrame->argument(0), doNotUnescapeWhenDecodingURI, true));
@@ -588,7 +588,7 @@ JSC_DEFINE_HOST_FUNCTION(globalFuncEncodeURI, (JSGlobalObject* globalObject, Cal
588588
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
589589
"abcdefghijklmnopqrstuvwxyz"
590590
"0123456789"
591-
"!#$&'()*+,-./:;=?@_~"
591+
"!#$&'()*+,-./:;=?@_~"_s
592592
);
593593
return JSValue::encode(encode(globalObject, callFrame->argument(0), doNotEscapeWhenEncodingURI));
594594
}
@@ -599,7 +599,7 @@ JSC_DEFINE_HOST_FUNCTION(globalFuncEncodeURIComponent, (JSGlobalObject* globalOb
599599
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
600600
"abcdefghijklmnopqrstuvwxyz"
601601
"0123456789"
602-
"!'()*-._~"
602+
"!'()*-._~"_s
603603
);
604604
return JSValue::encode(encode(globalObject, callFrame->argument(0), doNotEscapeWhenEncodingURIComponent));
605605
}
@@ -611,7 +611,7 @@ JSC_DEFINE_HOST_FUNCTION(globalFuncEscape, (JSGlobalObject* globalObject, CallFr
611611
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
612612
"abcdefghijklmnopqrstuvwxyz"
613613
"0123456789"
614-
"*+-./@_"
614+
"*+-./@_"_s
615615
);
616616

617617
VM& vm = globalObject->vm();

Source/WTF/wtf/text/ASCIIFastPath.h

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include <unicode/utypes.h>
2626
#include <wtf/BitSet.h>
2727
#include <wtf/StdLibExtras.h>
28+
#include <wtf/text/ASCIILiteral.h>
2829
#include <wtf/text/LChar.h>
2930

3031
#if CPU(X86_SSE2)
@@ -33,17 +34,13 @@
3334

3435
namespace WTF {
3536

36-
WTF_ALLOW_UNSAFE_BUFFER_USAGE_BEGIN
37-
template<unsigned charactersCount>
38-
inline constexpr BitSet<256> makeLatin1CharacterBitSet(const char (&characters)[charactersCount])
37+
inline constexpr BitSet<256> makeLatin1CharacterBitSet(ASCIILiteral characters)
3938
{
40-
static_assert(charactersCount > 0, "Since string literal is null terminated, characterCount is always larger than 0");
4139
BitSet<256> bitmap;
42-
for (unsigned i = 0; i < charactersCount - 1; ++i)
43-
bitmap.set(characters[i]);
40+
for (char character : characters.span())
41+
bitmap.set(character);
4442
return bitmap;
4543
}
46-
WTF_ALLOW_UNSAFE_BUFFER_USAGE_END
4744

4845
inline constexpr BitSet<256> makeLatin1CharacterBitSet(NOESCAPE const Invocable<bool(LChar)> auto& matches)
4946
{

0 commit comments

Comments
 (0)