On Mon, 03 Mar 2014 15:34:18 -0500, Namespace <[email protected]>
wrote:
On Monday, 3 March 2014 at 18:36:56 UTC, Steven Schveighoffer wrote:
On Mon, 03 Mar 2014 12:03:12 -0500, Namespace <[email protected]>
wrote:
On Monday, 3 March 2014 at 02:44:09 UTC, Namespace wrote:
It's working now, I get all my debug infos I need.
But: I have absolutly no idea how to get the correct TypeInfo in
rt_finalize2. The ClassInfo is identified by casting the void*
pointer to a void** and then cast this void** to ClassInfo*. But for
other TypeInfos this weird trick doesn't work. How can I extract the
correct TypeInfo from this void**? :P
I get the real TypeInfo (not sure if this was intended this way) and
in my test base it works! But in druntime I get the weird error:
src\rt\lifetime.d(1256): Error: variable a1 used before set
----
if (gc_getAttr(p) & BlkAttr.APPENDABLE)
{
void[] a1 = *cast(void[]*) ppv;
//printf("len = %d\n", a1.length);
void* p_a1 = &a1;
void* tp = p_a1 + 12;
TypeInfo* ti = cast(TypeInfo*) tp;
import std.string : toStringz;
string s = ti.toString(); // line 1256
printf("Type = %s\n", toStringz(s));
return;
}
----
Any call to ti will invoke the error. Any idea why?
Not really any clue.
But if this is in druntime, it should not be importing anything from
std.
Even without I get this weird error. Is this a bug?
It sounds suspicious. Clearly, you are not accessing a1 there, and clearly
a1 is set before being used.
Any chance to reduce it?
-Steve