[kaffe] circular linking difficulties

rob at kaffe.org rob at kaffe.org
Mon Jun 28 14:17:35 PDT 2004

Hi Helmer,

For some reason your response didn't reach my mailboxes.  It is here:
I've copied the points that I'm going to respond to here.

	mergeTypes() contains the following snippet:

 	mergeSupersets(v, t1, t2);
	if (v->supertypes->count == 1) {
		*t2 = *TOBJ;
	else {
		t2->tinfo = TINFO_SUPERTYPES;
		t2->data.supertypes = v->supertypes;
		return true;

	Is this really correct? If supertypes->count is 1, this means
	that both classes have a common superclass and that should be
	the result of the merge, shouldn't it?

Good point.  Fixed.  Thanks!

> What puzzles me is that we already have the CSTATE_DOING_LINK phase
> during class loading, which seems to be what you want
[ rest of paragraph deleted ]

I agree, but it doesn't seem to be working.  Kaffe is definitely choking
when a getClassFromSignature call calles loadClass to be called on a class
that is in the process of verification already.  I have no idea why the
CSTATE_DOING_LINK isn't working...

> [have you tried setting "class->processingThread = THREAD_NATIVE ();"
> just after the "SET_CLASS_STATE(CSTATE_DOING_LINK);" in classMethod.c?]

Just tried it, and it didn't seem to help.  In my previous post, I pointed
to a link where Tim had to actually create a new thread to get it to
work...it seems like something screwy is going on in the core, and I'm
having real trouble putting my finger on it :(


More information about the kaffe mailing list