On 2/26/15 11:57 AM, captaindet wrote:
On 2015-02-26 10:07, Steven Schveighoffer wrote:
Static data I believe is always scanned conservatively because no
type information is stored for it ever, even on allocation (i.e.
program startup).

ouh, the confusion goes on... are you saying that

{
     // will be all scanned by GC for
     // potential pointers into GC managed memory:
     void[16] buffer0 = void;
     ubyte[16] buffer1;
     uint[4] buffer3;

Yes, all 3 are stack based. This is not static data, which would be like uint[4] at module level. Those are also treated as scannable, as the entire stack of every thread is scanned.

     // will not be scanned by GC for pointers:
     void[] buffer4 = cast(void[])(new ubyte[16]);
     uint[] buffer5 = cast(uint[])(new ubyte[16]);

Correct, since they are allocated as ubyte[]. uint[] also would not be scanned.

-Steve

Reply via email to