Skip to content

Commit

Permalink
deps: cherry-pick 34880eb3dc from V8 upstream
Browse files Browse the repository at this point in the history
Original commit message:

    Revert of Put RegExp js code in strict mode (patchset nodejs#2 id:20001
    of https://codereview.chromium.org/1776883005/ )

    Reason for revert:
    Found to break SAP Web IDE, and these semantics are not shipped
    in any other browser.
    Revert to legacy semantics while assessing web compatibility.

    BUG=chromium:624318

    Original issue's description:
    > Put RegExp js code in strict mode
    >
    > src/js/regexp.js was one of the few files that was left in sloppy
    > mode. The ES2017 draft specification requires that writes to
    > lastIndex throw when the property is non-writable, and test262
    > tests enforce this behavior. This patch puts that file in strict
    > mode.
    >
    > BUG=v8:4504
    > R=yangguo@chromium.org
    > LOG=Y
    >
    > Committed: https://crrev.com/80b1b2a45bbd9bf3d08e4e6516acfaaa8f438213
    > Cr-Commit-Position: refs/heads/master@{nodejs#34801}

    TBR=yangguo@chromium.org,adamk@chromium.org

    Review-Url: https://codereview.chromium.org/2112713003
    Cr-Commit-Position: refs/heads/master@{nodejs#37449}

PR-URL: nodejs#8673
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
  • Loading branch information
Myles Borins committed Sep 23, 2016
1 parent 97406ba commit aafc314
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 23 deletions.
2 changes: 0 additions & 2 deletions deps/v8/src/js/regexp.js
Expand Up @@ -4,8 +4,6 @@

(function(global, utils) {

'use strict';

%CheckIsBootstrapping();

// -------------------------------------------------------------------
Expand Down
18 changes: 0 additions & 18 deletions deps/v8/test/mjsunit/regexp-lastIndex.js

This file was deleted.

16 changes: 16 additions & 0 deletions deps/v8/test/test262/test262.status
Expand Up @@ -131,6 +131,22 @@
'built-ins/RegExp/prototype/Symbol.replace/y-init-lastindex': [FAIL],
'built-ins/RegExp/prototype/Symbol.replace/y-set-lastindex': [FAIL],

# https://code.google.com/p/v8/issues/detail?id=4504
# https://bugs.chromium.org/p/chromium/issues/detail?id=624318
'built-ins/RegExp/prototype/Symbol.match/builtin-failure-set-lastindex-err': [PASS, FAIL],
'built-ins/RegExp/prototype/Symbol.match/builtin-failure-y-set-lastindex-err': [PASS, FAIL],
'built-ins/RegExp/prototype/Symbol.match/builtin-success-g-set-lastindex-err': [SKIP],
'built-ins/RegExp/prototype/Symbol.match/builtin-success-y-set-lastindex-err': [PASS, FAIL],
'built-ins/RegExp/prototype/Symbol.match/g-init-lastindex-err': [PASS, FAIL],
'built-ins/RegExp/prototype/Symbol.match/g-match-empty-set-lastindex-err': [PASS, FAIL],
'built-ins/RegExp/prototype/Symbol.match/y-fail-lastindex-no-write': [PASS, FAIL],
'built-ins/RegExp/prototype/Symbol.replace/g-init-lastindex-err': [PASS, FAIL],
'built-ins/RegExp/prototype/Symbol.replace/y-fail-lastindex-no-write': [PASS, FAIL],
'built-ins/RegExp/prototype/Symbol.search/set-lastindex-init-err': [PASS, FAIL],
'built-ins/RegExp/prototype/Symbol.search/set-lastindex-restore-err': [PASS, FAIL],
'built-ins/RegExp/prototype/exec/y-fail-lastindex-no-write': [PASS, FAIL],
'built-ins/RegExp/prototype/test/y-fail-lastindex-no-write': [PASS, FAIL],

# SKIP rather than FAIL, as the test checks for an exception which
# happens to be thrown for some other reason.
'built-ins/RegExp/prototype/Symbol.split/str-result-get-length-err': [SKIP],
Expand Down
6 changes: 3 additions & 3 deletions deps/v8/test/webkit/fast/regex/lastIndex-expected.txt
Expand Up @@ -42,10 +42,10 @@ PASS var re = Object.defineProperty(/x/, 'lastIndex', {value:42}); re.lastIndex
PASS Object.defineProperty(Object.defineProperty(/x/, 'lastIndex', {writable:false}), 'lastIndex', {writable:true}); true threw exception TypeError: Cannot redefine property: lastIndex.
PASS Object.defineProperty(Object.defineProperty(/x/, 'lastIndex', {writable:false}), 'lastIndex', {value:42}); true threw exception TypeError: Cannot redefine property: lastIndex.
PASS Object.defineProperty(Object.defineProperty(/x/, 'lastIndex', {writable:false}), 'lastIndex', {value:0}); true is true
FAIL Object.defineProperty(/x/, 'lastIndex', {writable:false}).exec('') should be null. Threw exception TypeError: Cannot assign to read only property 'lastIndex' of object '[object RegExp]'
PASS Object.defineProperty(/x/, 'lastIndex', {writable:false}).exec('') is null
PASS Object.defineProperty(/x/, 'lastIndex', {writable:false}).exec('x') is ["x"]
PASS Object.defineProperty(/x/g, 'lastIndex', {writable:false}).exec('') threw exception TypeError: Cannot assign to read only property 'lastIndex' of object '[object RegExp]'.
PASS Object.defineProperty(/x/g, 'lastIndex', {writable:false}).exec('x') threw exception TypeError: Cannot assign to read only property 'lastIndex' of object '[object RegExp]'.
FAIL Object.defineProperty(/x/g, 'lastIndex', {writable:false}).exec('') should throw an exception. Was null.
FAIL Object.defineProperty(/x/g, 'lastIndex', {writable:false}).exec('x') should throw an exception. Was x.
PASS var re = /x/; Object.freeze(re); Object.isFrozen(re); is true
PASS successfullyParsed is true

Expand Down

0 comments on commit aafc314

Please sign in to comment.