summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pompili2020-06-22 14:58:54 +0200
committerMarco Pompili2020-06-22 14:58:54 +0200
commit2e3ed4cc96752af2c45cb880876001549e07acfb (patch)
treefad320575e5cdf365ee414a6768bb27ce24ca7b6
parent31362e20b8bb64b017925bd060778280f891ed3e (diff)
downloadaur-2e3ed4cc96752af2c45cb880876001549e07acfb.tar.gz
Version 8.3.110.13-1
-rw-r--r--.SRCINFO6
-rw-r--r--PKGBUILD18
-rw-r--r--template-utils-fix.patch12
-rw-r--r--v8-icu67.patch150
4 files changed, 181 insertions, 5 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 09fe8d2351a1..e7b02f59bda9 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -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
diff --git a/PKGBUILD b/PKGBUILD
index 886e2fc94b00..61be058c5509 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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;