Ignore:
Timestamp:
Jul 24, 2013, 9:03:30 PM (12 years ago)
Author:
[email protected]
Message:

fourthTier: Small strings shouldn't get GC'd
https://bugs.webkit.org/show_bug.cgi?id=117897

Source/JavaScriptCore:

Reviewed by Mark Hahnenberg.

Kill off the code needed to allocate them lazily and finalize them.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetByValOnString):

  • heap/Heap.cpp:

(JSC::Heap::collect):

  • runtime/JSString.h:

(JSC::jsSingleCharacterString):
(JSC::jsSingleCharacterSubstring):
(JSC::jsString):
(JSC::jsSubstring8):
(JSC::jsSubstring):
(JSC::jsOwnedString):

  • runtime/NumberPrototype.cpp:

(JSC::integerValueToString):

  • runtime/SmallStrings.cpp:

(JSC):
(JSC::SmallStrings::initializeCommonStrings):
(JSC::SmallStrings::visitStrongReferences):

  • runtime/SmallStrings.h:

(JSC::SmallStrings::singleCharacterString):
(SmallStrings):

LayoutTests:

Reviewed by Mark Hahnenberg.

This test speeds up by 5%.

  • fast/js/regress/script-tests/string-get-by-val.js: Added.

(foo):

  • fast/js/regress/string-get-by-val-expected.txt: Added.
  • fast/js/regress/string-get-by-val.html: Added.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/runtime/JSString.h

    r153239 r153240  
    352352    {
    353353        if (c <= maxSingleCharacterString)
    354             return vm->smallStrings.singleCharacterString(vm, c);
     354            return vm->smallStrings.singleCharacterString(c);
    355355        return JSString::create(*vm, String(&c, 1).impl());
    356356    }
     
    362362        UChar c = s.characterAt(offset);
    363363        if (c <= maxSingleCharacterString)
    364             return vm->smallStrings.singleCharacterString(vm, c);
     364            return vm->smallStrings.singleCharacterString(c);
    365365        return JSString::create(*vm, StringImpl::create(s.impl(), offset, 1));
    366366    }
     
    403403            UChar c = s.characterAt(0);
    404404            if (c <= maxSingleCharacterString)
    405                 return vm->smallStrings.singleCharacterString(vm, c);
     405                return vm->smallStrings.singleCharacterString(c);
    406406        }
    407407        return JSString::create(*vm, s.impl());
     
    429429            UChar c = s.characterAt(offset);
    430430            if (c <= maxSingleCharacterString)
    431                 return vm->smallStrings.singleCharacterString(vm, c);
     431                return vm->smallStrings.singleCharacterString(c);
    432432        }
    433433        return JSString::createHasOtherOwner(*vm, StringImpl::create8(s.impl(), offset, length));
     
    444444            UChar c = s.characterAt(offset);
    445445            if (c <= maxSingleCharacterString)
    446                 return vm->smallStrings.singleCharacterString(vm, c);
     446                return vm->smallStrings.singleCharacterString(c);
    447447        }
    448448        return JSString::createHasOtherOwner(*vm, StringImpl::create(s.impl(), offset, length));
     
    457457            UChar c = s.characterAt(0);
    458458            if (c <= maxSingleCharacterString)
    459                 return vm->smallStrings.singleCharacterString(vm, c);
     459                return vm->smallStrings.singleCharacterString(c);
    460460        }
    461461        return JSString::createHasOtherOwner(*vm, s.impl());
Note: See TracChangeset for help on using the changeset viewer.