angr/analyses/typehoon/simple_solver.py
def _meet(self, t1, t2, translate):
        """
        Get the greatest lower bound of t1 and t2.

        :param t1:
        :param t2:
        :return:
        """

        t1 = translate(t1)
        t2 = translate(t2)

        if t1 == t2:
            return t1

        if isinstance(t1, BottomType):
            return t2
        elif isinstance(t2, BottomType):
            return t1

        # consult the graph
        t1_cls = self._abstract(t1)
        t2_cls = self._abstract(t2)

        if t1_cls in BASE_LATTICE and t2_cls in BASE_LATTICE:
            queue = [t1_cls]
            while queue:
                n = queue[0]
                queue = queue[1:]

                if networkx.has_path(BASE_LATTICE, t2_cls, n):
                    return self._concretize(n, t1, t2, translate)
                # go down
                queue.extend(BASE_LATTICE.successors(n))

        # import ipdb; ipdb.set_trace()
        return BottomType()

        Get the greatest lower bound of t1 and t2.

        :param t1:
        :param t2:
        :return:
        
Get the greatest lower bound of t1 and t2.
Get the greatest lower bound of t1 and t2 .
def _meet(self, t1, t2, translate):
        t1 = translate(t1)
        t2 = translate(t2)
        if t1 == t2:
            return t1
        if isinstance(t1, BottomType):
            return t2
        elif isinstance(t2, BottomType):
            return t1
        t1_cls = self._abstract(t1)
        t2_cls = self._abstract(t2)
        if t1_cls in BASE_LATTICE and t2_cls in BASE_LATTICE:
            queue = [t1_cls]
            while queue:
                n = queue[0]
                queue = queue[1:]
                if networkx.has_path(BASE_LATTICE, t2_cls, n):
                    return self._concretize(n, t1, t2, translate)
                queue.extend(BASE_LATTICE.successors(n))
        return BottomType()
def _meet ( self , t1 , t2 , translate ) : t1 = translate ( t1 ) t2 = translate ( t2 ) if t1 == t2 : return t1 if isinstance ( t1 , BottomType ) : return t2 elif isinstance ( t2 , BottomType ) : return t1 t1_cls = self . _abstract ( t1 ) t2_cls = self . _abstract ( t2 ) if t1_cls in BASE_LATTICE and t2_cls in BASE_LATTICE : queue = [ t1_cls ] while queue : n = queue [ 0 ] queue = queue [ 1 : ] if networkx . has_path ( BASE_LATTICE , t2_cls , n ) : return self . _concretize ( n , t1 , t2 , translate ) queue . extend ( BASE_LATTICE . successors ( n ) ) return BottomType ( )
Get the greatest lower bound of t1 and t2.
Get the greatest lower bound of t1 and t2 .
"""
        Get the greatest lower bound of t1 and t2.

        :param t1:
        :param t2:
        :return:
        """ # consult the graph # go down # import ipdb; ipdb.set_trace()
None
self
t1
None
t2
None
translate