jsSubstring() should support creating substrings from substrings.
authorakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Jun 2015 04:09:11 +0000 (04:09 +0000)
committerakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Jun 2015 04:09:11 +0000 (04:09 +0000)
commit7673dc59540af9b12830602cd46d07999d08105d
tree1ce91c8c324337e6bbfacc110b9aeb279800f350
parent8a3674ab429da264da8c8d97cd08273c27b60aea
jsSubstring() should support creating substrings from substrings.
<https://webkit.org/b/145427>

Reviewed by Geoffrey Garen

Tweak jsSubstring() to support base strings that are themselves substrings.
They will now share the same grandparent base. This avoids creating a new StringImpl.

* runtime/JSString.h:
(JSC::jsSubstring): Don't force rope resolution here. Instead do that in finishCreation()
if the base string is a non-substring rope. Note that resolveRope() is the very last thing
called, since it may allocate and the JSRopeString needs to be ready for marking.

(JSC::JSString::isSubstring): Added a helper to find out if a JSString is
a substring. This is just for internal use, so you don't have to cast to
JSRopeString for the real substringness flag.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@185486 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/JSString.h