Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
July 07, 2017 Finding source of typeid use | ||||
---|---|---|---|---|
| ||||
My library is generating a typeid from somewhere. e.g. typeid(const(Pointer!(cast(AddrSpace)1u, float))) but I have never declared a const of that type nor have I used typeid explicitly in my program. Where is this coming from? The program is just: enum AddrSpace { Global, Shared } struct Pointer(AddrSpace n,T) { T* ptr; } private import std.traits; struct AutoIndexed(T) if (isInstanceOf(T,Pointer)) { T p = void; enum n = TemplateArgsOf!(T)[0]; alias U = TemplateArgsOf!(T)[1]; static assert(n == AddrSpace.Global || n == AddrSpace.Shared); @property U index() { static if (n == AddrSpace.Global) return p[0]; //Some calculation else static if (n == AddrSpace.Shared) return p[0];// ditto } @property void index(U t) { static if (n == AddrSpace.Global) p[0] = t; // ditto else static if (n == AddrSpace.Shared) p[0] = t; // ditto } @disable this(); alias index this; } alias aagf = AutoIndexed!(GlobalPointer!(float)); @kernel void auto_index_test(aagf a, aagf b, aagf c) { a = b + c; } |
July 08, 2017 Re: Finding source of typeid use | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nicholas Wilson | On Friday, 7 July 2017 at 08:49:58 UTC, Nicholas Wilson wrote:
> My library is generating a typeid from somewhere.
> e.g.
> typeid(const(Pointer!(cast(AddrSpace)1u, float)))
>
> [...]
It seems to be coming from the need to hash the type, goodness knows why, which explains why I only get the const variety.
|
July 08, 2017 Re: Finding source of typeid use | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nicholas Wilson | On 08/07/2017 2:35 AM, Nicholas Wilson wrote: > On Friday, 7 July 2017 at 08:49:58 UTC, Nicholas Wilson wrote: >> My library is generating a typeid from somewhere. >> e.g. >> typeid(const(Pointer!(cast(AddrSpace)1u, float))) >> >> [...] > > It seems to be coming from the need to hash the type, goodness knows why, which explains why I only get the const variety. https://github.com/dlang/druntime/blob/master/src/object.d#L253 Maybe? |
July 08, 2017 Re: Finding source of typeid use | ||||
---|---|---|---|---|
| ||||
Posted in reply to rikki cattermole | On Saturday, 8 July 2017 at 05:36:49 UTC, rikki cattermole wrote: > On 08/07/2017 2:35 AM, Nicholas Wilson wrote: >> On Friday, 7 July 2017 at 08:49:58 UTC, Nicholas Wilson wrote: >>> My library is generating a typeid from somewhere. >>> e.g. >>> typeid(const(Pointer!(cast(AddrSpace)1u, float))) >>> >>> [...] >> >> It seems to be coming from the need to hash the type, goodness knows why, which explains why I only get the const variety. > > https://github.com/dlang/druntime/blob/master/src/object.d#L253 Maybe? No, the culprit is https://github.com/dlang/druntime/blob/master/src/object.d#L1128 but IDK why it is being generated in the first place since nothing I wrote relies on being able to hash it. |
July 08, 2017 Re: Finding source of typeid use | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nicholas Wilson |
On 08.07.2017 07:55, Nicholas Wilson wrote:
> On Saturday, 8 July 2017 at 05:36:49 UTC, rikki cattermole wrote:
>> On 08/07/2017 2:35 AM, Nicholas Wilson wrote:
>>> On Friday, 7 July 2017 at 08:49:58 UTC, Nicholas Wilson wrote:
>>>> My library is generating a typeid from somewhere.
>>>> e.g.
>>>> typeid(const(Pointer!(cast(AddrSpace)1u, float)))
>>>>
>>>> [...]
>>>
>>> It seems to be coming from the need to hash the type, goodness knows why, which explains why I only get the const variety.
>>
>> https://github.com/dlang/druntime/blob/master/src/object.d#L253 Maybe?
>
> No, the culprit is
> https://github.com/dlang/druntime/blob/master/src/object.d#L1128
> but IDK why it is being generated in the first place since nothing I wrote relies on being able to hash it.
I suspect this is generated while building the hash function for your Pointer struct in buildXtoHash in ddmd/clone.d.
|
July 08, 2017 Re: Finding source of typeid use | ||||
---|---|---|---|---|
| ||||
Posted in reply to Rainer Schuetze | On Saturday, 8 July 2017 at 08:56:17 UTC, Rainer Schuetze wrote: > > > On 08.07.2017 07:55, Nicholas Wilson wrote: >> On Saturday, 8 July 2017 at 05:36:49 UTC, rikki cattermole wrote: >>> On 08/07/2017 2:35 AM, Nicholas Wilson wrote: >>>> On Friday, 7 July 2017 at 08:49:58 UTC, Nicholas Wilson wrote: >>>>> My library is generating a typeid from somewhere. >>>>> e.g. >>>>> typeid(const(Pointer!(cast(AddrSpace)1u, float))) >>>>> >>>>> [...] >>>> >>>> It seems to be coming from the need to hash the type, goodness knows why, which explains why I only get the const variety. >>> >>> https://github.com/dlang/druntime/blob/master/src/object.d#L253 Maybe? >> >> No, the culprit is >> https://github.com/dlang/druntime/blob/master/src/object.d#L1128 >> but IDK why it is being generated in the first place since nothing I wrote relies on being able to hash it. > > I suspect this is generated while building the hash function for your Pointer struct in buildXtoHash in ddmd/clone.d. Hmm, I found needToHash(StructDeclaration sd) which enumerates the fields If a field is a struct recurse, makes sense if the struct has an alias this, which Pointer does, generate a typeinfo, with a note to see https://issues.dlang.org/show_bug.cgi?id=14948 / dmdPR 5001. |
Copyright © 1999-2021 by the D Language Foundation