diff options
author | Marco Pompili | 2020-06-22 14:58:54 +0200 |
---|---|---|
committer | Marco Pompili | 2020-06-22 14:58:54 +0200 |
commit | 2e3ed4cc96752af2c45cb880876001549e07acfb (patch) | |
tree | fad320575e5cdf365ee414a6768bb27ce24ca7b6 | |
parent | 31362e20b8bb64b017925bd060778280f891ed3e (diff) | |
download | aur-2e3ed4cc96752af2c45cb880876001549e07acfb.tar.gz |
Version 8.3.110.13-1
-rw-r--r-- | .SRCINFO | 6 | ||||
-rw-r--r-- | PKGBUILD | 18 | ||||
-rw-r--r-- | template-utils-fix.patch | 12 | ||||
-rw-r--r-- | v8-icu67.patch | 150 |
4 files changed, 181 insertions, 5 deletions
@@ -1,6 +1,6 @@ pkgbase = v8 pkgdesc = Fast and modern Javascript engine used in Google Chrome. - pkgver = 8.0.426.26 + pkgver = 8.3.110.13 pkgrel = 1 url = https://v8.dev arch = i686 @@ -32,11 +32,15 @@ pkgbase = v8 source = v8.pc source = v8_libbase.pc source = v8_libplatform.pc + source = v8-icu67.patch + source = template-utils-fix.patch source = d8 sha256sums = SKIP sha256sums = 3616bcfb15af7cd5a39bc0f223b2a52f15883a4bc8cfcfb291837c7421363d75 sha256sums = efb37bd706e6535abfa20c77bb16597253391619dae275627312d00ee7332fa3 sha256sums = ae23d543f655b4d8449f98828d0aff6858a777429b9ebdd2e23541f89645d4eb + sha256sums = 14ad0b8cb494a6bd73bbb792a2da8a9e3e521b5f62678ae15b9324516c5c897e + sha256sums = 75b59cbb31fa15302aaf698f8a681c212b670af3c47973868960ce1fa6ebdb98 sha256sums = 6abb07ab1cf593067d19028f385bd7ee52196fc644e315c388f08294d82ceff0 pkgname = v8 @@ -6,7 +6,7 @@ # Contributor: David Flemström <david.flemstrom@gmail.com> pkgname=v8 -pkgver=8.0.426.26 +pkgver=8.3.110.13 pkgrel=1 pkgdesc="Fast and modern Javascript engine used in Google Chrome." arch=('i686' 'x86_64') @@ -19,11 +19,15 @@ source=("depot_tools::git+https://chromium.googlesource.com/chromium/tools/depot "v8.pc" "v8_libbase.pc" "v8_libplatform.pc" - "d8") + "v8-icu67.patch" + "template-utils-fix.patch" + "d8") sha256sums=('SKIP' '3616bcfb15af7cd5a39bc0f223b2a52f15883a4bc8cfcfb291837c7421363d75' 'efb37bd706e6535abfa20c77bb16597253391619dae275627312d00ee7332fa3' 'ae23d543f655b4d8449f98828d0aff6858a777429b9ebdd2e23541f89645d4eb' + '14ad0b8cb494a6bd73bbb792a2da8a9e3e521b5f62678ae15b9324516c5c897e' + '75b59cbb31fa15302aaf698f8a681c212b670af3c47973868960ce1fa6ebdb98' '6abb07ab1cf593067d19028f385bd7ee52196fc644e315c388f08294d82ceff0') # @@ -112,12 +116,18 @@ prepare() ./build/linux/unbundle/replace_gn_files.py --undo --system-libraries icu fi - msg2 "Syncing, this can take a while..." - gclient sync --revision ${pkgver} + msg2 "Syncing, this might take a while..." + gclient sync -D --revision ${pkgver} msg2 "Using system libraries for ICU" ./build/linux/unbundle/replace_gn_files.py --system-libraries icu + msg2 "Applying fix for ICU 67.1" + patch -p2 < ../v8-icu67.patch + + msg2 "Applying fix for templates" + patch -p2 < ../template-utils-fix.patch + sed "s/@VERSION@/${pkgver}/g" -i "${srcdir}/v8.pc" sed "s/@VERSION@/${pkgver}/g" -i "${srcdir}/v8_libbase.pc" sed "s/@VERSION@/${pkgver}/g" -i "${srcdir}/v8_libplatform.pc" diff --git a/template-utils-fix.patch b/template-utils-fix.patch new file mode 100644 index 000000000000..73c995317829 --- /dev/null +++ b/template-utils-fix.patch @@ -0,0 +1,12 @@ +diff --git a/v8/src/base/template-utils.h b/src/base/template-utils.h +index 8f89672e1a..64a4cb0996 100644 +--- a/v8/src/base/template-utils.h ++++ b/v8/src/base/template-utils.h +@@ -6,6 +6,7 @@ + #define V8_BASE_TEMPLATE_UTILS_H_ + + #include <array> ++#include <ostream> + #include <functional> + #include <type_traits> + #include <utility> diff --git a/v8-icu67.patch b/v8-icu67.patch new file mode 100644 index 000000000000..1fc295c9e3b0 --- /dev/null +++ b/v8-icu67.patch @@ -0,0 +1,150 @@ +diff --git a/src/objects/js-number-format.cc b/src/objects/js-number-format.cc +index 7d50f947f7..85f388a799 100644 +--- a/v8/src/objects/js-number-format.cc ++++ b/v8/src/objects/js-number-format.cc +@@ -1239,44 +1239,34 @@ MaybeHandle<JSNumberFormat> JSNumberFormat::New(Isolate* isolate, + } + + namespace { +-Maybe<icu::UnicodeString> IcuFormatNumber( ++Maybe<bool> IcuFormatNumber( + Isolate* isolate, + const icu::number::LocalizedNumberFormatter& number_format, +- Handle<Object> numeric_obj, icu::FieldPositionIterator* fp_iter) { ++ Handle<Object> numeric_obj, icu::number::FormattedNumber* formatted) { + // If it is BigInt, handle it differently. + UErrorCode status = U_ZERO_ERROR; +- icu::number::FormattedNumber formatted; + if (numeric_obj->IsBigInt()) { + Handle<BigInt> big_int = Handle<BigInt>::cast(numeric_obj); + Handle<String> big_int_string; + ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, big_int_string, + BigInt::ToString(isolate, big_int), +- Nothing<icu::UnicodeString>()); +- formatted = number_format.formatDecimal( ++ Nothing<bool>()); ++ *formatted = number_format.formatDecimal( + {big_int_string->ToCString().get(), big_int_string->length()}, status); + } else { + double number = numeric_obj->IsNaN() + ? std::numeric_limits<double>::quiet_NaN() + : numeric_obj->Number(); +- formatted = number_format.formatDouble(number, status); ++ *formatted = number_format.formatDouble(number, status); + } + if (U_FAILURE(status)) { + // This happen because of icu data trimming trim out "unit". + // See https://bugs.chromium.org/p/v8/issues/detail?id=8641 + THROW_NEW_ERROR_RETURN_VALUE(isolate, + NewTypeError(MessageTemplate::kIcuError), +- Nothing<icu::UnicodeString>()); +- } +- if (fp_iter) { +- formatted.getAllFieldPositions(*fp_iter, status); +- } +- icu::UnicodeString result = formatted.toString(status); +- if (U_FAILURE(status)) { +- THROW_NEW_ERROR_RETURN_VALUE(isolate, +- NewTypeError(MessageTemplate::kIcuError), +- Nothing<icu::UnicodeString>()); ++ Nothing<bool>()); + } +- return Just(result); ++ return Just(true); + } + + } // namespace +@@ -1287,10 +1277,16 @@ MaybeHandle<String> JSNumberFormat::FormatNumeric( + Handle<Object> numeric_obj) { + DCHECK(numeric_obj->IsNumeric()); + +- Maybe<icu::UnicodeString> maybe_format = +- IcuFormatNumber(isolate, number_format, numeric_obj, nullptr); ++ icu::number::FormattedNumber formatted; ++ Maybe<bool> maybe_format = ++ IcuFormatNumber(isolate, number_format, numeric_obj, &formatted); + MAYBE_RETURN(maybe_format, Handle<String>()); +- return Intl::ToString(isolate, maybe_format.FromJust()); ++ UErrorCode status = U_ZERO_ERROR; ++ icu::UnicodeString result = formatted.toString(status); ++ if (U_FAILURE(status)) { ++ THROW_NEW_ERROR(isolate, NewTypeError(MessageTemplate::kIcuError), String); ++ } ++ return Intl::ToString(isolate, result); + } + + namespace { +@@ -1403,12 +1399,18 @@ std::vector<NumberFormatSpan> FlattenRegionsToParts( + } + + namespace { +-Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, +- icu::FieldPositionIterator* fp_iter, ++Maybe<int> ConstructParts(Isolate* isolate, ++ icu::number::FormattedNumber* formatted, + Handle<JSArray> result, int start_index, + Handle<Object> numeric_obj, bool style_is_unit) { ++ UErrorCode status = U_ZERO_ERROR; ++ icu::UnicodeString formatted_text = formatted->toString(status); ++ if (U_FAILURE(status)) { ++ THROW_NEW_ERROR_RETURN_VALUE( ++ isolate, NewTypeError(MessageTemplate::kIcuError), Nothing<int>()); ++ } + DCHECK(numeric_obj->IsNumeric()); +- int32_t length = formatted.length(); ++ int32_t length = formatted_text.length(); + int index = start_index; + if (length == 0) return Just(index); + +@@ -1417,13 +1419,14 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, + // other region covers some part of the formatted string. It's possible + // there's another field with exactly the same begin and end as this backdrop, + // in which case the backdrop's field_id of -1 will give it lower priority. +- regions.push_back(NumberFormatSpan(-1, 0, formatted.length())); ++ regions.push_back(NumberFormatSpan(-1, 0, formatted_text.length())); + + { +- icu::FieldPosition fp; +- while (fp_iter->next(fp)) { +- regions.push_back(NumberFormatSpan(fp.getField(), fp.getBeginIndex(), +- fp.getEndIndex())); ++ icu::ConstrainedFieldPosition cfp; ++ cfp.constrainCategory(UFIELD_CATEGORY_NUMBER); ++ while (formatted->nextPosition(cfp, status)) { ++ regions.push_back( ++ NumberFormatSpan(cfp.getField(), cfp.getStart(), cfp.getLimit())); + } + } + +@@ -1445,7 +1448,7 @@ Maybe<int> ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, + Handle<String> substring; + ASSIGN_RETURN_ON_EXCEPTION_VALUE( + isolate, substring, +- Intl::ToString(isolate, formatted, part.begin_pos, part.end_pos), ++ Intl::ToString(isolate, formatted_text, part.begin_pos, part.end_pos), + Nothing<int>()); + Intl::AddElement(isolate, result, index, field_type_string, substring); + ++index; +@@ -1465,9 +1468,9 @@ MaybeHandle<JSArray> JSNumberFormat::FormatToParts( + number_format->icu_number_formatter().raw(); + CHECK_NOT_NULL(fmt); + +- icu::FieldPositionIterator fp_iter; +- Maybe<icu::UnicodeString> maybe_format = +- IcuFormatNumber(isolate, *fmt, numeric_obj, &fp_iter); ++ icu::number::FormattedNumber formatted; ++ Maybe<bool> maybe_format = ++ IcuFormatNumber(isolate, *fmt, numeric_obj, &formatted); + MAYBE_RETURN(maybe_format, Handle<JSArray>()); + + UErrorCode status = U_ZERO_ERROR; +@@ -1477,8 +1480,7 @@ MaybeHandle<JSArray> JSNumberFormat::FormatToParts( + + Handle<JSArray> result = factory->NewJSArray(0); + Maybe<int> maybe_format_to_parts = +- ConstructParts(isolate, maybe_format.FromJust(), &fp_iter, result, 0, +- numeric_obj, style_is_unit); ++ ConstructParts(isolate, &formatted, result, 0, numeric_obj, style_is_unit); + MAYBE_RETURN(maybe_format_to_parts, Handle<JSArray>()); + + return result; |