[dmd-internals] Using symbol for instance variable offset

Daniel Murphy yebblies at gmail.com
Tue Apr 1 03:43:27 PDT 2014


Can you do the offset symbols the same way as vtbl symbols (ie once per
class) then reference them from DotVarExp::toElem?  If I understand
correctly that's the right place for this.


On Sat, Mar 29, 2014 at 11:48 PM, Jacob Carlborg <doob at me.com> wrote:

> As a part of implementing D/Objective-C I need to implement non-fragile
> instance variables for 64bit. Non-fragile instance variables work like
> regular instance variables except that instead of using a compile time
> known offset a symbol containing the offset is used. The compiler outputs
> these symbols with the compile time known offset. Then at load time the
> offset can be replaced with something else. At runtime when accessing an
> instance variable the offset stored in the symbol should be used.
>
> I hit a problem I hit a problem trying to implement this. This is how the
> implementation currently looks like [1]. If I output the offset symbol for
> an instance variable in DotVarExp::toElem [2] I get a duplicate symbol
> error when compiling an application. If I don't output the offset symbol I
> get an assertion failure here instead [3]. Note that I'm currently always
> outputting the offset symbol when outputting the metadata for a class [4].
>
> Any ideas how to solve this?
>
> [1]
> https://github.com/jacob-carlborg/dmd/commit/9d9f6c9a5edc455b066ec77c5f1373b2886860a6
> [2]
> https://github.com/jacob-carlborg/dmd/blob/9d9f6c9a5edc455b066ec77c5f1373b2886860a6/src/e2ir.c#L3664-L3674
> [3]
> https://github.com/jacob-carlborg/dmd/blob/9d9f6c9a5edc455b066ec77c5f1373b2886860a6/src/backend/cod1.c#L1487
> [4]
> https://github.com/jacob-carlborg/dmd/blob/9d9f6c9a5edc455b066ec77c5f1373b2886860a6/src/objc.c#L1629
>
> Note, the code is not up to date with upstream HEAD, but it's fairly
> recent.
>
> --
> /Jacob Carlborg
>
> _______________________________________________
> dmd-internals mailing list
> dmd-internals at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/dmd-internals
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/dmd-internals/attachments/20140401/f7677c8c/attachment.html>


More information about the dmd-internals mailing list