Bug 1263340 - Part 2: Use internal slot for sticky flag in @@replace and @@search optimized path. r=h4writer

This commit is contained in:
Tooru Fujisawa 2016-04-22 10:35:41 +09:00
Родитель 818ce9857c
Коммит 5669fe7805
1 изменённых файлов: 8 добавлений и 4 удалений

Просмотреть файл

@ -378,7 +378,8 @@ function RegExpGlobalReplaceShortOpt(rx, S, lengthS, replaceValue)
// Step 13 (reordered).
var nextSourcePosition = 0;
var sticky = !!rx.sticky;
var flags = UnsafeGetInt32FromReservedSlot(rx, REGEXP_FLAGS_SLOT);
var sticky = !!(flags & REGEXP_STICKY_FLAG);
// Step 11.
while (true) {
@ -432,7 +433,8 @@ function RegExpGlobalReplaceOpt(rx, S, lengthS, replaceValue)
// Step 13 (reordered).
var nextSourcePosition = 0;
var sticky = !!rx.sticky;
var flags = UnsafeGetInt32FromReservedSlot(rx, REGEXP_FLAGS_SLOT);
var sticky = !!(flags & REGEXP_STICKY_FLAG);
// Step 11.
while (true) {
@ -483,7 +485,8 @@ function RegExpGlobalReplaceOpt(rx, S, lengthS, replaceValue)
// Optimized path for @@replace without global flag.
function RegExpLocalReplaceOpt(rx, S, lengthS, replaceValue)
{
var sticky = !!rx.sticky;
var flags = UnsafeGetInt32FromReservedSlot(rx, REGEXP_FLAGS_SLOT);
var sticky = !!(flags & REGEXP_STICKY_FLAG);
var lastIndex;
if (sticky) {
@ -547,7 +550,8 @@ function RegExpSearch(string) {
var result;
if (IsRegExpMethodOptimizable(rx) && S.length < 0x7fff) {
var sticky = !!rx.sticky;
var flags = UnsafeGetInt32FromReservedSlot(rx, REGEXP_FLAGS_SLOT);
var sticky = !!(flags & REGEXP_STICKY_FLAG);
// Step 6.
result = RegExpSearcher(rx, S, 0, sticky);