On 23 April 2013 18:25, Iain Buclaw <ibuclaw@ubuntu.com> wrote:
On 23 April 2013 17:28, Johannes Pfau <nospam@example.com> wrote:
Am Tue, 23 Apr 2013 17:10:43 +0200
schrieb "Iain Buclaw" <ibuclaw@ubuntu.com>:
I'll make sure to have a look at this, but as always too little time...
> In reference to this link:
> http://forum.dlang.org/post/50476C77.20608@googlemail.com
>
>
> I'm currently working on dealing with each of these issues in the
> following pull (with the intention to merge back upstream where
> required).
> https://github.com/D-Programming-GDC/GDC/pull/62
>
Sounds good. That should also be good for debug info.
> In order:
>
> 1. ClassInfo
>
> The initialiser emitted will have two symbols, one public symbol
> with the TypeInfo_Class members, and a second private generated
> symbol for the interfaces array. I can't forsee any way this
> could break compatibility with any existing compilied gdc (or
> perhaps even dmd/ldc) binaries out there.
Actually, found an interesting problem when confronting it.
---
struct Interface
{
TypeInfo_Class classinfo;
void*[] vtbl;
ptrdiff_t offset; /// offset to Interface 'this' from Object 'this' <--
}
---I'll have to have a think about what value should be put there, and how best to put it in.Or alternatively we could generate the type (for debugging) on the flying in ::toSymbol
1. Module::toSymbol.Type = Type::moduleinfo type.2. ClassDeclaration::toSymbol
Type = Type::typeinfoclass type.Then for each interface, add the fields for Type::interface onto the type.
3. InterfaceDeclaration::toSymbolLikewise to above.