| Index: src/regexp.js
|
| ===================================================================
|
| --- src/regexp.js (revision 9531)
|
| +++ src/regexp.js (working copy)
|
| @@ -95,12 +95,11 @@
|
| }
|
| }
|
|
|
| -
|
| // Deprecated RegExp.prototype.compile method. We behave like the constructor
|
| // were called again. In SpiderMonkey, this method returns the regexp object.
|
| // In JSC, it returns undefined. For compatibility with JSC, we match their
|
| // behavior.
|
| -function CompileRegExp(pattern, flags) {
|
| +function RegExpCompile(pattern, flags) {
|
| // Both JSC and SpiderMonkey treat a missing pattern argument as the
|
| // empty subject string, and an actual undefined value passed as the
|
| // pattern as the string 'undefined'. Note that JSC is inconsistent
|
| @@ -108,6 +107,11 @@
|
| // RegExp.prototype.compile and in the constructor, where they are
|
| // the empty string. For compatibility with JSC, we match their
|
| // behavior.
|
| + if (this == $RegExp.prototype) {
|
| + // We don't allow recompiling RegExp.prototype.
|
| + throw MakeTypeError('incompatible_method_receiver',
|
| + ['RegExp.prototype.compile', this]);
|
| + }
|
| if (IS_UNDEFINED(pattern) && %_ArgumentsLength() != 0) {
|
| DoConstructRegExp(this, 'undefined', flags);
|
| } else {
|
| @@ -408,7 +412,6 @@
|
| function SetUpRegExp() {
|
| %CheckIsBootstrapping();
|
| %FunctionSetInstanceClassName($RegExp, 'RegExp');
|
| - %FunctionSetPrototype($RegExp, new $Object());
|
| %SetProperty($RegExp.prototype, 'constructor', $RegExp, DONT_ENUM);
|
| %SetCode($RegExp, RegExpConstructor);
|
|
|
| @@ -416,7 +419,7 @@
|
| "exec", RegExpExec,
|
| "test", RegExpTest,
|
| "toString", RegExpToString,
|
| - "compile", CompileRegExp
|
| + "compile", RegExpCompile
|
| ));
|
|
|
| // The length of compile is 1 in SpiderMonkey.
|
|
|
| Property changes on: src/regexp.js
|
| ___________________________________________________________________
|
| Modified: svn:mergeinfo
|
| Merged /branches/experimental/gc/src/regexp.js:r6007-9327
|
| Merged /branches/bleeding_edge/src/regexp.js:r9287-9529
|
|
|
|
|