-
-
Notifications
You must be signed in to change notification settings - Fork 34.2k
V8 icu patch 4.x #15562
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
V8 icu patch 4.x #15562
Conversation
|
ci: https://ci.nodejs.org/job/node-test-pull-request/10205/ it is worth mentioning some of the tests are failing in CI due to timeouts... I believe this is due to snapshots not having been re-enabled on 4.x ci 4.8.4 for comparison: https://ci.nodejs.org/job/node-test-commit/12533/ |
|
@nodejs/build are the errors we are seeing in V8 CI due to snapshots being turned off? |
Qantas94Heavy
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry for not making this clear, but all of the instances of %_Call need to be changed to %_CallFunction, as V8 bug 4413 was not merged into V8 4.5.
deps/v8/src/i18n.js
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
var match = %_CallFunction(location, GetTimezoneNameLocationPartRE(), StringMatch);
deps/v8/src/i18n.js
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
var separator = %_CallFunction(match[2], 0, 1, StringSubstring);
var parts = %_CallFunction(match[2], separator, StringSplit);
deps/v8/src/i18n.js
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
var locations = %_CallFunction(match[3], '/', StringSplit);
jasnell
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
rubber stamp lgtm
0eed431 to
de847b7
Compare
|
CI: https://ci.nodejs.org/job/node-test-pull-request/10270/ /cc @nodejs/lts @nodejs/v8 @bnoordhuis |
deps/v8/src/i18n.js
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
%_CallFunction() takes the receiver as its first argument and the function as its last argument, everything in between are function arguments. I.e., this should read:
var match = %_CallFunction(location, GetTimezoneNameLocationPartRE(), StringMatch);(Which is > 80 columns, by the way.)
deps/v8/src/i18n.js
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Likewise, this should read:
var separator = %_CallFunction(match[2], 0, 1, StringSubstring);I'll stop pointing it out from here on.
de847b7 to
9158d6c
Compare
|
good catch @bnoordhuis. fixed ci: https://ci.nodejs.org/job/node-test-pull-request/10288/ |
bnoordhuis
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM but apparently the v4.x branch doesn't build on the V8 buildbots... the only reason the rhel72s-s390x buildbot is green is because it skips the build entirely.
deps/v8/src/i18n.js
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just noting that this is over 80 columns. I can live with that, though.
|
Here's a run on v4.8.4 to confirm that ci is just not working https://ci.nodejs.org/job/node-test-commit-v8-linux/933/ If that is the case I will attempt to run the tests manually edit: confirmed 4.x V8 ci is broken. |
|
I cannot get This appears to be broken in v4.8.4 as well, testing v4.8.3 rn edit: confirm that this fails in v4.8.3 as well /cc @nodejs/v8 |
|
Maybe because that version of V8 requires some old version of GCC? |
|
@MylesBorins Untested, but I speculate the google-clang (or whatever you call it) that diff --git a/Makefile b/Makefile
index d917056b11..93356930af 100644
--- a/Makefile
+++ b/Makefile
@@ -191,7 +191,8 @@ endif
v8:
tools/make-v8.sh
- $(MAKE) -C deps/v8 $(V8_ARCH).$(BUILDTYPE_LOWER) $(V8_BUILD_OPTIONS)
+ $(MAKE) -C deps/v8 $(V8_ARCH).$(BUILDTYPE_LOWER) \
+ $(V8_BUILD_OPTIONS) GYPFLAGS="-Dclang=0"
ifeq ($(NODE_TARGET_TYPE),static_library)
test: all(Note: diff with tabs.) |
|
Getting a failure with that patch as well edit: found a patch to V8 that may fix that |
|
Ah, I think that is a bug in |
|
I've got another branch I've put together that attempts to fix this, testing before force pushing over this PR https://github.com/MylesBorins/node/tree/V8-icu-patch-4.x-too I saw failures on both linux + osx when manually testing, will edit this comment with the errors once I have a chance to re-run the tests osx failures appear to be a git problem... ignoreing this one for now to focus on the linux issue |
|
Linux error on new branch edit: looks like this patch will fix it v8/v8@e28183b |
|
It works 🎉 I'm not sure how I feel about introducing ci: https://ci.nodejs.org/job/node-test-pull-request/10610/ edit edit 2: |
Makefile
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you undo this change?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
Original commit message:
Allow ICU to normalize time zones
There's at least one case of a time zone alias: Asia/Kathmandu aliases
Asia/Katmandu. ICU seems to normalize to the (deprecated) latter choice.
V8 internationalization choked on this change; this patch interprets
ICU's output more precisely and allows it.
BUG=chromium:487322
R=jungshik,adamk
LOG=Y
Review URL: https://codereview.chromium.org/1509273007
Cr-Commit-Position: refs/heads/master@{nodejs#32769}
PR-URL: nodejs#15562
Original commit message:
Timezone name check fix
1. Location names with more than one underscores (e.g. Ho_Chi_Minh)
didn't work because of the way capturing works with repeated patterns
in RE. It's now supported by changing the RE to capture the whole string
and splitting on '_' in the next step.
2. Adds support for location names with a hyphen
3. Adds support for timezone ids with three parts (e.g.
American/Argentina/Buenos_Aires)
4. Adds special handling of 'au', 'es' and 'of' in zone ids. They need to be kept in lowercase. (see the full list at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones )
5. Adds regression tests for all the above and make the existing tests
more robust against future ICU changes. ICU canonicalizes zone names to
deprecated names, but it may change. (
http://bugs.icu-project.org/trac/ticket/12044 )
BUG=364374
LOG=Y
Review URL: https://codereview.chromium.org/1529363005
Cr-Commit-Position: refs/heads/master@{nodejs#33097}
PR-URL: nodejs#15562
b99e874 to
0cc8102
Compare
| cctest: all | ||
| @out/$(BUILDTYPE)/$@ | ||
|
|
||
| v8: export GYPFLAGS += -Dclang=0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is something I want explicit sign off on... is it ok to use export here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yep, seems fine.
|
I'm not sure what the clang=0 has to do with things… but if it works, shrug I didn't get to compare what other build files had changed in the intervening time. (busy trying to get ICU 60 out the door, etc etc).
Yes, that's because of choices v8 has made with how it builds ICU. However, when Node builds v8, v8's ICU is out of the picture. |
srl295
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No objection…
The v8 and test-hash-seed targets cannot be run in parallel because they need different copies of the deps/v8 directory. Ref: #14004 (comment) Backport-PR-URL: #15562 PR-URL: #14219 Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
Original commit message:
Fix compilation with GCC 5.2
Fixes:
../../test/cctest/compiler/test-js-typed-lowering.cc:224:14:
error: ‘kJSTypes’ defined but not used [-Werror=unused-variable]
static Type* kJSTypes[] = {Type::Undefined(), Type::Null(), Type::Boolean(),
../../src/bignum.cc: In member function
‘void v8::internal::Bignum::AssignDecimalString(Vector<const char>)’:
../../src/bignum.cc:80:6: error: assuming signed overflow does not occur when
assuming that (X + c) < X is always false [-Werror=strict-overflow]
../../src/compiler/ia32/code-generator-ia32.cc:1366:3:
required from here ../../src/base/logging.h:123:26:
error: comparison between signed and unsigned integer expressions
[-Werror=sign-compare] DEFINE_CHECK_OP_IMPL(EQ, ==)
BUG=
Review URL: https://codereview.chromium.org/1371823002
Cr-Commit-Position: refs/heads/master@{#31095}
PR-URL: #15562
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Steven R Loomis <srloomis@us.ibm.com>
Original commit message:
GYP: Don't pass -Wno-format-pedantic to GCC.
This flag is not understood correctly by GCC and breaks the GCC ARM and MIPS optdebug builds.
Patch from Brendan Kirby <brendan.kirby@imgtec.com>
BUG=
Review URL: https://codereview.chromium.org/1369273003
Cr-Commit-Position: refs/heads/master@{#31013}
PR-URL: #15562
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Steven R Loomis <srloomis@us.ibm.com>
PR-URL: #15562 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Steven R Loomis <srloomis@us.ibm.com>
Original commit message:
Allow ICU to normalize time zones
There's at least one case of a time zone alias: Asia/Kathmandu aliases
Asia/Katmandu. ICU seems to normalize to the (deprecated) latter choice.
V8 internationalization choked on this change; this patch interprets
ICU's output more precisely and allows it.
BUG=chromium:487322
R=jungshik,adamk
LOG=Y
Review URL: https://codereview.chromium.org/1509273007
Cr-Commit-Position: refs/heads/master@{#32769}
PR-URL: #15562
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Steven R Loomis <srloomis@us.ibm.com>
Original commit message:
Timezone name check fix
1. Location names with more than one underscores (e.g. Ho_Chi_Minh)
didn't work because of the way capturing works with repeated patterns
in RE. It's now supported by changing the RE to capture the whole string
and splitting on '_' in the next step.
2. Adds support for location names with a hyphen
3. Adds support for timezone ids with three parts (e.g.
American/Argentina/Buenos_Aires)
4. Adds special handling of 'au', 'es' and 'of' in zone ids. They need to be kept in lowercase. (see the full list at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones )
5. Adds regression tests for all the above and make the existing tests
more robust against future ICU changes. ICU canonicalizes zone names to
deprecated names, but it may change. (
http://bugs.icu-project.org/trac/ticket/12044 )
BUG=364374
LOG=Y
Review URL: https://codereview.chromium.org/1529363005
Cr-Commit-Position: refs/heads/master@{#33097}
PR-URL: #15562
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Steven R Loomis <srloomis@us.ibm.com>
|
landed in fc6145f...4e44b64 |
The v8 and test-hash-seed targets cannot be run in parallel because they need different copies of the deps/v8 directory. Ref: #14004 (comment) Backport-PR-URL: #15562 PR-URL: #14219 Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
Original commit message:
Fix compilation with GCC 5.2
Fixes:
../../test/cctest/compiler/test-js-typed-lowering.cc:224:14:
error: ‘kJSTypes’ defined but not used [-Werror=unused-variable]
static Type* kJSTypes[] = {Type::Undefined(), Type::Null(), Type::Boolean(),
../../src/bignum.cc: In member function
‘void v8::internal::Bignum::AssignDecimalString(Vector<const char>)’:
../../src/bignum.cc:80:6: error: assuming signed overflow does not occur when
assuming that (X + c) < X is always false [-Werror=strict-overflow]
../../src/compiler/ia32/code-generator-ia32.cc:1366:3:
required from here ../../src/base/logging.h:123:26:
error: comparison between signed and unsigned integer expressions
[-Werror=sign-compare] DEFINE_CHECK_OP_IMPL(EQ, ==)
BUG=
Review URL: https://codereview.chromium.org/1371823002
Cr-Commit-Position: refs/heads/master@{#31095}
PR-URL: #15562
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Steven R Loomis <srloomis@us.ibm.com>
Original commit message:
GYP: Don't pass -Wno-format-pedantic to GCC.
This flag is not understood correctly by GCC and breaks the GCC ARM and MIPS optdebug builds.
Patch from Brendan Kirby <brendan.kirby@imgtec.com>
BUG=
Review URL: https://codereview.chromium.org/1369273003
Cr-Commit-Position: refs/heads/master@{#31013}
PR-URL: #15562
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Steven R Loomis <srloomis@us.ibm.com>
PR-URL: #15562 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Steven R Loomis <srloomis@us.ibm.com>
Original commit message:
Allow ICU to normalize time zones
There's at least one case of a time zone alias: Asia/Kathmandu aliases
Asia/Katmandu. ICU seems to normalize to the (deprecated) latter choice.
V8 internationalization choked on this change; this patch interprets
ICU's output more precisely and allows it.
BUG=chromium:487322
R=jungshik,adamk
LOG=Y
Review URL: https://codereview.chromium.org/1509273007
Cr-Commit-Position: refs/heads/master@{#32769}
PR-URL: #15562
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Steven R Loomis <srloomis@us.ibm.com>
Original commit message:
Timezone name check fix
1. Location names with more than one underscores (e.g. Ho_Chi_Minh)
didn't work because of the way capturing works with repeated patterns
in RE. It's now supported by changing the RE to capture the whole string
and splitting on '_' in the next step.
2. Adds support for location names with a hyphen
3. Adds support for timezone ids with three parts (e.g.
American/Argentina/Buenos_Aires)
4. Adds special handling of 'au', 'es' and 'of' in zone ids. They need to be kept in lowercase. (see the full list at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones )
5. Adds regression tests for all the above and make the existing tests
more robust against future ICU changes. ICU canonicalizes zone names to
deprecated names, but it may change. (
http://bugs.icu-project.org/trac/ticket/12044 )
BUG=364374
LOG=Y
Review URL: https://codereview.chromium.org/1529363005
Cr-Commit-Position: refs/heads/master@{#33097}
PR-URL: #15562
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Steven R Loomis <srloomis@us.ibm.com>
Original commit message:
Fix compilation with GCC 5.2
Fixes:
../../test/cctest/compiler/test-js-typed-lowering.cc:224:14:
error: ‘kJSTypes’ defined but not used [-Werror=unused-variable]
static Type* kJSTypes[] = {Type::Undefined(), Type::Null(), Type::Boolean(),
../../src/bignum.cc: In member function
‘void v8::internal::Bignum::AssignDecimalString(Vector<const char>)’:
../../src/bignum.cc:80:6: error: assuming signed overflow does not occur when
assuming that (X + c) < X is always false [-Werror=strict-overflow]
../../src/compiler/ia32/code-generator-ia32.cc:1366:3:
required from here ../../src/base/logging.h:123:26:
error: comparison between signed and unsigned integer expressions
[-Werror=sign-compare] DEFINE_CHECK_OP_IMPL(EQ, ==)
BUG=
Review URL: https://codereview.chromium.org/1371823002
Cr-Commit-Position: refs/heads/master@{#31095}
PR-URL: nodejs/node#15562
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Steven R Loomis <srloomis@us.ibm.com>
Original commit message:
GYP: Don't pass -Wno-format-pedantic to GCC.
This flag is not understood correctly by GCC and breaks the GCC ARM and MIPS optdebug builds.
Patch from Brendan Kirby <brendan.kirby@imgtec.com>
BUG=
Review URL: https://codereview.chromium.org/1369273003
Cr-Commit-Position: refs/heads/master@{#31013}
PR-URL: nodejs/node#15562
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Steven R Loomis <srloomis@us.ibm.com>
Original commit message:
Allow ICU to normalize time zones
There's at least one case of a time zone alias: Asia/Kathmandu aliases
Asia/Katmandu. ICU seems to normalize to the (deprecated) latter choice.
V8 internationalization choked on this change; this patch interprets
ICU's output more precisely and allows it.
BUG=chromium:487322
R=jungshik,adamk
LOG=Y
Review URL: https://codereview.chromium.org/1509273007
Cr-Commit-Position: refs/heads/master@{#32769}
PR-URL: nodejs/node#15562
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Steven R Loomis <srloomis@us.ibm.com>
Original commit message:
Timezone name check fix
1. Location names with more than one underscores (e.g. Ho_Chi_Minh)
didn't work because of the way capturing works with repeated patterns
in RE. It's now supported by changing the RE to capture the whole string
and splitting on '_' in the next step.
2. Adds support for location names with a hyphen
3. Adds support for timezone ids with three parts (e.g.
American/Argentina/Buenos_Aires)
4. Adds special handling of 'au', 'es' and 'of' in zone ids. They need to be kept in lowercase. (see the full list at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones )
5. Adds regression tests for all the above and make the existing tests
more robust against future ICU changes. ICU canonicalizes zone names to
deprecated names, but it may change. (
http://bugs.icu-project.org/trac/ticket/12044 )
BUG=364374
LOG=Y
Review URL: https://codereview.chromium.org/1529363005
Cr-Commit-Position: refs/heads/master@{#33097}
PR-URL: nodejs/node#15562
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Steven R Loomis <srloomis@us.ibm.com>
Requested in #15507 (comment)
/cc @bnoordhuis
Refs: #13022