Modified: trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj (275855 => 275856)
--- trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2021-04-13 01:25:31 UTC (rev 275855)
+++ trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2021-04-13 02:04:15 UTC (rev 275856)
@@ -1402,6 +1402,7 @@
A1D792FF1B43864B004516F5 /* IntlNumberFormatConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A1D792F91B43864B004516F5 /* IntlNumberFormatConstructor.h */; };
A1D793011B43864B004516F5 /* IntlNumberFormatPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A1D792FB1B43864B004516F5 /* IntlNumberFormatPrototype.h */; };
A38D250E25800D440042BFDD /* JSArrayBufferPrototypeInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = A38D250D25800D430042BFDD /* JSArrayBufferPrototypeInlines.h */; };
+ A3EE8543262514B000FC9B8D /* IntlWorkaround.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A37619402625127C00CBCBA9 /* IntlWorkaround.cpp */; };
A3FF9BC72234749100B1A9AB /* YarrFlags.h in Headers */ = {isa = PBXBuildFile; fileRef = A3FF9BC52234746600B1A9AB /* YarrFlags.h */; settings = {ATTRIBUTES = (Private, ); }; };
A503FA1A188E0FB000110F14 /* _javascript_CallFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = A503FA14188E0FAF00110F14 /* _javascript_CallFrame.h */; };
A503FA1E188E0FB000110F14 /* JSJavaScriptCallFramePrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A503FA18188E0FB000110F14 /* JSJavaScriptCallFramePrototype.h */; };
@@ -4419,6 +4420,7 @@
A1E0451B1C25B4B100BB663C /* StringPrototype.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = StringPrototype.js; sourceTree = "<group>"; };
A1FE1EB01C2C537E00A289FF /* DatePrototype.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode._javascript_; path = DatePrototype.js; sourceTree = "<group>"; };
A27958D7FA1142B0AC9E364D /* WasmContextInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WasmContextInlines.h; sourceTree = "<group>"; };
+ A37619402625127C00CBCBA9 /* IntlWorkaround.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IntlWorkaround.cpp; sourceTree = "<group>"; };
A38D250D25800D430042BFDD /* JSArrayBufferPrototypeInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSArrayBufferPrototypeInlines.h; sourceTree = "<group>"; };
A3AFF92B245A3CF900C9BA3B /* IntlLocale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntlLocale.h; sourceTree = "<group>"; };
A3AFF92C245A3CFA00C9BA3B /* IntlLocaleConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntlLocaleConstructor.h; sourceTree = "<group>"; };
@@ -7288,9 +7290,9 @@
14A1563010966365006FA260 /* DateInstanceCache.h */,
BCD203470E17135E002C7E82 /* DatePrototype.cpp */,
BCD203480E17135E002C7E82 /* DatePrototype.h */,
- FE9F3FC626163CA90069E89F /* DeferTermination.h */,
534638761E71E06E00F12AC1 /* DeferredWorkTimer.cpp */,
534638741E70DDEC00F12AC1 /* DeferredWorkTimer.h */,
+ FE9F3FC626163CA90069E89F /* DeferTermination.h */,
169948EDE68D4054B01EF797 /* DefinePropertyAttributes.h */,
734B655423F4A33100A069D1 /* DeletePropertySlot.h */,
0FE0500F1AA9091100D33B33 /* DirectArguments.cpp */,
@@ -7476,6 +7478,7 @@
E3F2193324C7882A003AE453 /* IntlSegments.h */,
E3F2193224C7882A003AE453 /* IntlSegmentsPrototype.cpp */,
E3F2193624C7882B003AE453 /* IntlSegmentsPrototype.h */,
+ A37619402625127C00CBCBA9 /* IntlWorkaround.cpp */,
0F275F2C1ECE079600620D47 /* Intrinsic.cpp */,
86BF642A148DB2B5004DE36A /* Intrinsic.h */,
8B9F6D551D5912FA001C739F /* IterationKind.h */,
@@ -9230,7 +9233,6 @@
8BC0648B1E1ABA9400B2B8CA /* AsyncGeneratorFunctionConstructor.h in Headers */,
8BC0648A1E1ABA7B00B2B8CA /* AsyncGeneratorFunctionPrototype.h in Headers */,
8BC064921E1ADCC400B2B8CA /* AsyncGeneratorPrototype.h in Headers */,
- BCE2FAFF26091782000A510F /* WeakGCHashTable.h in Headers */,
8B3BF5E41E3D368B0076A87A /* AsyncGeneratorPrototype.lut.h in Headers */,
8BC064961E1D845C00B2B8CA /* AsyncIteratorPrototype.h in Headers */,
6A38CFAA1E32B5AB0060206F /* AsyncStackTrace.h in Headers */,
@@ -9498,6 +9500,7 @@
0FC712DF17CD877C008CC93C /* DeferredCompilationCallback.h in Headers */,
FE5068651AE246390009DAB7 /* DeferredSourceDump.h in Headers */,
534638751E70DDEC00F12AC1 /* DeferredWorkTimer.h in Headers */,
+ FE9F3FC826163CA90069E89F /* DeferTermination.h in Headers */,
473DA4A4764C45FE871B0485 /* DefinePropertyAttributes.h in Headers */,
0FBB73BB1DEF8645002C009E /* DeleteAllCodeEffort.h in Headers */,
7311FA32240DB1D3003D48DB /* DeleteByIdVariant.h in Headers */,
@@ -9511,7 +9514,6 @@
0F620177143FCD3F0068B77C /* DFGAbstractValue.h in Headers */,
0F4F11EB209D426600709654 /* DFGAbstractValueClobberEpoch.h in Headers */,
0FD3E4021B618AAF00C80E1E /* DFGAdaptiveInferredPropertyValueWatchpoint.h in Headers */,
- FE9F3FB92613C7890069E89F /* ResourceExhaustion.h in Headers */,
0F18D3D01B55A6E0002C5C9F /* DFGAdaptiveStructureWatchpoint.h in Headers */,
0F66E16B14DF3F1600B7B2E4 /* DFGAdjacencyList.h in Headers */,
0F1E3A461534CBAF000F9456 /* DFGArgumentPosition.h in Headers */,
@@ -9666,7 +9668,6 @@
0F9E32641B05AB0400801ED5 /* DFGStoreBarrierInsertionPhase.h in Headers */,
0FC20CB61852E2C600C9E954 /* DFGStrengthReductionPhase.h in Headers */,
0F63947815DCE34B006A597C /* DFGStructureAbstractValue.h in Headers */,
- FE9F3FC826163CA90069E89F /* DeferTermination.h in Headers */,
0F50AF3C193E8B3900674EE8 /* DFGStructureClobberState.h in Headers */,
0F2FCCFF18A60070001A27F8 /* DFGThreadData.h in Headers */,
0FC097A2146B28CC00CF2442 /* DFGThunks.h in Headers */,
@@ -9696,7 +9697,6 @@
14386A751DD69895008652C4 /* DirectEvalExecutable.h in Headers */,
0F37308F1C0CD68500052BFA /* DisallowMacroScratchRegisterUsage.h in Headers */,
FE54DEFF1E8D76FA00A892C5 /* DisallowScope.h in Headers */,
- BCE2FAFB260916EF000A510F /* WeakGCSet.h in Headers */,
FE54DEFB1E8C6D8800A892C5 /* DisallowVMEntry.h in Headers */,
0FF42731158EBD54004CB9FF /* Disassembler.h in Headers */,
E31618131EC5FE170006A218 /* DOMAnnotation.h in Headers */,
@@ -10354,7 +10354,6 @@
14F79F70216EAFD200046D39 /* Opcode.h in Headers */,
FE64872E2141D04800AB0D3E /* OpcodeInlines.h in Headers */,
14A4680D216FA56A000D2B1A /* OpcodeSize.h in Headers */,
- BCE2FAFD260916FF000A510F /* WeakGCSetInlines.h in Headers */,
0F2BDC2C151FDE9100CD8910 /* Operands.h in Headers */,
A70447EA17A0BD4600F5898E /* OperandsInlines.h in Headers */,
BC18C4480E16F5CD00B34460 /* Operations.h in Headers */,
@@ -10461,6 +10460,7 @@
A5BA15EA182340B400A82E69 /* RemoteInspectorConstants.h in Headers */,
992F56B71E4E84B20035953B /* RemoteInspectorXPCConnection.h in Headers */,
0F24E55117EE274900ABB217 /* Repatch.h in Headers */,
+ FE9F3FB92613C7890069E89F /* ResourceExhaustion.h in Headers */,
869EBCB70E8C6D4A008722CC /* ResultType.h in Headers */,
FE3B642F25D6FB4D001ADDB4 /* RootMarkReason.h in Headers */,
0F2C63AA1E4FA42E00C13839 /* RunningScope.h in Headers */,
@@ -10687,8 +10687,11 @@
0F919D2615853CE3004A4E7D /* Watchpoint.h in Headers */,
142E313C134FF0A600AFADB5 /* Weak.h in Headers */,
14E84F9F14EE1ACC00D6D5D4 /* WeakBlock.h in Headers */,
+ BCE2FAFF26091782000A510F /* WeakGCHashTable.h in Headers */,
14BFCE6910CDB1FC00364CCE /* WeakGCMap.h in Headers */,
AD86A93E1AA4D88D002FE77F /* WeakGCMapInlines.h in Headers */,
+ BCE2FAFB260916EF000A510F /* WeakGCSet.h in Headers */,
+ BCE2FAFD260916FF000A510F /* WeakGCSetInlines.h in Headers */,
14F7256614EE265E00B1652B /* WeakHandleOwner.h in Headers */,
14E84FA214EE1ACC00D6D5D4 /* WeakImpl.h in Headers */,
14BE7D3317135CF400D1807A /* WeakInlines.h in Headers */,
@@ -11563,6 +11566,7 @@
5C4196622270E0000047B7CD /* InspectorBackendDispatcherCompatibility.cpp in Sources */,
E399AEC32559457F00B78485 /* IntlDateTimeFormat.cpp in Sources */,
E366441E254409B30001876F /* IntlListFormat.cpp in Sources */,
+ A3EE8543262514B000FC9B8D /* IntlWorkaround.cpp in Sources */,
E38E8790254B978400F6F9E4 /* JSDateMath.cpp in Sources */,
536B319E1F735F160037FC33 /* LowLevelInterpreter.cpp in Sources */,
DFBC2CA625E6D5B90081BDD1 /* SymbolStubsForSafariCompatibility.mm in Sources */,
Added: trunk/Source/_javascript_Core/runtime/IntlWorkaround.cpp (0 => 275856)
--- trunk/Source/_javascript_Core/runtime/IntlWorkaround.cpp (rev 0)
+++ trunk/Source/_javascript_Core/runtime/IntlWorkaround.cpp 2021-04-13 02:04:15 UTC (rev 275856)
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2021 Sony Interactive Entertainment Inc.
+ *
+ * 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. AND ITS CONTRIBUTORS ``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 ITS 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.
+ */
+
+#include "config.h"
+
+#include <unicode/uvernum.h>
+
+// ICU 69 introduces draft API ubrk_clone and deprecates ubrk_safeClone.
+#if U_ICU_VERSION_MAJOR_NUM >= 69
+#define HAVE_ICU_UBRK_CLONE 1
+#endif
+
+#if defined(U_HIDE_DRAFT_API)
+#undef U_HIDE_DRAFT_API
+#endif
+#include <unicode/ubrk.h>
+
+namespace JSC {
+
+UBreakIterator* cloneUBreakIterator(const UBreakIterator*, UErrorCode*);
+
+UBreakIterator* cloneUBreakIterator(const UBreakIterator* iterator, UErrorCode* status)
+{
+#if HAVE(ICU_UBRK_CLONE)
+ return ubrk_clone(iterator, status);
+#else
+ return ubrk_safeClone(iterator, nullptr, nullptr, status);
+#endif
+}
+
+} // namespace JSC