Applied function type from D1 frontend that got removed in D2, it's critical for member function type to be correct.

Fixed a bunch of type discrepancies in druntime object.di vs. genobj.d .

Disabled (#if 0) some potentally very large type dumps for -vv .

Updated classinfo and typeinfo generation for D2, almost complete now.

Added finer grained checks for vtbl type mismatching, aids debugging.
This commit is contained in:
Tomas Lindquist Olsen
2009-06-03 02:28:48 +02:00
parent 2cd4d15be1
commit f6997cb604
12 changed files with 82 additions and 18 deletions

View File

@@ -646,16 +646,23 @@ void TypeInfoStructDeclaration::llvmDefine()
b.push_uint(hasptrs);
#if DMDV2
// just (void*)null for now
// FIXME: just emit nulls for now
ClassDeclaration* tscd = Type::typeinfostruct;
assert(tscd->fields.dim == 10);
// const(MemberInfo[]) function(in char[]) xgetMembers;
b.push_null_vp();
VarDeclaration* xgetMembers = (VarDeclaration*)tscd->fields.data[7];
b.push_null(xgetMembers->type);
//void function(void*) xdtor;
b.push_null_vp();
VarDeclaration* xdtor = (VarDeclaration*)tscd->fields.data[8];
b.push_null(xdtor->type);
//void function(void*) xpostblit;
b.push_null_vp();
VarDeclaration* xpostblit = (VarDeclaration*)tscd->fields.data[9];
b.push_null(xpostblit->type);
#endif
// finish