Commit 4ea11ca9 authored by littledan's avatar littledan Committed by Commit bot

Add UseCounters for various RegExp compatibility issues

We have compatibility workarounds to return 'undefined' on accessors
to RegExp.prototype. This patch adds two UseCounters for two categories
of this non-spec-compliant path:
- source
- ignorecase, multiline, global

R=yangguo
BUG=chromium:581577
LOG=Y

Review URL: https://codereview.chromium.org/1762423002

Cr-Commit-Position: refs/heads/master@{#34597}
parent 77361020
...@@ -5546,6 +5546,8 @@ class V8_EXPORT Isolate { ...@@ -5546,6 +5546,8 @@ class V8_EXPORT Isolate {
kArrayInstanceProtoModified = 27, kArrayInstanceProtoModified = 27,
kArrayInstanceConstructorModified = 28, kArrayInstanceConstructorModified = 28,
kLegacyFunctionDeclaration = 29, kLegacyFunctionDeclaration = 29,
kRegExpPrototypeSourceGetter = 30,
kRegExpPrototypeOldFlagGetter = 31,
// If you add new values here, you'll also need to update V8Initializer.cpp // If you add new values here, you'll also need to update V8Initializer.cpp
// in Chromium. // in Chromium.
......
...@@ -265,3 +265,15 @@ define kIntlResolved = 16; ...@@ -265,3 +265,15 @@ define kIntlResolved = 16;
define kPromiseChain = 17; define kPromiseChain = 17;
define kPromiseAccept = 18; define kPromiseAccept = 18;
define kPromiseDefer = 19; define kPromiseDefer = 19;
define kHtmlCommentInExternalScript = 20;
define kHtmlComment = 21;
define kSloppyModeBlockScopedFunctionRedefinition = 22;
define kForInInitializer = 23;
define kArrayProtectorDirtied = 24;
define kArraySpeciesModified = 25;
define kArrayPrototypeConstructorModified = 26;
define kArrayInstanceProtoModified = 27;
define kArrayInstanceConstructorModified = 28;
define kLegacyFunctionDeclaration = 29;
define kRegExpPrototypeSourceGetter = 30;
define kRegExpPrototypeOldFlagGetter = 31;
...@@ -644,6 +644,7 @@ function RegExpGetGlobal() { ...@@ -644,6 +644,7 @@ function RegExpGetGlobal() {
if (!IS_REGEXP(this)) { if (!IS_REGEXP(this)) {
// TODO(littledan): Remove this RegExp compat workaround // TODO(littledan): Remove this RegExp compat workaround
if (this === GlobalRegExpPrototype) { if (this === GlobalRegExpPrototype) {
%IncrementUseCounter(kRegExpPrototypeOldFlagGetter);
return UNDEFINED; return UNDEFINED;
} }
throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.global"); throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.global");
...@@ -659,6 +660,7 @@ function RegExpGetIgnoreCase() { ...@@ -659,6 +660,7 @@ function RegExpGetIgnoreCase() {
if (!IS_REGEXP(this)) { if (!IS_REGEXP(this)) {
// TODO(littledan): Remove this RegExp compat workaround // TODO(littledan): Remove this RegExp compat workaround
if (this === GlobalRegExpPrototype) { if (this === GlobalRegExpPrototype) {
%IncrementUseCounter(kRegExpPrototypeOldFlagGetter);
return UNDEFINED; return UNDEFINED;
} }
throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.ignoreCase"); throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.ignoreCase");
...@@ -674,6 +676,7 @@ function RegExpGetMultiline() { ...@@ -674,6 +676,7 @@ function RegExpGetMultiline() {
if (!IS_REGEXP(this)) { if (!IS_REGEXP(this)) {
// TODO(littledan): Remove this RegExp compat workaround // TODO(littledan): Remove this RegExp compat workaround
if (this === GlobalRegExpPrototype) { if (this === GlobalRegExpPrototype) {
%IncrementUseCounter(kRegExpPrototypeOldFlagGetter);
return UNDEFINED; return UNDEFINED;
} }
throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.multiline"); throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.multiline");
...@@ -689,6 +692,7 @@ function RegExpGetSource() { ...@@ -689,6 +692,7 @@ function RegExpGetSource() {
if (!IS_REGEXP(this)) { if (!IS_REGEXP(this)) {
// TODO(littledan): Remove this RegExp compat workaround // TODO(littledan): Remove this RegExp compat workaround
if (this === GlobalRegExpPrototype) { if (this === GlobalRegExpPrototype) {
%IncrementUseCounter(kRegExpPrototypeSourceGetter);
return UNDEFINED; return UNDEFINED;
} }
throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.source"); throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.source");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment