On Tue, Jan 31, 2017 at 10:59 PM, Eliot Hedeman
<eliot.d.hede...@gmail.com> wrote:
> It may not be the most elegant solution, but you could possibly check for
> the high bit set on any pointer during GC. If the high bit is set, you know
> for sure that that pointer is not actually pointing to anything, but rather
> is data. Technically speaking, the top 16 bits of any pointer in x86-64 is
> completely ignored
> by the cpu, So To make this work, you would have to change the order of the
> stringStruct to be { len int, str unsafe.Pointer}, but the principle is the
> same, the last 8 bits could be used the exact same way.

1) Go runs on processors other than x86_64.

2) Even on x86_64, Solaris, for example, sign extends the stack
addresses, so the top 16 bits are not completely ignored by the OS.

Ian


> On Tuesday, January 31, 2017 at 9:15:54 PM UTC-8, Ian Lance wrote:
>>
>> On Tue, Jan 31, 2017 at 9:10 PM, Eliot Hedeman
>> <eliot.d...@gmail.com> wrote:
>> > I was writing up a proposal about adding the small string
>> > optimization(putting strings on the heap if they will fit within the
>> > sringStruct)to the go runtime, and I realized there might be good reason
>> > why
>> > this has not been done yet. Are there any glaring reasons you can think
>> > of?
>> > Here is the really rough draft of the proposal. Thanks for the feedback!
>>
>> The problem is that the concurrent garbage collector needs to be able
>> to determine reliably and safely whether a word in memory, including
>> on the stack, contains a pointer or not.  It's not OK to have a word
>> in memory that might or might contain a pointer.  It's a good thing
>> that Go doesn't have unions in the language, because they would be
>> very difficult to implement in the garbage collector.
>>
>> Ian
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to