Currently str_substring implementing String.prototype.substring always creates dependent strings even if the result fits the short string. Although the short strings do take more memory using them would avoid flattening of the base string if it is a rope. Another advantage of the short string is that it does not prevent the base string from the GC.
So even if using short strings unconditionally may slow things down we should consider using them even if the base string is a rope or a likely to be short-lived based, for example, on a length heuristics.
*** Bug 617148 has been marked as a duplicate of this bug. ***