def checkfunction(translator): # make sure that there is a sensible comparison defined on the # symbolics bk = translator.annotator.bookkeeper rtyper = translator.rtyper base_classdef = bk.getuniqueclassdef(PBase) base_vtable = rclass.getclassrepr(rtyper, base_classdef).getruntime(CLASSTYPE) sub3_classdef = bk.getuniqueclassdef(Sub3) sub3_vtable = rclass.getclassrepr(rtyper, sub3_classdef).getruntime(CLASSTYPE) assert ll_issubclass(sub3_vtable, base_vtable) assert not ll_issubclass(base_vtable, sub3_vtable)
def checkfunction(translator): # make sure that there is a sensible comparison defined on the # symbolics bk = translator.annotator.bookkeeper rtyper = translator.rtyper base_classdef = bk.getuniqueclassdef(PBase) base_vtable = rclass.getclassrepr(rtyper, base_classdef).getruntime() sub3_classdef = bk.getuniqueclassdef(Sub3) sub3_vtable = rclass.getclassrepr(rtyper, sub3_classdef).getruntime() assert ll_issubclass(sub3_vtable, base_vtable) assert not ll_issubclass(base_vtable, sub3_vtable)
def subclassOf(self, cpu, clsbox1, clsbox2): adr = clsbox2.getaddr(cpu) bounding_class = llmemory.cast_adr_to_ptr(adr, rclass.CLASSTYPE) adr = clsbox1.getaddr(cpu) real_class = llmemory.cast_adr_to_ptr(adr, rclass.CLASSTYPE) return rclass.ll_issubclass(real_class, bounding_class)