I think there's a bug in buildDispatchTable(). The subclass_head pointer is never set. I think this means that fixupDispatchTable never fixes up subclasses... But, my understanding of the JIT'r is weak. Anyway, if this isn't the problem, then there should *somewhere* that the subclass_head pointer gets set. Someone (Tim?) want to check this? -Pat ... if (class->superclass != NULL) { /* This may not be the best place to do this but at least it is centralized. */ class->subclass_next = class->superclass->subclass_next; class->superclass->subclass_next = class; ... Should be changed to: ... if (class->superclass != NULL) { /* This may not be the best place to do this but at least it is centralized. */ class->subclass_next = class->superclass->subclass_head; class->superclass->subclass_head = class; ...