def _visitor_walk_recursive(self, instbox, visitor, optimizer): # we don't store the lengthvalue in guards, because the # guard-failed code starts with a regular STR_CONCAT again leftbox = self.vleft rightbox = self.vright visitor.register_virtual_fields(instbox, [leftbox, rightbox]) leftinfo = optimizer.getptrinfo(leftbox) rightinfo = optimizer.getptrinfo(rightbox) if leftinfo and leftinfo.is_virtual(): leftinfo.visitor_walk_recursive(leftbox, visitor, optimizer) if rightinfo and rightinfo.is_virtual(): rightinfo.visitor_walk_recursive(rightbox, visitor, optimizer)
def _visitor_walk_recursive(self, instbox, visitor, optimizer): boxes = [self.s, self.start, self.lgtop] visitor.register_virtual_fields(instbox, boxes) opinfo = optimizer.getptrinfo(self.s) if opinfo and opinfo.is_virtual(): opinfo.visitor_walk_recursive(self.s, visitor, optimizer)