Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 2974deb

Browse filesBrowse files
targosrvagg
authored andcommitted
deps: update V8 to 4.6.85.28
This update fixes a breaking regression in the date parser. Ref: https://code.google.com/p/chromium/issues/detail?id=539813 Ref: https://code.google.com/p/chromium/issues/detail?id=543320 PR-URL: #3484 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
1 parent f76af49 commit 2974deb
Copy full SHA for 2974deb

File tree

Expand file treeCollapse file tree

8 files changed

+99
-73
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

8 files changed

+99
-73
lines changed
Open diff view settings
Collapse file

‎deps/v8/include/v8-version.h‎

Copy file name to clipboardExpand all lines: deps/v8/include/v8-version.h
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#define V8_MAJOR_VERSION 4
1212
#define V8_MINOR_VERSION 6
1313
#define V8_BUILD_NUMBER 85
14-
#define V8_PATCH_LEVEL 25
14+
#define V8_PATCH_LEVEL 28
1515

1616
// Use 1 for candidates and 0 otherwise.
1717
// (Boolean macro values are not supported by all preprocessors.)
Collapse file

‎deps/v8/src/dateparser-inl.h‎

Copy file name to clipboardExpand all lines: deps/v8/src/dateparser-inl.h
+14-10Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ bool DateParser::Parse(Vector<Char> str,
2323
DayComposer day;
2424

2525
// Specification:
26-
// Accept ES6 ISO 8601 date-time-strings or legacy dates compatible
26+
// Accept ES5 ISO 8601 date-time-strings or legacy dates compatible
2727
// with Safari.
28-
// ES6 ISO 8601 dates:
28+
// ES5 ISO 8601 dates:
2929
// [('-'|'+')yy]yyyy[-MM[-DD]][THH:mm[:ss[.sss]][Z|(+|-)hh:mm]]
3030
// where yyyy is in the range 0000..9999 and
3131
// +/-yyyyyy is in the range -999999..+999999 -
@@ -40,7 +40,8 @@ bool DateParser::Parse(Vector<Char> str,
4040
// sss is in the range 000..999,
4141
// hh is in the range 00..23,
4242
// mm, ss, and sss default to 00 if missing, and
43-
// timezone defaults to local time if missing.
43+
// timezone defaults to Z if missing
44+
// (following Safari, ISO actually demands local time).
4445
// Extensions:
4546
// We also allow sss to have more or less than three digits (but at
4647
// least one).
@@ -62,13 +63,15 @@ bool DateParser::Parse(Vector<Char> str,
6263
// is allowed).
6364
// Intersection of the two:
6465
// A string that matches both formats (e.g. 1970-01-01) will be
65-
// parsed as an ES6 date-time string.
66-
// After a valid "T" has been read while scanning an ES6 datetime string,
66+
// parsed as an ES5 date-time string - which means it will default
67+
// to UTC time-zone. That's unavoidable if following the ES5
68+
// specification.
69+
// After a valid "T" has been read while scanning an ES5 datetime string,
6770
// the input can no longer be a valid legacy date, since the "T" is a
6871
// garbage string after a number has been read.
6972

70-
// First try getting as far as possible with as ES6 Date Time String.
71-
DateToken next_unhandled_token = ParseES6DateTime(&scanner, &day, &time, &tz);
73+
// First try getting as far as possible with as ES5 Date Time String.
74+
DateToken next_unhandled_token = ParseES5DateTime(&scanner, &day, &time, &tz);
7275
if (next_unhandled_token.IsInvalid()) return false;
7376
bool has_read_number = !day.IsEmpty();
7477
// If there's anything left, continue with the legacy parser.
@@ -193,7 +196,7 @@ DateParser::DateToken DateParser::DateStringTokenizer<CharType>::Scan() {
193196

194197

195198
template <typename Char>
196-
DateParser::DateToken DateParser::ParseES6DateTime(
199+
DateParser::DateToken DateParser::ParseES5DateTime(
197200
DateStringTokenizer<Char>* scanner,
198201
DayComposer* day,
199202
TimeComposer* time,
@@ -231,7 +234,7 @@ DateParser::DateToken DateParser::ParseES6DateTime(
231234
if (!scanner->Peek().IsKeywordType(TIME_SEPARATOR)) {
232235
if (!scanner->Peek().IsEndOfInput()) return scanner->Next();
233236
} else {
234-
// ES6 Date Time String time part is present.
237+
// ES5 Date Time String time part is present.
235238
scanner->Next();
236239
if (!scanner->Peek().IsFixedLengthNumber(2) ||
237240
!Between(scanner->Peek().number(), 0, 24)) {
@@ -297,7 +300,8 @@ DateParser::DateToken DateParser::ParseES6DateTime(
297300
}
298301
if (!scanner->Peek().IsEndOfInput()) return DateToken::Invalid();
299302
}
300-
// Successfully parsed ES6 Date Time String.
303+
// Successfully parsed ES5 Date Time String. Default to UTC if no TZ given.
304+
if (tz->IsEmpty()) tz->Set(0);
301305
day->set_iso_date();
302306
return DateToken::EndOfInput();
303307
}
Collapse file

‎deps/v8/src/dateparser.h‎

Copy file name to clipboardExpand all lines: deps/v8/src/dateparser.h
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,13 +368,13 @@ class DateParser : public AllStatic {
368368
bool is_iso_date_;
369369
};
370370

371-
// Tries to parse an ES6 Date Time String. Returns the next token
371+
// Tries to parse an ES5 Date Time String. Returns the next token
372372
// to continue with in the legacy date string parser. If parsing is
373373
// complete, returns DateToken::EndOfInput(). If terminally unsuccessful,
374374
// returns DateToken::Invalid(). Otherwise parsing continues in the
375375
// legacy parser.
376376
template <typename Char>
377-
static DateParser::DateToken ParseES6DateTime(
377+
static DateParser::DateToken ParseES5DateTime(
378378
DateStringTokenizer<Char>* scanner,
379379
DayComposer* day,
380380
TimeComposer* time,
Collapse file

‎deps/v8/test/mjsunit/date-parse.js‎

Copy file name to clipboardExpand all lines: deps/v8/test/mjsunit/date-parse.js
+3-3Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,9 +245,9 @@ var testCasesES5Misc = [
245245
['2000-01T08:00:00.099Z', 946713600099],
246246
['2000-01T08:00:00.999Z', 946713600999],
247247
['2000-01T00:00:00.001-08:00', 946713600001],
248-
['2000-01-01T24:00Z', 946771200000],
249-
['2000-01-01T24:00:00Z', 946771200000],
250-
['2000-01-01T24:00:00.000Z', 946771200000],
248+
['2000-01-01T24:00', 946771200000],
249+
['2000-01-01T24:00:00', 946771200000],
250+
['2000-01-01T24:00:00.000', 946771200000],
251251
['2000-01-01T24:00:00.000Z', 946771200000]];
252252

253253
var testCasesES5MiscNegative = [
Collapse file

‎deps/v8/test/mjsunit/date.js‎

Copy file name to clipboardExpand all lines: deps/v8/test/mjsunit/date.js
+54-54Lines changed: 54 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -203,110 +203,110 @@ assertEquals(-8640000000000000, Date.UTC(1970, 0, 1 - 100000001, 24));
203203

204204

205205
// Parsing ES5 ISO-8601 dates.
206-
// When TZ is omitted, it defaults to the local timezone
206+
// When TZ is omitted, it defaults to 'Z' meaning UTC.
207207

208208
// Check epoch.
209209
assertEquals(0, Date.parse("1970-01-01T00:00:00.000+00:00"));
210210
assertEquals(0, Date.parse("1970-01-01T00:00:00.000-00:00"));
211211
assertEquals(0, Date.parse("1970-01-01T00:00:00.000Z"));
212-
assertEquals(0, Date.parse("1970-01-01T00:00:00.000Z"));
213-
assertEquals(0, Date.parse("1970-01-01T00:00:00Z"));
214-
assertEquals(0, Date.parse("1970-01-01T00:00Z"));
215-
assertEquals(0, Date.parse("1970-01-01Z"));
212+
assertEquals(0, Date.parse("1970-01-01T00:00:00.000"));
213+
assertEquals(0, Date.parse("1970-01-01T00:00:00"));
214+
assertEquals(0, Date.parse("1970-01-01T00:00"));
215+
assertEquals(0, Date.parse("1970-01-01"));
216216

217217
assertEquals(0, Date.parse("1970-01T00:00:00.000+00:00"));
218218
assertEquals(0, Date.parse("1970-01T00:00:00.000-00:00"));
219219
assertEquals(0, Date.parse("1970-01T00:00:00.000Z"));
220-
assertEquals(0, Date.parse("1970-01T00:00:00.000Z"));
221-
assertEquals(0, Date.parse("1970-01T00:00:00Z"));
222-
assertEquals(0, Date.parse("1970-01T00:00Z"));
223-
assertEquals(0, Date.parse("1970-01Z"));
220+
assertEquals(0, Date.parse("1970-01T00:00:00.000"));
221+
assertEquals(0, Date.parse("1970-01T00:00:00"));
222+
assertEquals(0, Date.parse("1970-01T00:00"));
223+
assertEquals(0, Date.parse("1970-01"));
224224

225225
assertEquals(0, Date.parse("1970T00:00:00.000+00:00"));
226226
assertEquals(0, Date.parse("1970T00:00:00.000-00:00"));
227227
assertEquals(0, Date.parse("1970T00:00:00.000Z"));
228-
assertEquals(0, Date.parse("1970T00:00:00.000Z"));
229-
assertEquals(0, Date.parse("1970T00:00:00Z"));
230-
assertEquals(0, Date.parse("1970T00:00Z"));
231-
assertEquals(0, Date.parse("1970Z"));
228+
assertEquals(0, Date.parse("1970T00:00:00.000"));
229+
assertEquals(0, Date.parse("1970T00:00:00"));
230+
assertEquals(0, Date.parse("1970T00:00"));
231+
assertEquals(0, Date.parse("1970"));
232232

233233
assertEquals(0, Date.parse("+001970-01-01T00:00:00.000+00:00"));
234234
assertEquals(0, Date.parse("+001970-01-01T00:00:00.000-00:00"));
235235
assertEquals(0, Date.parse("+001970-01-01T00:00:00.000Z"));
236-
assertEquals(0, Date.parse("+001970-01-01T00:00:00.000Z"));
237-
assertEquals(0, Date.parse("+001970-01-01T00:00:00Z"));
238-
assertEquals(0, Date.parse("+001970-01-01T00:00Z"));
239-
assertEquals(0, Date.parse("+001970-01-01Z"));
236+
assertEquals(0, Date.parse("+001970-01-01T00:00:00.000"));
237+
assertEquals(0, Date.parse("+001970-01-01T00:00:00"));
238+
assertEquals(0, Date.parse("+001970-01-01T00:00"));
239+
assertEquals(0, Date.parse("+001970-01-01"));
240240

241241
assertEquals(0, Date.parse("+001970-01T00:00:00.000+00:00"));
242242
assertEquals(0, Date.parse("+001970-01T00:00:00.000-00:00"));
243243
assertEquals(0, Date.parse("+001970-01T00:00:00.000Z"));
244-
assertEquals(0, Date.parse("+001970-01T00:00:00.000Z"));
245-
assertEquals(0, Date.parse("+001970-01T00:00:00Z"));
246-
assertEquals(0, Date.parse("+001970-01T00:00Z"));
247-
assertEquals(0, Date.parse("+001970-01Z"));
244+
assertEquals(0, Date.parse("+001970-01T00:00:00.000"));
245+
assertEquals(0, Date.parse("+001970-01T00:00:00"));
246+
assertEquals(0, Date.parse("+001970-01T00:00"));
247+
assertEquals(0, Date.parse("+001970-01"));
248248

249249
assertEquals(0, Date.parse("+001970T00:00:00.000+00:00"));
250250
assertEquals(0, Date.parse("+001970T00:00:00.000-00:00"));
251251
assertEquals(0, Date.parse("+001970T00:00:00.000Z"));
252-
assertEquals(0, Date.parse("+001970T00:00:00.000Z"));
253-
assertEquals(0, Date.parse("+001970T00:00:00Z"));
254-
assertEquals(0, Date.parse("+001970T00:00Z"));
255-
assertEquals(0, Date.parse("+001970Z"));
252+
assertEquals(0, Date.parse("+001970T00:00:00.000"));
253+
assertEquals(0, Date.parse("+001970T00:00:00"));
254+
assertEquals(0, Date.parse("+001970T00:00"));
255+
assertEquals(0, Date.parse("+001970"));
256256

257257
// Check random date.
258258
assertEquals(70671003500, Date.parse("1972-03-28T23:50:03.500+01:00"));
259259
assertEquals(70674603500, Date.parse("1972-03-28T23:50:03.500Z"));
260-
assertEquals(70674603500, Date.parse("1972-03-28T23:50:03.500Z"));
261-
assertEquals(70674603000, Date.parse("1972-03-28T23:50:03Z"));
262-
assertEquals(70674600000, Date.parse("1972-03-28T23:50Z"));
263-
assertEquals(70588800000, Date.parse("1972-03-28Z"));
260+
assertEquals(70674603500, Date.parse("1972-03-28T23:50:03.500"));
261+
assertEquals(70674603000, Date.parse("1972-03-28T23:50:03"));
262+
assertEquals(70674600000, Date.parse("1972-03-28T23:50"));
263+
assertEquals(70588800000, Date.parse("1972-03-28"));
264264

265265
assertEquals(68338203500, Date.parse("1972-03T23:50:03.500+01:00"));
266266
assertEquals(68341803500, Date.parse("1972-03T23:50:03.500Z"));
267-
assertEquals(68341803500, Date.parse("1972-03T23:50:03.500Z"));
268-
assertEquals(68341803000, Date.parse("1972-03T23:50:03Z"));
269-
assertEquals(68341800000, Date.parse("1972-03T23:50Z"));
270-
assertEquals(68256000000, Date.parse("1972-03Z"));
267+
assertEquals(68341803500, Date.parse("1972-03T23:50:03.500"));
268+
assertEquals(68341803000, Date.parse("1972-03T23:50:03"));
269+
assertEquals(68341800000, Date.parse("1972-03T23:50"));
270+
assertEquals(68256000000, Date.parse("1972-03"));
271271

272272
assertEquals(63154203500, Date.parse("1972T23:50:03.500+01:00"));
273273
assertEquals(63157803500, Date.parse("1972T23:50:03.500Z"));
274-
assertEquals(63157803500, Date.parse("1972T23:50:03.500Z"));
275-
assertEquals(63157803000, Date.parse("1972T23:50:03Z"));
276-
assertEquals(63072000000, Date.parse("1972Z"));
274+
assertEquals(63157803500, Date.parse("1972T23:50:03.500"));
275+
assertEquals(63157803000, Date.parse("1972T23:50:03"));
276+
assertEquals(63072000000, Date.parse("1972"));
277277

278278
assertEquals(70671003500, Date.parse("+001972-03-28T23:50:03.500+01:00"));
279279
assertEquals(70674603500, Date.parse("+001972-03-28T23:50:03.500Z"));
280-
assertEquals(70674603500, Date.parse("+001972-03-28T23:50:03.500Z"));
281-
assertEquals(70674603000, Date.parse("+001972-03-28T23:50:03Z"));
282-
assertEquals(70674600000, Date.parse("+001972-03-28T23:50Z"));
283-
assertEquals(70588800000, Date.parse("+001972-03-28Z"));
280+
assertEquals(70674603500, Date.parse("+001972-03-28T23:50:03.500"));
281+
assertEquals(70674603000, Date.parse("+001972-03-28T23:50:03"));
282+
assertEquals(70674600000, Date.parse("+001972-03-28T23:50"));
283+
assertEquals(70588800000, Date.parse("+001972-03-28"));
284284

285285
assertEquals(68338203500, Date.parse("+001972-03T23:50:03.500+01:00"));
286286
assertEquals(68341803500, Date.parse("+001972-03T23:50:03.500Z"));
287-
assertEquals(68341803500, Date.parse("+001972-03T23:50:03.500Z"));
288-
assertEquals(68341803000, Date.parse("+001972-03T23:50:03Z"));
289-
assertEquals(68341800000, Date.parse("+001972-03T23:50Z"));
290-
assertEquals(68256000000, Date.parse("+001972-03Z"));
287+
assertEquals(68341803500, Date.parse("+001972-03T23:50:03.500"));
288+
assertEquals(68341803000, Date.parse("+001972-03T23:50:03"));
289+
assertEquals(68341800000, Date.parse("+001972-03T23:50"));
290+
assertEquals(68256000000, Date.parse("+001972-03"));
291291

292292
assertEquals(63154203500, Date.parse("+001972T23:50:03.500+01:00"));
293293
assertEquals(63157803500, Date.parse("+001972T23:50:03.500Z"));
294-
assertEquals(63157803500, Date.parse("+001972T23:50:03.500Z"));
295-
assertEquals(63157803000, Date.parse("+001972T23:50:03Z"));
296-
assertEquals(63072000000, Date.parse("+001972Z"));
294+
assertEquals(63157803500, Date.parse("+001972T23:50:03.500"));
295+
assertEquals(63157803000, Date.parse("+001972T23:50:03"));
296+
assertEquals(63072000000, Date.parse("+001972"));
297297

298298

299299
// Ensure that ISO-years in the range 00-99 aren't translated to the range
300300
// 1950..2049.
301-
assertEquals(-60904915200000, Date.parse("0040-01-01T00:00Z"));
302-
assertEquals(-60273763200000, Date.parse("0060-01-01T00:00Z"));
303-
assertEquals(-62167219200000, Date.parse("0000-01-01T00:00Z"));
304-
assertEquals(-62167219200000, Date.parse("+000000-01-01T00:00Z"));
301+
assertEquals(-60904915200000, Date.parse("0040-01-01"));
302+
assertEquals(-60273763200000, Date.parse("0060-01-01"));
303+
assertEquals(-62167219200000, Date.parse("0000-01-01"));
304+
assertEquals(-62167219200000, Date.parse("+000000-01-01"));
305305

306306
// Test negative years.
307-
assertEquals(-63429523200000, Date.parse("-000040-01-01Z"));
308-
assertEquals(-64060675200000, Date.parse("-000060-01-01Z"));
309-
assertEquals(-124397510400000, Date.parse("-001972-01-01Z"));
307+
assertEquals(-63429523200000, Date.parse("-000040-01-01"));
308+
assertEquals(-64060675200000, Date.parse("-000060-01-01"));
309+
assertEquals(-124397510400000, Date.parse("-001972-01-01"));
310310

311311
// Check time-zones.
312312
assertEquals(70674603500, Date.parse("1972-03-28T23:50:03.500Z"));
Collapse file

‎deps/v8/test/test262-es6/test262-es6.status‎

Copy file name to clipboardExpand all lines: deps/v8/test/test262-es6/test262-es6.status
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,9 @@
295295
'built-ins/Symbol/species/builtin-getter-name': [FAIL],
296296
'built-ins/Symbol/species/subclassing': [FAIL],
297297

298+
# https://code.google.com/p/v8/issues/detail?id=4242
299+
'built-ins/Date/15.9.1.15-1': [FAIL],
300+
298301
# https://code.google.com/p/v8/issues/detail?id=4004
299302
'built-ins/Date/prototype/setFullYear/15.9.5.40_1': [FAIL],
300303

Collapse file

‎deps/v8/test/test262/test262.status‎

Copy file name to clipboardExpand all lines: deps/v8/test/test262/test262.status
-3Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -281,9 +281,6 @@
281281
'15.2.3.13-1-3': [FAIL],
282282
'15.2.3.13-1-4': [FAIL],
283283

284-
# ES6 says for dates to default to the local timezone if none is specified
285-
'15.9.1.15-1': [FAIL],
286-
287284
######################## NEEDS INVESTIGATION ###########################
288285

289286
# These test failures are specific to the intl402 suite and need investigation
Collapse file

‎deps/v8/tools/run-tests.py‎

Copy file name to clipboardExpand all lines: deps/v8/tools/run-tests.py
+22Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,15 @@
5757
# expected runtimes (suites with slow test cases first). These groups are
5858
# invoked in seperate steps on the bots.
5959
TEST_MAP = {
60+
"bot_default": [
61+
"mjsunit",
62+
"cctest",
63+
"webkit",
64+
"message",
65+
"preparser",
66+
"intl",
67+
"unittests",
68+
],
6069
"default": [
6170
"mjsunit",
6271
"cctest",
@@ -80,6 +89,10 @@
8089

8190
VARIANTS = ["default", "stress", "turbofan", "nocrankshaft"]
8291

92+
EXHAUSTIVE_VARIANTS = VARIANTS + [
93+
# TODO(machenbach): Add always opt turbo variant.
94+
]
95+
8396
DEBUG_FLAGS = ["--nohard-abort", "--nodead-code-elimination",
8497
"--nofold-constants", "--enable-slow-asserts",
8598
"--debug-code", "--verify-heap"]
@@ -250,6 +263,9 @@ def BuildOptions():
250263
default=False, dest="no_variants", action="store_true")
251264
result.add_option("--variants",
252265
help="Comma-separated list of testing variants: %s" % VARIANTS)
266+
result.add_option("--exhaustive-variants",
267+
default=False, action="store_true",
268+
help="Use exhaustive set of default variants.")
253269
result.add_option("--outdir", help="Base directory with compile output",
254270
default="out")
255271
result.add_option("--predictable",
@@ -334,6 +350,7 @@ def BuildbotToV8Mode(config):
334350

335351
def ProcessOptions(options):
336352
global ALL_VARIANTS
353+
global EXHAUSTIVE_VARIANTS
337354
global VARIANTS
338355

339356
# Architecture and mode related stuff.
@@ -385,6 +402,11 @@ def ProcessOptions(options):
385402
if options.novfp3:
386403
options.extra_flags.append("--noenable-vfp3")
387404

405+
if options.exhaustive_variants:
406+
# This is used on many bots. It includes a larger set of default variants.
407+
# Other options for manipulating variants still apply afterwards.
408+
VARIANTS = EXHAUSTIVE_VARIANTS
409+
388410
if options.msan:
389411
VARIANTS = ["default"]
390412

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.