Skip to content
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

Closed
wants to merge 6 commits into from
Closed

Conversation

MylesBorins
Copy link
Contributor

Requested in #15507 (comment)

/cc @bnoordhuis

Refs: #13022

@nodejs-github-bot nodejs-github-bot added v4.x v8 engine Issues and PRs related to the V8 dependency. labels Sep 22, 2017
@MylesBorins
Copy link
Contributor Author

MylesBorins commented Sep 22, 2017

ci: https://ci.nodejs.org/job/node-test-pull-request/10205/
v8-ci: https://ci.nodejs.org/job/node-test-commit-v8-linux/923/

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/

@MylesBorins
Copy link
Contributor Author

@nodejs/build are the errors we are seeing in V8 CI due to snapshots being turned off?

Copy link
Contributor

@Qantas94Heavy Qantas94Heavy left a 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.

* 'of', 'au' and 'es' are special-cased and lowercased.
*/
function toTitleCaseTimezoneLocation(location) {
var match = %_Call(StringMatch, location, GetTimezoneNameLocationPartRE());
Copy link
Contributor

@Qantas94Heavy Qantas94Heavy Sep 23, 2017

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);

// The first character is a separator, '_' or '-'.
// None of IANA zone names has both '_' and '-'.
var separator = %_Call(StringSubstring, match[2], 0, 1);
var parts = %_Call(StringSplit, match[2], separator);
Copy link
Contributor

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);

result = result + '_' + toTitleCaseWord(match[i]);
i++;
if (!IS_UNDEFINED(match[3]) && 3 < match.length) {
var locations = %_Call(StringSplit, match[3], '/');
Copy link
Contributor

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);

Copy link
Member

@jasnell jasnell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rubber stamp lgtm

@MylesBorins
Copy link
Contributor Author

MylesBorins commented Sep 26, 2017

* 'of', 'au' and 'es' are special-cased and lowercased.
*/
function toTitleCaseTimezoneLocation(location) {
var match = %_CallFunction(StringMatch, location, GetTimezoneNameLocationPartRE());
Copy link
Member

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.)

if (!IS_UNDEFINED(match[2]) && 2 < match.length) {
// The first character is a separator, '_' or '-'.
// None of IANA zone names has both '_' and '-'.
var separator = %_CallFunction(StringSubstring, match[2], 0, 1);
Copy link
Member

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.

@MylesBorins
Copy link
Contributor Author

MylesBorins commented Sep 27, 2017

Copy link
Member

@bnoordhuis bnoordhuis left a 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.

* 'of', 'au' and 'es' are special-cased and lowercased.
*/
function toTitleCaseTimezoneLocation(location) {
var match = %_CallFunction(location, GetTimezoneNameLocationPartRE(), StringMatch);
Copy link
Member

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.

@MylesBorins
Copy link
Contributor Author

MylesBorins commented Sep 28, 2017

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.

@MylesBorins
Copy link
Contributor Author

MylesBorins commented Sep 29, 2017

I cannot get make test-v8 to work on any machine I've been testing it on... there are things breaking during compilation

In file included from ../src/lithium-allocator.cc:8:
In file included from .././src/lithium-inl.h:8:
.././src/lithium.h:321:45: error: instantiation of variable 'v8::internal::LSubKindOperand<v8::internal::LOperand::Kind::REGISTER, 16>::cache' required here, but no definition is available
      [-Werror,-Wundefined-var-template]
    if (index < kNumCachedOperands) return &cache[index];
                                            ^
../src/lithium-allocator.cc:203:25: note: in instantiation of member function 'v8::internal::LSubKindOperand<v8::internal::LOperand::Kind::REGISTER, 16>::Create' requested here
        op = LRegister::Create(assigned_register(), zone);
                        ^
.././src/lithium.h:334:27: note: forward declaration of template entity is here
  static LSubKindOperand* cache;
                          ^
.././src/lithium.h:321:45: note: add an explicit instantiation declaration to suppress this warning if 'v8::internal::LSubKindOperand<v8::internal::LOperand::Kind::REGISTER, 16>::cache' is explicitly
      instantiated in another translation unit
    if (index < kNumCachedOperands) return &cache[index];
                                            ^
1 error generated.

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

@hashseed
Copy link
Member

Maybe because that version of V8 requires some old version of GCC?

@bnoordhuis
Copy link
Member

@MylesBorins Untested, but I speculate the google-clang (or whatever you call it) that make-v8.sh checks out is no longer compatible with that version of V8. Does this patch help?

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.)

@MylesBorins
Copy link
Contributor Author

MylesBorins commented Oct 2, 2017

Getting a failure with that patch as well

../src/bignum.cc: In member function ‘void v8::internal::Bignum::AssignDecimalString(v8::internal::Vector<const char>)’:
../src/bignum.cc:82:6: error: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Werror=strict-overflow]
 void Bignum::AssignDecimalString(Vector<const char> value) {
      ^
At global scope:
cc1plus: error: unrecognized command line option ‘-Wno-format-pedantic’ [-Werror]
cc1plus: all warnings being treated as errors
tools/gyp/v8_base.target.x64.release.mk:490: recipe for target '/home/mborins/node/deps/v8/out/x64.release/obj.target/v8_base/src/bignum.o' failed
make[2]: *** [/home/mborins/node/deps/v8/out/x64.release/obj.target/v8_base/src/bignum.o] Error 1
make[2]: Leaving directory '/home/mborins/node/deps/v8/out'
Makefile:302: recipe for target 'x64.release' failed
make[1]: *** [x64.release] Error 2
make[1]: Leaving directory '/home/mborins/node/deps/v8'
Makefile:114: recipe for target 'v8' failed
make: *** [v8] Error 2

edit: found a patch to V8 that may fix that

v8/v8@d7f813b

@bnoordhuis
Copy link
Member

Ah, I think that is a bug in deps/v8/build/standalone.gypi - it adds that -Wno-format-pedantic flag even when clang==0. What happens when you delete it from that file?

@MylesBorins MylesBorins mentioned this pull request Oct 2, 2017
@MylesBorins
Copy link
Contributor Author

MylesBorins commented Oct 2, 2017

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

EAD is now at 87b733840e deps: backport 4e18190 from V8 upstream
Auto-merging src/string_bytes.cc
CONFLICT (content): Merge conflict in src/string_bytes.cc
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C deps/v8 x64.release \
		 GYPFLAGS="-Dclang=0"
PYTHONPATH="/Users/mborins/code/node/v4.x/deps/v8/tools/generate_shim_headers:/Users/mborins/code/node/v4.x/deps/v8/build::/Users/mborins/code/node/v4.x/deps/v8/build/gyp/pylib:" \
	GYP_GENERATORS=make \
	build/gyp/gyp --generator-output="out" build/all.gyp \
	              -Ibuild/standalone.gypi --depth=. \
	              -Dv8_target_arch=x64 \
	               -Dtarget_arch=x64 \
	               \
	              -S.x64.release -Dclang=0
  CXX(target) /Users/mborins/code/node/v4.x/deps/v8/out/x64.release/obj.target/v8_base/src/accessors.o
In file included from ../src/accessors.cc:5:
In file included from .././src/v8.h:29:
.././include/v8.h:353:33: error: use of undeclared identifier 'nullptr'
  V8_INLINE MaybeLocal() : val_(nullptr) {}
                                ^
.././include/v8.h:360:51: error: use of undeclared identifier 'nullptr'
  V8_INLINE bool IsEmpty() const { return val_ == nullptr; }
                                                  ^
.././include/v8.h:364:29: error: use of undeclared identifier 'nullptr'
    out->val_ = IsEmpty() ? nullptr : this->val_;
                            ^
.././include/v8.h:430:50: error: use of undeclared identifier 'nullptr'
  bool IsFirstPass() const { return callback_ != nullptr; }
                                                 ^
.././include/v8.h:469:29: error: alias declarations are a C++11 extension [-Werror,-Wc++11-extensions]
using PhantomCallbackData = WeakCallbackInfo<T>;
                            ^
.././include/v8.h:472:6: error: scoped enumerations are a C++11 extension [-Werror,-Wc++11-extensions]
enum class WeakCallbackType { kParameter, kInternalFields };
     ^
.././include/v8.h:637:43: error: deleted function definitions are a C++11 extension [-Werror,-Wc++11-extensions]
  PersistentBase(PersistentBase& other) = delete;  // NOLINT
                                          ^
.././include/v8.h:638:37: error: deleted function definitions are a C++11 extension [-Werror,-Wc++11-extensions]
  void operator=(PersistentBase&) = delete;
                                    ^
.././include/v8.h:814:26: error: rvalue references are a C++11 extension [-Werror,-Wc++11-extensions]
  V8_INLINE Global(Global&& other) : PersistentBase<T>(other.val_) {
                         ^
.././include/v8.h:822:40: error: rvalue references are a C++11 extension [-Werror,-Wc++11-extensions]
  V8_INLINE Global& operator=(Global<S>&& rhs) {
                                       ^
.././include/v8.h:844:21: error: deleted function definitions are a C++11 extension [-Werror,-Wc++11-extensions]
  Global(Global&) = delete;
                    ^
.././include/v8.h:845:29: error: deleted function definitions are a C++11 extension [-Werror,-Wc++11-extensions]
  void operator=(Global&) = delete;
                            ^
.././include/v8.h:790:42: error: use of undeclared identifier 'nullptr'
  V8_INLINE Global() : PersistentBase<T>(nullptr) {}
                                         ^
.././include/v8.h:815:18: error: use of undeclared identifier 'nullptr'
    other.val_ = nullptr;
                 ^
.././include/v8.h:827:18: error: use of undeclared identifier 'nullptr'
      rhs.val_ = nullptr;
                 ^
.././include/v8.h:834:44: error: rvalue references are a C++11 extension [-Werror,-Wc++11-extensions]
  Global Pass() { return static_cast<Global&&>(*this); }
                                           ^
.././include/v8.h:852:26: error: alias declarations are a C++11 extension [-Werror,-Wc++11-extensions]
using UniquePersistent = Global<T>;
                         ^
.././include/v8.h:1092:52: error: use of undeclared identifier 'nullptr'
                            ScriptOrigin* origin = nullptr));
                                                   ^
.././include/v8.h:1095:30: error: use of undeclared identifier 'nullptr'
      ScriptOrigin* origin = nullptr);
                             ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [/Users/mborins/code/node/v4.x/deps/v8/out/x64.release/obj.target/v8_base/src/accessors.o] Error 1
make[1]: *** [x64.release] Error 2
make: *** [v8] Error 2

@MylesBorins
Copy link
Contributor Author

MylesBorins commented Oct 2, 2017

Linux error on new branch

../src/bignum.cc: In member function ‘void v8::internal::Bignum::AssignDecimalString(v8::internal::Vector<const char>)’:
../src/bignum.cc:82:6: error: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Werror=strict-overflow]
 void Bignum::AssignDecimalString(Vector<const char> value) {
      ^
cc1plus: all warnings being treated as errors
tools/gyp/v8_base.target.x64.release.mk:487: recipe for target '/home/mborins/node/deps/v8/out/x64.release/obj.target/v8_base/src/bignum.o' failed
make[2]: *** [/home/mborins/node/deps/v8/out/x64.release/obj.target/v8_base/src/bignum.o] Error 1
make[2]: Leaving directory '/home/mborins/node/deps/v8/out'
Makefile:302: recipe for target 'x64.release' failed
make[1]: *** [x64.release] Error 2
make[1]: Leaving directory '/home/mborins/node/deps/v8'
Makefile:114: recipe for target 'v8' failed
make: *** [v8] Error 2

edit: looks like this patch will fix it v8/v8@e28183b

@MylesBorins
Copy link
Contributor Author

MylesBorins commented Oct 11, 2017

It works 🎉

I'm not sure how I feel about introducing export to the makefile... can someone sign off on this

ci: https://ci.nodejs.org/job/node-test-pull-request/10610/
ci-v8: https://ci.nodejs.org/job/node-test-commit-v8-linux/986/

edit
4.8.4 CI to compare failures on arm: https://ci.nodejs.org/job/node-test-commit/13029/

edit 2:
one more ci: https://ci.nodejs.org/job/node-test-pull-request/10615/
one more 4.8.4: https://ci.nodejs.org/job/node-test-commit/13036/

Makefile Outdated
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)
Copy link
Member

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

bnoordhuis and others added 3 commits October 11, 2017 14:29
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
@@ -110,6 +110,7 @@ check: test
cctest: all
@out/$(BUILDTYPE)/$@

v8: export GYPFLAGS += -Dclang=0
Copy link
Contributor Author

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?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, seems fine.

@srl295
Copy link
Member

srl295 commented Oct 12, 2017

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).

the ICU included by V8 is le only

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.

Copy link
Member

@srl295 srl295 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No objection…

MylesBorins pushed a commit that referenced this pull request Oct 18, 2017
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>
MylesBorins pushed a commit that referenced this pull request Oct 18, 2017
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>
MylesBorins pushed a commit that referenced this pull request Oct 18, 2017
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>
MylesBorins pushed a commit that referenced this pull request Oct 18, 2017
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>
MylesBorins added a commit that referenced this pull request Oct 18, 2017
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>
MylesBorins pushed a commit that referenced this pull request Oct 18, 2017
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>
@MylesBorins
Copy link
Contributor Author

landed in fc6145f...4e44b64

MylesBorins pushed a commit that referenced this pull request Oct 25, 2017
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>
MylesBorins pushed a commit that referenced this pull request Oct 25, 2017
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>
MylesBorins pushed a commit that referenced this pull request Oct 25, 2017
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>
MylesBorins pushed a commit that referenced this pull request Oct 25, 2017
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>
MylesBorins added a commit that referenced this pull request Oct 25, 2017
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>
MylesBorins pushed a commit that referenced this pull request Oct 25, 2017
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>
@MylesBorins MylesBorins mentioned this pull request Oct 25, 2017
@MylesBorins MylesBorins deleted the V8-icu-patch-4.x branch November 14, 2017 17:44
gibfahn pushed a commit to ibmruntimes/node that referenced this pull request Nov 24, 2017
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>
gibfahn pushed a commit to ibmruntimes/node that referenced this pull request Nov 24, 2017
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>
gibfahn pushed a commit to ibmruntimes/node that referenced this pull request Nov 24, 2017
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>
gibfahn pushed a commit to ibmruntimes/node that referenced this pull request Nov 24, 2017
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
v8 engine Issues and PRs related to the V8 dependency.
Projects
None yet
Development

Successfully merging this pull request may close these issues.