- 11 Apr, 2017 3 commits
-
-
littledan authored
Reland of [date] Add ICU backend for timezone info behind a flag (patchset #1 id:1 of https://codereview.chromium.org/2811103002/ ) Reason for revert: Reland with tests marked as off in no-i18n mode Original issue's description: > Revert of [date] Add ICU backend for timezone info behind a flag (patchset #17 id:320001 of https://codereview.chromium.org/2724373002/ ) > > Reason for revert: > Breaks noi18n: > https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20noi18n%20-%20debug/builds/13314 > > Original issue's description: > > [date] Add ICU backend for timezone info behind a flag > > > > This patch implements a timezone backend which is based on ICU, rather > > than operating system calls. It can be turned on by passing the > > --icu-timezone-data flag. The goal here is to take advantage of ICU's > > data, which is more complete than the data that some system calls expose. > > For example, without any special code, this patch fixes the time zone > > of Lord Howe Island to have a correct 30 minute DST offset, rather than > > 60 minutes as the OS backends assume it to have. > > > > Unfortunately, the parenthized timezone name in Date.prototype.toString() > > differs across platforms. This patch chooses the long timezone name, > > which matches Windows behavior and might be the most intelligible, but > > the web compatibility impact is unclear. > > > > BUG=v8:6031,v8:2137,v8:6076 > > > > Review-Url: https://codereview.chromium.org/2724373002 > > Cr-Commit-Position: refs/heads/master@{#44562} > > Committed: https://chromium.googlesource.com/v8/v8/+/b213f2399038a615cdfbfa0201cddc113d304018 > > TBR=ulan@chromium.org,jshin@chromium.org,jgruber@chromium.org,littledan@chromium.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=v8:6031,v8:2137,v8:6076 > > Review-Url: https://codereview.chromium.org/2811103002 > Cr-Commit-Position: refs/heads/master@{#44565} > Committed: https://chromium.googlesource.com/v8/v8/+/13ad50811024ace5623d5d4d13cea4ef21f4affd TBR=ulan@chromium.org,jshin@chromium.org,jgruber@chromium.org,machenbach@chromium.org BUG=v8:6031,v8:2137,v8:6076 Review-Url: https://codereview.chromium.org/2813863002 Cr-Commit-Position: refs/heads/master@{#44575}
-
machenbach authored
Revert of [date] Add ICU backend for timezone info behind a flag (patchset #17 id:320001 of https://codereview.chromium.org/2724373002/ ) Reason for revert: Breaks noi18n: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20noi18n%20-%20debug/builds/13314 Original issue's description: > [date] Add ICU backend for timezone info behind a flag > > This patch implements a timezone backend which is based on ICU, rather > than operating system calls. It can be turned on by passing the > --icu-timezone-data flag. The goal here is to take advantage of ICU's > data, which is more complete than the data that some system calls expose. > For example, without any special code, this patch fixes the time zone > of Lord Howe Island to have a correct 30 minute DST offset, rather than > 60 minutes as the OS backends assume it to have. > > Unfortunately, the parenthized timezone name in Date.prototype.toString() > differs across platforms. This patch chooses the long timezone name, > which matches Windows behavior and might be the most intelligible, but > the web compatibility impact is unclear. > > BUG=v8:6031,v8:2137,v8:6076 > > Review-Url: https://codereview.chromium.org/2724373002 > Cr-Commit-Position: refs/heads/master@{#44562} > Committed: https://chromium.googlesource.com/v8/v8/+/b213f2399038a615cdfbfa0201cddc113d304018 TBR=ulan@chromium.org,jshin@chromium.org,jgruber@chromium.org,littledan@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:6031,v8:2137,v8:6076 Review-Url: https://codereview.chromium.org/2811103002 Cr-Commit-Position: refs/heads/master@{#44565}
-
littledan authored
This patch implements a timezone backend which is based on ICU, rather than operating system calls. It can be turned on by passing the --icu-timezone-data flag. The goal here is to take advantage of ICU's data, which is more complete than the data that some system calls expose. For example, without any special code, this patch fixes the time zone of Lord Howe Island to have a correct 30 minute DST offset, rather than 60 minutes as the OS backends assume it to have. Unfortunately, the parenthized timezone name in Date.prototype.toString() differs across platforms. This patch chooses the long timezone name, which matches Windows behavior and might be the most intelligible, but the web compatibility impact is unclear. BUG=v8:6031,v8:2137,v8:6076 Review-Url: https://codereview.chromium.org/2724373002 Cr-Commit-Position: refs/heads/master@{#44562}
-
- 11 Mar, 2017 1 commit
-
-
littledan authored
To speed up Date.prototype.toString(), this patch adds a cache in the DateCache for the string short name representing the time zone. Because time zones in a particular location just have two short names (for DST and standard time), and the DateCache already understands whether a time is in DST or not, it is possible to keep the result of OS::LocalTimezone around and select between the two based on whether the time is DST or not. In local microbenchmarks (calling Date.prototype.toString() in a loop), I observed a 6-10% speedup with this patch. In the browser, the speedup may be even greater as the system call needs to do some extra work to break out of the sandbox. I don't think the microbenchmark is extremely unrealistic; in any real program which calls Date.prototype.toString() multiple times, the cache should hit almost all of the time, as time zone changes are rare. The proximate motivation for this patch was to enable ICU as a backend for timezone information, which is drafted at https://codereview.chromium.org/2724373002/ The ICU implementation of OS::LocalTimezone is even slower than the system call one, but this patch makes their performance indistinguishable on the microbenchmark. In the tz database, many timezones actually do have a number of different historical names. For example, America/Anchorage went through a number of changes, from AST to AHST to YST to AKST. However, both ICU and the Linux OS interfaces just report the modern timezone name in tests for the appropriate timezone name, even for historical times. I can see why this would be: - For ICU, CLDR only has two short names in the data file: the one for dst and non-dst - For Linux, the timezone names do seem to make it into the /etc/localtime file. However, glibc assumes there are only two relevant names and selects between them, as you can see in its implementation of localtime_r: http://bazaar.launchpad.net/~vcs-imports/glibc/master/view/head:/time/tzset.c#L573 So, this cache should be valid until we switch to a more accurate source of short timezone names. BUG=v8:6031 Review-Url: https://codereview.chromium.org/2726253002 Cr-Commit-Position: refs/heads/master@{#43730}
-
- 03 Mar, 2017 1 commit
-
-
littledan authored
This refactoring is preparatory work to enable ICU to be the backend for timezone information rather than system calls. In the process, a bit of code duplication that was inserted in the Solaris port patch is eliminated here among modern POSIX backends. One possible performance downside of this patch is that it introduces a virtual method call for operations which were previously not virtual methods. However, a couple factors mitigate this effect: - The DateCache minimizes the need for calls into the TimezoneCache - These calls were already not very high performance, as they included a system call which requires an RPC to get out of the sandbox, and they are surrounded by C++ builtins, which require a JS to C++ transition. - A future transition to ICU, enabled by this refactoring, may improve performance by eliminating the system call. BUG=v8:6031 Review-Url: https://codereview.chromium.org/2731463003 Cr-Commit-Position: refs/heads/master@{#43588}
-
- 05 Jan, 2016 1 commit
-
-
bmeurer authored
Almost all of the Date builtins always call into C++ at least once anyway, so parsing, compiling and executing the JavaScript wrappers is just a waste of time. The most important part here is the Date constructor itself, which is one of the blockers for new.target in TurboFan, because compiling the Date constructor takes too much time with TurboFan (for no reason since we end up in C++ anway). R=cbruni@chromium.org Review URL: https://codereview.chromium.org/1556333002 Cr-Commit-Position: refs/heads/master@{#33109}
-
- 30 Dec, 2015 1 commit
-
-
littledan authored
In a rare edge case, a difference in checks between C++ and JavaScript lead to an 'illegal access' being thrown by the Date constructor. This patch harmonizes the checks from both sides. It's possible that slightly larger dates could be permitted, as the ECMAScript 2015 specification indicates that +287396-10-12 would be a permissible date in the note in http://tc39.github.io/ecma262/#sec-extended-years This patch does not revisit the limit, only clears up the inconsistency. BUG=v8:4640 R=cbruni LOG=Y Review URL: https://codereview.chromium.org/1545883003 Cr-Commit-Position: refs/heads/master@{#33068}
-
- 30 Sep, 2015 1 commit
-
-
mstarzinger authored
This enables linter checking for "readability/namespace" violations during presubmit and instead marks the few known exceptions that we allow explicitly. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1371083003 Cr-Commit-Position: refs/heads/master@{#31019}
-
- 09 Oct, 2014 1 commit
-
-
ulan@chromium.org authored
This also reverts r23606, which was an incorrect fix. BUG=v8:3116,chromium:417640,chromium:415424 LOG=Y TEST=mjsunit/regress/regress-3116.js R=yangguo@chromium.org Review URL: https://codereview.chromium.org/639383002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24499 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 Sep, 2014 1 commit
-
-
ulan@chromium.org authored
BUG=v8:3116 LOG=N R=rossberg@chromium.org Review URL: https://codereview.chromium.org/525363002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23606 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 04 Aug, 2014 1 commit
-
-
bmeurer@chromium.org authored
This way we don't clash with the ASSERT* macros defined by GoogleTest, and we are one step closer to being able to replace our homegrown base/ with base/ from Chrome. R=jochen@chromium.org, svenpanne@chromium.org Review URL: https://codereview.chromium.org/430503007 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22812 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 30 Jun, 2014 1 commit
-
-
jochen@chromium.org authored
Also split v8-core independent methods from checks.h to base/logging.h and merge v8checks with the rest of checks. The CPU::FlushICache method is moved to CpuFeatures::FlushICache RoundUp and related methods are moved to base/macros.h Remove all layering violations from src/libplatform BUG=none R=jkummerow@chromium.org LOG=n Review URL: https://codereview.chromium.org/358363002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22092 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 03 Jun, 2014 1 commit
-
-
jochen@chromium.org authored
- this avoids using relative include paths which are forbidden by the style guide - makes the code more readable since it's clear which header is meant - allows for starting to use checkdeps BUG=none R=jkummerow@chromium.org, danno@chromium.org LOG=n Review URL: https://codereview.chromium.org/304153016 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 29 Apr, 2014 1 commit
-
-
bmeurer@chromium.org authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/259183002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21035 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 14 Mar, 2014 1 commit
-
-
ulan@chromium.org authored
This allocates a timezone cache per isolate. BUG= R=jochen@chromium.org Review URL: https://codereview.chromium.org/197023002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19943 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 10 Mar, 2014 1 commit
-
-
dslomov@chromium.org authored
This reverts commit r19711 for breaking WebKit tests. http://build.chromium.org/p/tryserver.chromium/builders/win_rel/builds/278551/steps/content_browsertests/logs/AccessibilityMessagesQueueWhileSwappedOut TBR=ulan@chromium.org Review URL: https://codereview.chromium.org/192903002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19765 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 07 Mar, 2014 1 commit
-
-
ulan@chromium.org authored
BUG=142141 LOG=Y R=rossberg@chromium.org Review URL: https://codereview.chromium.org/173793002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19711 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Mar, 2012 2 commits
-
-
ulan@chromium.org authored
R=mstarzinger@chromium.org BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9652030 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10987 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
ulan@chromium.org authored
Developed together with Andreas Rossberg based on: https://chromiumcodereview.appspot.com/9117034/ https://chromiumcodereview.appspot.com/9307083/ R=rossberg@chromium.org Review URL: https://chromiumcodereview.appspot.com/9572008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10983 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-