| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 (function(global, utils) { | 5 (function(global, utils) { |
| 6 | 6 |
| 7 %CheckIsBootstrapping(); | 7 %CheckIsBootstrapping(); |
| 8 | 8 |
| 9 // ------------------------------------------------------------------- | 9 // ------------------------------------------------------------------- |
| 10 // Imports | 10 // Imports |
| (...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 637 return %_SubString(LAST_SUBJECT(RegExpLastMatchInfo), matchStart, matchEnd); | 637 return %_SubString(LAST_SUBJECT(RegExpLastMatchInfo), matchStart, matchEnd); |
| 638 }; | 638 }; |
| 639 } | 639 } |
| 640 | 640 |
| 641 | 641 |
| 642 // ES6 21.2.5.4. | 642 // ES6 21.2.5.4. |
| 643 function RegExpGetGlobal() { | 643 function RegExpGetGlobal() { |
| 644 if (!IS_REGEXP(this)) { | 644 if (!IS_REGEXP(this)) { |
| 645 // TODO(littledan): Remove this RegExp compat workaround | 645 // TODO(littledan): Remove this RegExp compat workaround |
| 646 if (this === GlobalRegExpPrototype) { | 646 if (this === GlobalRegExpPrototype) { |
| 647 %IncrementUseCounter(kRegExpPrototypeOldFlagGetter); |
| 647 return UNDEFINED; | 648 return UNDEFINED; |
| 648 } | 649 } |
| 649 throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.global"); | 650 throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.global"); |
| 650 } | 651 } |
| 651 return !!REGEXP_GLOBAL(this); | 652 return !!REGEXP_GLOBAL(this); |
| 652 } | 653 } |
| 653 %FunctionSetName(RegExpGetGlobal, "RegExp.prototype.global"); | 654 %FunctionSetName(RegExpGetGlobal, "RegExp.prototype.global"); |
| 654 %SetNativeFlag(RegExpGetGlobal); | 655 %SetNativeFlag(RegExpGetGlobal); |
| 655 | 656 |
| 656 | 657 |
| 657 // ES6 21.2.5.5. | 658 // ES6 21.2.5.5. |
| 658 function RegExpGetIgnoreCase() { | 659 function RegExpGetIgnoreCase() { |
| 659 if (!IS_REGEXP(this)) { | 660 if (!IS_REGEXP(this)) { |
| 660 // TODO(littledan): Remove this RegExp compat workaround | 661 // TODO(littledan): Remove this RegExp compat workaround |
| 661 if (this === GlobalRegExpPrototype) { | 662 if (this === GlobalRegExpPrototype) { |
| 663 %IncrementUseCounter(kRegExpPrototypeOldFlagGetter); |
| 662 return UNDEFINED; | 664 return UNDEFINED; |
| 663 } | 665 } |
| 664 throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.ignoreCase"); | 666 throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.ignoreCase"); |
| 665 } | 667 } |
| 666 return !!REGEXP_IGNORE_CASE(this); | 668 return !!REGEXP_IGNORE_CASE(this); |
| 667 } | 669 } |
| 668 %FunctionSetName(RegExpGetIgnoreCase, "RegExp.prototype.ignoreCase"); | 670 %FunctionSetName(RegExpGetIgnoreCase, "RegExp.prototype.ignoreCase"); |
| 669 %SetNativeFlag(RegExpGetIgnoreCase); | 671 %SetNativeFlag(RegExpGetIgnoreCase); |
| 670 | 672 |
| 671 | 673 |
| 672 // ES6 21.2.5.7. | 674 // ES6 21.2.5.7. |
| 673 function RegExpGetMultiline() { | 675 function RegExpGetMultiline() { |
| 674 if (!IS_REGEXP(this)) { | 676 if (!IS_REGEXP(this)) { |
| 675 // TODO(littledan): Remove this RegExp compat workaround | 677 // TODO(littledan): Remove this RegExp compat workaround |
| 676 if (this === GlobalRegExpPrototype) { | 678 if (this === GlobalRegExpPrototype) { |
| 679 %IncrementUseCounter(kRegExpPrototypeOldFlagGetter); |
| 677 return UNDEFINED; | 680 return UNDEFINED; |
| 678 } | 681 } |
| 679 throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.multiline"); | 682 throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.multiline"); |
| 680 } | 683 } |
| 681 return !!REGEXP_MULTILINE(this); | 684 return !!REGEXP_MULTILINE(this); |
| 682 } | 685 } |
| 683 %FunctionSetName(RegExpGetMultiline, "RegExp.prototype.multiline"); | 686 %FunctionSetName(RegExpGetMultiline, "RegExp.prototype.multiline"); |
| 684 %SetNativeFlag(RegExpGetMultiline); | 687 %SetNativeFlag(RegExpGetMultiline); |
| 685 | 688 |
| 686 | 689 |
| 687 // ES6 21.2.5.10. | 690 // ES6 21.2.5.10. |
| 688 function RegExpGetSource() { | 691 function RegExpGetSource() { |
| 689 if (!IS_REGEXP(this)) { | 692 if (!IS_REGEXP(this)) { |
| 690 // TODO(littledan): Remove this RegExp compat workaround | 693 // TODO(littledan): Remove this RegExp compat workaround |
| 691 if (this === GlobalRegExpPrototype) { | 694 if (this === GlobalRegExpPrototype) { |
| 695 %IncrementUseCounter(kRegExpPrototypeSourceGetter); |
| 692 return UNDEFINED; | 696 return UNDEFINED; |
| 693 } | 697 } |
| 694 throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.source"); | 698 throw MakeTypeError(kRegExpNonRegExp, "RegExp.prototype.source"); |
| 695 } | 699 } |
| 696 return REGEXP_SOURCE(this); | 700 return REGEXP_SOURCE(this); |
| 697 } | 701 } |
| 698 %FunctionSetName(RegExpGetSource, "RegExp.prototype.source"); | 702 %FunctionSetName(RegExpGetSource, "RegExp.prototype.source"); |
| 699 %SetNativeFlag(RegExpGetSource); | 703 %SetNativeFlag(RegExpGetSource); |
| 700 | 704 |
| 701 // ------------------------------------------------------------------- | 705 // ------------------------------------------------------------------- |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 772 // Exports | 776 // Exports |
| 773 | 777 |
| 774 utils.Export(function(to) { | 778 utils.Export(function(to) { |
| 775 to.RegExpExec = DoRegExpExec; | 779 to.RegExpExec = DoRegExpExec; |
| 776 to.RegExpExecNoTests = RegExpExecNoTests; | 780 to.RegExpExecNoTests = RegExpExecNoTests; |
| 777 to.RegExpLastMatchInfo = RegExpLastMatchInfo; | 781 to.RegExpLastMatchInfo = RegExpLastMatchInfo; |
| 778 to.RegExpTest = RegExpTest; | 782 to.RegExpTest = RegExpTest; |
| 779 }); | 783 }); |
| 780 | 784 |
| 781 }) | 785 }) |
| OLD | NEW |