Пример #1
0
    def substitute_reorder(self, order_ops):
        """
        Changes the reordering engine based on the log marker class.

        :param order_ops: The reordering marker class.
        :type order_ops: subclass of :class:`memoryoperations.ReorderBase`
        :return: None
        """
        self._context.test_on_barrier = True
        if isinstance(order_ops, memoryoperations.Freorder):
            self._context.reorder_engine = \
                reorderengines.FullReorderEngine()
        elif isinstance(order_ops, memoryoperations.Preorder):
            # TODO add macro in valgrind or
            # parameter inside the tool to support parameters?
            self._context.reorder_engine = \
                reorderengines.RandomPartialReorderEngine(3)
        elif isinstance(order_ops, memoryoperations.Areorder):
            self._context.reorder_engine = \
                reorderengines.AccumulativeReorderEngine()
        elif isinstance(order_ops, memoryoperations.Fault_only):
            self._context.reorder_engine = reorderengines.NoReorderEngine()
        elif isinstance(order_ops, memoryoperations.No_reorder_fault):
            self._context.reorder_engine = reorderengines.NoReorderEngine()
            self._context.test_on_barrier = False
        else:
            raise NotSupportedOperationException(
                "Not supported reorder engine: {}".format(order_ops))
Пример #2
0
    def substitute_reorder(self, order_ops):
        """
        Changes the reordering engine based on the log marker class.

        :param order_ops: The reordering marker class.
        :type order_ops: subclass of :class:`memoryoperations.ReorderBase`
        :return: None
        """
        if isinstance(order_ops, memops.ReorderFull):
            self._context.reorder_engine = reorderengines.FullReorderEngine()
            self._context.test_on_barrier = (
                self._context.reorder_engine.test_on_barrier
            )
        elif isinstance(order_ops, memops.ReorderPartial):
            # TODO add macro in valgrind or
            # parameter inside the tool to support parameters?
            self._context.reorder_engine = (
                reorderengines.RandomPartialReorderEngine(3)
            )
            self._context.test_on_barrier = (
                self._context.reorder_engine.test_on_barrier
            )
        elif isinstance(order_ops, memops.ReorderAccumulative):
            self._context.reorder_engine = (
                reorderengines.AccumulativeReorderEngine()
            )
            self._context.test_on_barrier = (
                self._context.reorder_engine.test_on_barrier
            )
        elif isinstance(order_ops, memops.ReorderReverseAccumulative):
            self._context.reorder_engine = (
                reorderengines.AccumulativeReverseReorderEngine()
            )
            self._context.test_on_barrier = (
                self._context.reorder_engine.test_on_barrier
            )
        elif isinstance(order_ops, memops.NoReorderDoCheck):
            self._context.reorder_engine = reorderengines.NoReorderEngine()
            self._context.test_on_barrier = (
                self._context.reorder_engine.test_on_barrier
            )
        elif isinstance(order_ops, memops.NoReorderNoCheck):
            self._context.reorder_engine = reorderengines.NoCheckerEngine()
            self._context.test_on_barrier = (
                self._context.reorder_engine.test_on_barrier
            )
        elif isinstance(order_ops, memops.ReorderDefault):
            self._context.reorder_engine = self._context.default_engine
            self._context.test_on_barrier = self._context.default_barrier
        else:
            raise NotSupportedOperationException(
                "Not supported reorder engine: {}".format(order_ops)
            )