static function and access frame
Steven Schveighoffer
schveiguy at yahoo.com
Tue Jan 23 23:22:09 UTC 2018
On 1/23/18 6:08 PM, Alex wrote:
> On Tuesday, 23 January 2018 at 22:59:31 UTC, Steven Schveighoffer wrote:
>> On 1/23/18 5:52 PM, Steven Schveighoffer wrote:
>>> I don't know the reason. You would think that accessing s would be
>>> relative to T.fun's stack frame, and have nothing to do with an
>>> instance of T.
>>>
>>
>> using -vcg-ast gives a hint:
>>
>> https://run.dlang.io/is/MZHPTY
>>
>> Note that the T!(s) struct has a void *this member, that is probably
>> the main stack frame pointer.
>>
>
> So, if change the fun to static, it cannot pickup the pointer and
> therefore can't call anything of the aliased object. If I get it right...
I think so. But this is a guess, as the generated call clearly never
uses that 'this' member. Interesting to me that it calls that member
'this', when 'this' is already defined!
>
> cool option, by the way... didn't know anything about it. What does -ast
> do?
-vcg-ast means take the generated AST before optimization (I think), and
output a d-source-like file (called file.d.cg) that shows the
representation. Super useful when you are trying to figure out what the
compiler does to your code. It only happens if compilation succeeds.
-ast, I don't think does anything, but not sure if that's what your
question was.
The reason you don't know anything about it is because it's a debugging
option and not documented :) At least, that's what I was told...
If you click on the AST button on run.dlang.io, you get the same thing.
-Steve
More information about the Digitalmars-d-learn
mailing list