On 07.05.2009, at 18:53, Eliot Miranda wrote:

On Thu, May 7, 2009 at 9:36 AM, Igor Stasenko <siguctua@gmail.com> wrote:

2009/5/7 Eliot Miranda <eliot.miranda@gmail.com>:
>I intend to add immediate characters within the next few months.
>
so, does that means that you will extend the oop tag to 2 bits (or more)?

Yes.  Keep 31-bit SmallIntegers, provide e.g. 24-bit immediate characters.  Andreas wrote a thorough sketch of this scheme in 2006.
 
Or just reserve a non-movable heap space for character objects, like:
isCharacterObject: oop
 ^ oop >= charsStart and: [ oop < charsEnd ]

No. This doesn't scale to unicode.  The tagged approach provides much faster string access, and identity comparison for all characters, not just the byte range.

Do we have evidence that Character allocation is an actual performance bottleneck?

- Bert -