Chromium Code Reviews| Index: src/regexp.js |
| diff --git a/src/regexp.js b/src/regexp.js |
| index 00dd7f15b77ecb682a5747fbb5ebfe2b4c0593a7..01c5d9a349fba22b402c8486852f1dc92979b251 100644 |
| --- a/src/regexp.js |
| +++ b/src/regexp.js |
| @@ -421,16 +421,18 @@ function SetUpRegExp() { |
| LAST_INPUT(lastMatchInfo) = ToString(string); |
| } |
| - %DefineAccessor($RegExp, 'input', GETTER, RegExpGetInput, DONT_DELETE); |
| - %DefineAccessor($RegExp, 'input', SETTER, RegExpSetInput, DONT_DELETE); |
| - %DefineAccessor($RegExp, '$_', GETTER, RegExpGetInput, |
| - DONT_ENUM | DONT_DELETE); |
| - %DefineAccessor($RegExp, '$_', SETTER, RegExpSetInput, |
| - DONT_ENUM | DONT_DELETE); |
| - %DefineAccessor($RegExp, '$input', GETTER, RegExpGetInput, |
| - DONT_ENUM | DONT_DELETE); |
| - %DefineAccessor($RegExp, '$input', SETTER, RegExpSetInput, |
| - DONT_ENUM | DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, 'input', GETTER, RegExpGetInput, |
| + DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, 'input', SETTER, RegExpSetInput, |
| + DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, '$_', GETTER, RegExpGetInput, |
| + DONT_ENUM | DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, '$_', SETTER, RegExpSetInput, |
| + DONT_ENUM | DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, '$input', GETTER, RegExpGetInput, |
| + DONT_ENUM | DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, '$input', SETTER, RegExpSetInput, |
| + DONT_ENUM | DONT_DELETE); |
| // The properties multiline and $* are aliases for each other. When this |
| // value is set in SpiderMonkey, the value it is set to is coerced to a |
| @@ -444,49 +446,60 @@ function SetUpRegExp() { |
| function RegExpGetMultiline() { return multiline; } |
| function RegExpSetMultiline(flag) { multiline = flag ? true : false; } |
| - %DefineAccessor($RegExp, 'multiline', GETTER, RegExpGetMultiline, |
| - DONT_DELETE); |
| - %DefineAccessor($RegExp, 'multiline', SETTER, RegExpSetMultiline, |
| - DONT_DELETE); |
| - %DefineAccessor($RegExp, '$*', GETTER, RegExpGetMultiline, |
| - DONT_ENUM | DONT_DELETE); |
| - %DefineAccessor($RegExp, '$*', SETTER, RegExpSetMultiline, |
| - DONT_ENUM | DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, 'multiline', GETTER, |
| + RegExpGetMultiline, DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, 'multiline', SETTER, |
| + RegExpSetMultiline, DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, '$*', GETTER, RegExpGetMultiline, |
| + DONT_ENUM | DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, '$*', SETTER, RegExpSetMultiline, |
| + DONT_ENUM | DONT_DELETE); |
| function NoOpSetter(ignored) {} |
| // Static properties set by a successful match. |
| - %DefineAccessor($RegExp, 'lastMatch', GETTER, RegExpGetLastMatch, |
| - DONT_DELETE); |
| - %DefineAccessor($RegExp, 'lastMatch', SETTER, NoOpSetter, DONT_DELETE); |
| - %DefineAccessor($RegExp, '$&', GETTER, RegExpGetLastMatch, |
| - DONT_ENUM | DONT_DELETE); |
| - %DefineAccessor($RegExp, '$&', SETTER, NoOpSetter, DONT_ENUM | DONT_DELETE); |
| - %DefineAccessor($RegExp, 'lastParen', GETTER, RegExpGetLastParen, |
| - DONT_DELETE); |
| - %DefineAccessor($RegExp, 'lastParen', SETTER, NoOpSetter, DONT_DELETE); |
| - %DefineAccessor($RegExp, '$+', GETTER, RegExpGetLastParen, |
| - DONT_ENUM | DONT_DELETE); |
| - %DefineAccessor($RegExp, '$+', SETTER, NoOpSetter, DONT_ENUM | DONT_DELETE); |
| - %DefineAccessor($RegExp, 'leftContext', GETTER, RegExpGetLeftContext, |
| - DONT_DELETE); |
| - %DefineAccessor($RegExp, 'leftContext', SETTER, NoOpSetter, DONT_DELETE); |
| - %DefineAccessor($RegExp, '$`', GETTER, RegExpGetLeftContext, |
| - DONT_ENUM | DONT_DELETE); |
| - %DefineAccessor($RegExp, '$`', SETTER, NoOpSetter, DONT_ENUM | DONT_DELETE); |
| - %DefineAccessor($RegExp, 'rightContext', GETTER, RegExpGetRightContext, |
| - DONT_DELETE); |
| - %DefineAccessor($RegExp, 'rightContext', SETTER, NoOpSetter, DONT_DELETE); |
| - %DefineAccessor($RegExp, "$'", GETTER, RegExpGetRightContext, |
| - DONT_ENUM | DONT_DELETE); |
| - %DefineAccessor($RegExp, "$'", SETTER, NoOpSetter, DONT_ENUM | DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, 'lastMatch', GETTER, |
| + RegExpGetLastMatch, DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, 'lastMatch', SETTER, NoOpSetter, |
| + DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, '$&', GETTER, RegExpGetLastMatch, |
| + DONT_ENUM | DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, '$&', SETTER, NoOpSetter, |
| + DONT_ENUM | DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, 'lastParen', GETTER, |
|
Michael Starzinger
2012/02/21 12:14:28
Should fit into two lines.
Sven Panne
2012/02/21 12:23:31
Done.
|
| + RegExpGetLastParen, |
| + DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, 'lastParen', SETTER, NoOpSetter, |
| + DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, '$+', GETTER, RegExpGetLastParen, |
| + DONT_ENUM | DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, '$+', SETTER, NoOpSetter, |
| + DONT_ENUM | DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, 'leftContext', GETTER, |
| + RegExpGetLeftContext, DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, 'leftContext', SETTER, NoOpSetter, |
| + DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, '$`', GETTER, RegExpGetLeftContext, |
| + DONT_ENUM | DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, '$`', SETTER, NoOpSetter, |
| + DONT_ENUM | DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, 'rightContext', GETTER, |
| + RegExpGetRightContext, DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, 'rightContext', SETTER, NoOpSetter, |
| + DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, "$'", GETTER, |
| + RegExpGetRightContext, |
| + DONT_ENUM | DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, "$'", SETTER, NoOpSetter, |
| + DONT_ENUM | DONT_DELETE); |
| for (var i = 1; i < 10; ++i) { |
| - %DefineAccessor($RegExp, '$' + i, GETTER, RegExpMakeCaptureGetter(i), |
| - DONT_DELETE); |
| - %DefineAccessor($RegExp, '$' + i, SETTER, NoOpSetter, DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, '$' + i, GETTER, |
| + RegExpMakeCaptureGetter(i), DONT_DELETE); |
| + %DefineOrRedefineAccessorProperty($RegExp, '$' + i, SETTER, NoOpSetter, |
| + DONT_DELETE); |
| } |
| } |