Skip to content

Commit

Permalink
Merge branch 'upstream'
Browse files Browse the repository at this point in the history
  • Loading branch information
190n committed Feb 25, 2025
2 parents b9c0b51 + 5f23c78 commit fb27d2f
Show file tree
Hide file tree
Showing 995 changed files with 15,776 additions and 19,540 deletions.
29 changes: 9 additions & 20 deletions Configurations/Sanitizers.xcconfig
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (C) 2023-2024 Apple Inc. All rights reserved.
// Copyright (C) 2023-2025 Apple Inc. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
Expand Down Expand Up @@ -26,6 +26,8 @@

// Requires SDKVariant.xcconfig.

#include "WebKitTargetConditionals.xcconfig"

WK_SANITIZER_GCC_OPTIMIZATION_LEVEL = $(WK_SANITIZER_GCC_OPTIMIZATION_LEVEL_$(CONFIGURATION));
WK_SANITIZER_GCC_OPTIMIZATION_LEVEL_Debug = 0;
WK_SANITIZER_GCC_OPTIMIZATION_LEVEL_Production = 1;
Expand Down Expand Up @@ -64,29 +66,16 @@ WK_ANY_SANITIZER_LDFLAGS_YES = -Wl,-rpath,@executable_path/Frameworks;
// Address Sanitizer

// Add -fsanitize-address-use-after-return=never to disable ASan's "fake stack" to fix JSC garbage collection.
WK_ADDRESS_SANITIZER_OTHER_CFLAGS_YES = -fsanitize-address-use-after-return=never $(WK_NEEDS_ASAN_USE_AFTER_SCOPE_WORKAROUND_FOR_$(PRODUCT_NAME)_$(WK_NEEDS_ASAN_USE_AFTER_SCOPE_WORKAROUND));
WK_ADDRESS_SANITIZER_OTHER_CFLAGS_YES = -fsanitize-address-use-after-return=never $(WK_WORKAROUND_RDAR_145268301_ASAN_STACK_USE_AFTER_SCOPE);
WK_ADDRESS_SANITIZER_OTHER_LDFLAGS_YES = -fsanitize-address-use-after-return=never;

WK_ADDRESS_SANITIZER_OTHER_CPLUSPLUSFLAGS_YES = -U_LIBCPP_HAS_NO_ASAN;

// Workaround ASan false positive in certain Xcode versions: <https://bugs.webkit.org/show_bug.cgi?id=236001>.
WK_NEEDS_ASAN_USE_AFTER_SCOPE_WORKAROUND_FOR_bmalloc_YES = -DWK_WORKAROUND_RDAR_87613908_ASAN_STACK_USE_AFTER_SCOPE;

WK_NEEDS_ASAN_USE_AFTER_SCOPE_WORKAROUND = $(WK_NOT_$(WK_OR_$(WK_XCODE_VERSION_BEFORE_13_3_$(XCODE_VERSION_MAJOR))_$(WK_XCODE_VERSION_AFTER_13_3_$(XCODE_VERSION_MAJOR))));

WK_XCODE_VERSION_BEFORE_13_3_0800 = YES;
WK_XCODE_VERSION_BEFORE_13_3_0900 = YES;
WK_XCODE_VERSION_BEFORE_13_3_1000 = YES;
WK_XCODE_VERSION_BEFORE_13_3_1100 = YES;
WK_XCODE_VERSION_BEFORE_13_3_1200 = YES;
WK_XCODE_VERSION_BEFORE_13_3_1300 = $(WK_XCODE_VERSION_BEFORE_13_3_1300_$(XCODE_VERSION_MINOR));
WK_XCODE_VERSION_BEFORE_13_3_1300_1300 = YES;
WK_XCODE_VERSION_BEFORE_13_3_1300_1310 = YES;
WK_XCODE_VERSION_BEFORE_13_3_1300_1320 = YES;
WK_XCODE_VERSION_AFTER_13_3_1400 = YES;
WK_XCODE_VERSION_AFTER_13_3_1500 = YES;
WK_XCODE_VERSION_AFTER_13_3_1600 = YES;
WK_XCODE_VERSION_AFTER_13_3_1700 = YES;
// Workaround ASan stack-use-after-scope false positive in Xcode 16.3: <https://bugs.webkit.org/show_bug.cgi?id=288308>.
WK_NEEDS_RDAR_145268301_ASAN_STACK_USE_AFTER_SCOPE_WORKAROUND = $(WK_NOT_$(WK_XCODE_BEFORE_16_3));

WK_WORKAROUND_RDAR_145268301_ASAN_STACK_USE_AFTER_SCOPE = $(WK_WORKAROUND_RDAR_145268301_ASAN_STACK_USE_AFTER_SCOPE_$(WK_NEEDS_RDAR_145268301_ASAN_STACK_USE_AFTER_SCOPE_WORKAROUND);
WK_WORKAROUND_RDAR_145268301_ASAN_STACK_USE_AFTER_SCOPE_YES = -DWK_WORKAROUND_RDAR_145268301_ASAN_STACK_USE_AFTER_SCOPE;

// Undefined Behavior Sanitizer

Expand Down
13 changes: 12 additions & 1 deletion Configurations/WebKitTargetConditionals.xcconfig
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (C) 2018-2024 Apple Inc. All rights reserved.
// Copyright (C) 2018-2025 Apple Inc. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
Expand Down Expand Up @@ -380,3 +380,14 @@ WK_XCODE_BEFORE_16_1500 = YES;
WK_XCODE_16 = $(WK_XCODE_16_$(WK_XCODE_BEFORE_16));
WK_XCODE_16_ = _XCODE_SINCE_16;
WK_XCODE_16_YES = _XCODE_BEFORE_16;

WK_XCODE_BEFORE_16_3 = $(WK_XCODE_BEFORE_16_3$(WK_XCODE_16));
WK_XCODE_BEFORE_16_3_XCODE_BEFORE_16 = YES;
WK_XCODE_BEFORE_16_3_XCODE_SINCE_16 = $(WK_XCODE_BEFORE_16_3_$(XCODE_VERSION_MINOR));
WK_XCODE_BEFORE_16_3_1600 = YES;
WK_XCODE_BEFORE_16_3_1610 = YES;
WK_XCODE_BEFORE_16_3_1620 = YES;

WK_XCODE_16_3 = $(WK_XCODE_16_3_$(WK_XCODE_BEFORE_16_3));
WK_XCODE_16_3_ = _XCODE_SINCE_16_3;
WK_XCODE_16_3_YES = _XCODE_BEFORE_16_3;
9 changes: 9 additions & 0 deletions JSTests/microbenchmarks/array-prototype-includes-bigint.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
for (var i = 0; i < 1e5; ++i) {
[
0n,1n,2n,3n,4n,5n,6n,7n,8n,9n,10n,11n,12n,13n,14n,15n,
31n,30n,29n,28n,27n,26n,25n,24n,23n,22n,21n,20n,19n,
18n,17n,16n,32n,33n,34n,35n,36n,37n,38n,39n,40n,41n,
42n,43n,44n,45n,46n,47n,63n,62n,61n,60n,59n,58n,57n,
56n,55n,54n,53n,52n,51n,50n,49n,
].includes(38n);
}
21 changes: 21 additions & 0 deletions JSTests/microbenchmarks/array-prototype-includes-contiguous.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
const search = { value: 36 };
const array = [
{ value: 0 }, { value: 1 }, { value: 2 }, { value: 3 }, { value: 4 },
{ value: 5 }, { value: 6 }, { value: 7 }, { value: 8 }, { value: 9 },
{ value: 10 }, { value: 11 }, { value: 12 }, { value: 13 }, { value: 14 },
{ value: 15 }, { value: 31 }, { value: 30 }, { value: 29 }, { value: 28 },
{ value: 27 }, { value: 26 }, { value: 25 }, { value: 24 }, { value: 23 },
{ value: 22 }, { value: 21 }, { value: 20 }, { value: 19 }, { value: 18 },
{ value: 17 }, { value: 16 }, { value: 32 }, { value: 33 }, { value: 34 },
{ value: 35 }, search, { value: 37 }, { value: 38 }, { value: 39 },
{ value: 40 }, { value: 41 }, { value: 42 }, { value: 43 }, { value: 44 },
{ value: 45 }, { value: 46 }, { value: 47 }, { value: 63 }, { value: 62 },
{ value: 61 }, { value: 60 }, { value: 59 }, { value: 58 }, { value: 57 },
{ value: 56 }, { value: 55 }, { value: 54 }, { value: 53 }, { value: 52 },
{ value: 51 }, { value: 50 }, { value: 49 },
];

for (var i = 0; i < 1e6; ++i) {
array.includes(search);
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
const array = [
{ value: 0 }, { value: 1 }, { value: 2 }, { value: 3 }, { value: 4 },
{ value: 5 }, { value: 6 }, { value: 7 }, { value: 8 }, { value: 9 },
{ value: 10 }, { value: 11 }, { value: 12 }, { value: 13 }, { value: 14 },
{ value: 15 }, { value: 31 }, { value: 30 }, { value: 29 }, { value: 28 },
{ value: 27 }, { value: 26 }, { value: 25 }, { value: 24 }, { value: 23 },
{ value: 22 }, { value: 21 }, { value: 20 }, { value: 19 }, { value: 18 },
{ value: 17 }, { value: 16 }, { value: 32 }, { value: 33 }, { value: 34 },
{ value: 35 }, 3.6, { value: 37 }, { value: 38 }, { value: 39 },
{ value: 40 }, { value: 41 }, { value: 42 }, { value: 43 }, { value: 44 },
{ value: 45 }, { value: 46 }, { value: 47 }, { value: 63 }, { value: 62 },
{ value: 61 }, { value: 60 }, { value: 59 }, { value: 58 }, { value: 57 },
{ value: 56 }, { value: 55 }, { value: 54 }, { value: 53 }, { value: 52 },
{ value: 51 }, { value: 50 }, { value: 49 },
];

for (var i = 0; i < 1e6; ++i) {
array.includes(3.6);
}

9 changes: 9 additions & 0 deletions JSTests/microbenchmarks/array-prototype-includes-double.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
for (var i = 0; i < 1e6; ++i) {
[
0.2, 1.2, 2.2, 3.2, 4.2, 5.2, 6.2, 7.2, 8.2, 9.2, 10.2, 11.2, 12.2, 13.2, 14.2, 15.2,
31.2, 30.2, 29.2, 28.2, 27.2, 26.2, 25.2, 24.2, 23.2, 22.2, 21.2, 20.2, 19.2, 18.2,
17.2, 16.2, 32.2, 33.2, 34.2, 35.2, 36.2, 37.2, 38.2, 39.2, 40.2, 41.2, 42.2, 43.2,
44.2, 45.2, 46.2, 47.2, 63.2, 62.2, 61.2, 60.2, 59.2, 58.2, 57.2, 56.2, 55.2, 54.2,
53.2, 52.2, 51.2, 50.2, 49.2,
].includes(38.2);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
const array = [
{ value: 0 }, { value: 1 }, { value: 2 }, { value: 3 }, { value: 4 },
{ value: 5 }, { value: 6 }, { value: 7 }, { value: 8 }, { value: 9 },
{ value: 10 }, { value: 11 }, { value: 12 }, { value: 13 }, { value: 14 },
{ value: 15 }, { value: 31 }, { value: 30 }, { value: 29 }, { value: 28 },
{ value: 27 }, { value: 26 }, { value: 25 }, { value: 24 }, { value: 23 },
{ value: 22 }, { value: 21 }, { value: 20 }, { value: 19 }, { value: 18 },
{ value: 17 }, { value: 16 }, { value: 32 }, { value: 33 }, { value: 34 },
{ value: 35 }, 3, { value: 37 }, { value: 38 }, { value: 39 },
{ value: 40 }, { value: 41 }, { value: 42 }, { value: 43 }, { value: 44 },
{ value: 45 }, { value: 46 }, { value: 47 }, { value: 63 }, { value: 62 },
{ value: 61 }, { value: 60 }, { value: 59 }, { value: 58 }, { value: 57 },
{ value: 56 }, { value: 55 }, { value: 54 }, { value: 53 }, { value: 52 },
{ value: 51 }, { value: 50 }, { value: 49 },
];

for (var i = 0; i < 1e6; ++i) {
array.includes(3);
}

11 changes: 11 additions & 0 deletions JSTests/microbenchmarks/array-prototype-includes-int32.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
function test(array, searchElement) {
return array.includes(searchElement);
}
noInline(test);

var array = new Array(1024);
for (var i = 0; i < array.length; i++)
array[i] = i;

for (var i = 0; i < 1e6; ++i)
test(array, 512);
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
function test(array, value) {
return array.includes(value);
}
noInline(test);

const array = [
"あいうえおかきくけこさしすせそたちつてとなにぬねの",
"かきくけこさしすせそたちつてとなにぬねのはひふへほ",
"さしすせそたちつてとなにぬねのはひふへほまみむめも",
"たちつてとなにぬねのはひふへほまみむめもやゆよらり",
"なにぬねのはひふへほまみむめもやゆよらりるれろわを",
"はひふへほまみむめもやゆよらりるれろわをんあいうえ",
"まみむめもやゆよらりるれろわをんあいうえおかきくけ",
"やゆよらりるれろわをんあいうえおかきくけこさしすせ",
"らりるれろわをんあいうえおかきくけこさしすせそたち",
"わをんあいうえおかきくけこさしすせそたちつてとなに",
"んあいうえおかきくけこさしすせそたちつてとなにぬね",
"ひふへほまみむめもやゆよらりるれろわをんあいうえお",
"ふへほまみむめもやゆよらりるれろわをんあいうえおか",
"へほまみむめもやゆよらりるれろわをんあいうえおかき",
"ほまみむめもやゆよらりるれろわをんあいうえおかきく",
"みむめもやゆよらりるれろわをんあいうえおかきくけこ",
"むめもやゆよらりるれろわをんあいうえおかきくけこさ",
"めもやゆよらりるれろわをんあいうえおかきくけこさし",
"もやゆよらりるれろわをんあいうえおかきくけこさしす",
"ゆよらりるれろわをんあいうえおかきくけこさしすせそ",
"よらりるれろわをんあいうえおかきくけこさしすせそた",
"らりるれろわをんあいうえおかきくけこさしすせそたち",
"りるれろわをんあいうえおかきくけこさしすせそたちつ",
"るれろわをんあいうえおかきくけこさしすせそたちつて",
"れろわをんあいうえおかきくけこさしすせそたちつてと",
"ろわをんあいうえおかきくけこさしすせそたちつてとな",
];

for (var i = 0; i < 1e6; ++i)
test(array, "もやゆよらりるれろわをんあいうえおかきくけこさしす");
36 changes: 36 additions & 0 deletions JSTests/microbenchmarks/array-prototype-includes-string-16.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
function test(array, value) {
return array.includes(value);
}
noInline(test);

const array = [
"あいうえおかきくけこさしすせそたちつてとなにぬねの",
"かきくけこさしすせそたちつてとなにぬねのはひふへほ",
"さしすせそたちつてとなにぬねのはひふへほまみむめも",
"たちつてとなにぬねのはひふへほまみむめもやゆよらり",
"なにぬねのはひふへほまみむめもやゆよらりるれろわを",
"はひふへほまみむめもやゆよらりるれろわをんあいうえ",
"まみむめもやゆよらりるれろわをんあいうえおかきくけ",
"やゆよらりるれろわをんあいうえおかきくけこさしすせ",
"らりるれろわをんあいうえおかきくけこさしすせそたち",
"わをんあいうえおかきくけこさしすせそたちつてとなに",
"んあいうえおかきくけこさしすせそたちつてとなにぬね",
"ひふへほまみむめもやゆよらりるれろわをんあいうえお",
"ふへほまみむめもやゆよらりるれろわをんあいうえおか",
"へほまみむめもやゆよらりるれろわをんあいうえおかき",
"ほまみむめもやゆよらりるれろわをんあいうえおかきく",
"みむめもやゆよらりるれろわをんあいうえおかきくけこ",
"むめもやゆよらりるれろわをんあいうえおかきくけこさ",
"めもやゆよらりるれろわをんあいうえおかきくけこさし",
"もやゆよらりるれろわをんあいうえおかきくけこさしす",
"ゆよらりるれろわをんあいうえおかきくけこさしすせそ",
"よらりるれろわをんあいうえおかきくけこさしすせそた",
"らりるれろわをんあいうえおかきくけこさしすせそたち",
"りるれろわをんあいうえおかきくけこさしすせそたちつ",
"るれろわをんあいうえおかきくけこさしすせそたちつて",
"れろわをんあいうえおかきくけこさしすせそたちつてと",
"ろわをんあいうえおかきくけこさしすせそたちつてとな",
];

for (var i = 0; i < 1e6; ++i)
test(array, "もやゆよらりるれろわをん" + "あいうえおかきくけこさしす");
35 changes: 35 additions & 0 deletions JSTests/microbenchmarks/array-prototype-includes-string-const.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
function test(array, index) {
return array.includes(index);
}
noInline(test);

const array = [
"dEXt0TxZQQQasd999!@#$%d^&",
"AAZZ!!@@**CC77zzxx1122d33",
"HelloWorldHeldloWorlddABC",
"abcABC123!@#xfyzXYZ!$d%+=",
"Zyx9!Zyx9!Zyx9!Zyx9!!d???",
"LoremIpsum1234!@#$LordemI",
"QQQQQQQQQQqqqqqqqqqq-----",
"&&&&1111%%%%2222@@@@33f33",
"TestStringasdVariousChars",
"RandomASCII~d~~~====?????",
"^^^^#####^^^f^^+++++.....",
"AZaz09!?AZaz09!?AZaz09!?%",
"Foobar##1122Foobar##1122F",
"9876543210!@d#$%^&*()_+=-",
"OneTwo3FourFive6Seven8Nin",
"Zwxy000111Zwxy000111Zwxy0",
"Spark!!!Spark???Spark%%%S",
"ShortAndSweet123??!!Short",
"BenchmarkCaseHere12345!!?",
"MultiLineString###000xxx@",
"ABCDEFGHabcdfefgh1234!!!!",
"111122223333d4444!!!!####",
"EndlessVariety?!@#$%^^^^^",
"PqrstUVWX9876pqrstUVWX987",
"MixItUpWith5omeWe!rdCHARS",
"FinallyZzYyXx!@#$4321)(*&",
];
for (var i = 0; i < 1e6; ++i)
test(array, "BenchmarkCaseHere12345!!?");
35 changes: 35 additions & 0 deletions JSTests/microbenchmarks/array-prototype-includes-string.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
function test(array, index) {
return array.includes(index);
}
noInline(test);

const array = [
"dEXt0TxZQQQasd999!@#$%d^&",
"AAZZ!!@@**CC77zzxx1122d33",
"HelloWorldHeldloWorlddABC",
"abcABC123!@#xfyzXYZ!$d%+=",
"Zyx9!Zyx9!Zyx9!Zyx9!!d???",
"LoremIpsum1234!@#$LordemI",
"QQQQQQQQQQqqqqqqqqqq-----",
"&&&&1111%%%%2222@@@@33f33",
"TestStringasdVariousChars",
"RandomASCII~d~~~====?????",
"^^^^#####^^^f^^+++++.....",
"AZaz09!?AZaz09!?AZaz09!?%",
"Foobar##1122Foobar##1122F",
"9876543210!@d#$%^&*()_+=-",
"OneTwo3FourFive6Seven8Nin",
"Zwxy000111Zwxy000111Zwxy0",
"Spark!!!Spark???Spark%%%S",
"ShortAndSweet123??!!Short",
"BenchmarkCaseHere12345!!?",
"MultiLineString###000xxx@",
"ABCDEFGHabcdfefgh1234!!!!",
"111122223333d4444!!!!####",
"EndlessVariety?!@#$%^^^^^",
"PqrstUVWX9876pqrstUVWX987",
"MixItUpWith5omeWe!rdCHARS",
"FinallyZzYyXx!@#$4321)(*&",
];
for (var i = 0; i < 1e6; ++i)
test(array, "Benchmark" + "CaseHere12345!!?");
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const array = [
{ value: 0 }, { value: 1 }, { value: 2 }, { value: 3 }, { value: 4 },
{ value: 5 }, { value: 6 }, { value: 7 }, { value: 8 }, { value: 9 },
{ value: 10 }, { value: 11 }, { value: 12 }, { value: 13 }, { value: 14 },
{ value: 15 }, { value: 31 }, { value: 30 }, { value: 29 }, { value: 28 },
{ value: 27 }, { value: 26 }, { value: 25 }, { value: 24 }, { value: 23 },
{ value: 22 }, { value: 21 }, { value: 20 }, { value: 19 }, { value: 18 },
{ value: 17 }, { value: 16 }, { value: 32 }, { value: 33 }, { value: 34 },
{ value: 35 }, 3, { value: 37 }, { value: 38 }, { value: 39 },
{ value: 40 }, { value: 41 }, { value: 42 }, { value: 43 }, { value: 44 },
{ value: 45 }, { value: 46 }, { value: 47 }, { value: 63 }, { value: 62 },
{ value: 61 }, { value: 60 }, { value: 59 }, { value: 58 }, { value: 57 },
{ value: 56 }, { value: 55 }, { value: 54 }, { value: 53 }, { value: 52 },
{ value: 51 }, { value: 50 }, { value: 49 },
];

for (var i = 0; i < 1e6; ++i) {
array.indexOf(3);
}
Loading

0 comments on commit fb27d2f

Please sign in to comment.