freepooma-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Kill Unwrap<>


From: Richard Guenther
Subject: [PATCH] Kill Unwrap<>
Date: Sat, 17 Jan 2004 20:21:26 +0100 (CET)

Hi!

This patch kills previously introduced Unwrap<> and instead provides a
fallback in OpMask<>.  This way we don't forget places to update (as I did
with PartialReduction in case of OpenMP).

Tested on serial ia64 linux with no regressions.

Ok?

Richard.


2004Jan17  Richard Guenther <address@hidden>

        * src/Engine/RemoteEngine.h: kill use of Unwrap<>.
        src/Evaluator/Reduction.h: likewise.
        src/Tulip/ReduceOverContexts.h: likewise.
        src/Evaluator/OpMask.h: likewise, provide fallback in
        OpMask instead.

diff -Nru a/r2/src/Engine/RemoteEngine.h b/r2/src/Engine/RemoteEngine.h
--- a/r2/src/Engine/RemoteEngine.h      Sat Jan 17 20:16:00 2004
+++ b/r2/src/Engine/RemoteEngine.h      Sat Jan 17 20:16:00 2004
@@ -2193,12 +2193,12 @@
       {
        ret = vals[0];
        for (j = 1; j < n; j++)
-         Unwrap<Op>::unwrap(op)(ret, vals[j]);
+         op(ret, vals[j]);
       }

     delete [] vals;

-    ReduceOverContexts<T, typename Unwrap<Op>::Op_t> finalReduction(ret, 0, n 
> 0);
+    ReduceOverContexts<T, Op> finalReduction(ret, 0, n > 0);
     if (Pooma::context() == 0)
       ret = finalReduction;

diff -Nru a/r2/src/Evaluator/OpMask.h b/r2/src/Evaluator/OpMask.h
--- a/r2/src/Evaluator/OpMask.h Sat Jan 17 20:16:00 2004
+++ b/r2/src/Evaluator/OpMask.h Sat Jan 17 20:16:00 2004
@@ -150,16 +150,25 @@
   OpMask(const Op &op) : op_m(op) { }
   ~OpMask() { }

+  /// WhereProxy Op, embed a conditional operation.
   template<class T1, class T2>
-  inline T1&
-  operator()(T1 &a, const T2 &b) const
+  inline void
+  operator()(T1 &a, const MaskAssign<T2> &b) const
   {
     if (b.defined())
     {
       op_m(a, b.value());
     }
-    return a;
   }
+
+  /// Fall back to native operation.
+  template<class T1, class T2>
+  inline void
+  operator()(T1 &a, const T2 &b) const
+  {
+    op_m(a, b);
+  }
+
   Op op_m;
 };

@@ -167,18 +176,6 @@
 struct BinaryReturn<T1, T2, OpMask<Op> >
 {
   typedef T1 &Type_t;
-};
-
-template <class Op>
-struct Unwrap {
-  typedef Op Op_t;
-  static inline const Op_t& unwrap(const Op &op) { return op; }
-};
-
-template <class Op>
-struct Unwrap<OpMask<Op> > {
-  typedef typename Unwrap<Op>::Op_t Op_t;
-  static inline const Op_t& unwrap(const OpMask<Op> &op) { return 
Unwrap<Op>::unwrap(op.op_m); }
 };

 template <class Op, class T>
diff -Nru a/r2/src/Evaluator/Reduction.h b/r2/src/Evaluator/Reduction.h
--- a/r2/src/Evaluator/Reduction.h      Sat Jan 17 20:16:00 2004
+++ b/r2/src/Evaluator/Reduction.h      Sat Jan 17 20:16:00 2004
@@ -259,7 +259,7 @@

     ret = vals[0];
     for (j = 1; j < n; j++)
-      Unwrap<Op>::unwrap(op)(ret, vals[j]);
+      op(ret, vals[j]);
     delete [] vals;
   }
 };
diff -Nru a/r2/src/Tulip/ReduceOverContexts.h 
b/r2/src/Tulip/ReduceOverContexts.h
--- a/r2/src/Tulip/ReduceOverContexts.h Sat Jan 17 20:16:00 2004
+++ b/r2/src/Tulip/ReduceOverContexts.h Sat Jan 17 20:16:00 2004
@@ -274,7 +274,7 @@
            if (!v.valid())
              v = *v2;
            else
-             Unwrap<ReductionOp>::Op_t()(v.value(), v2->value());
+             ReductionOp()(v.value(), v2->value());
           }
           Serialize_t::cleanup(v2);
         }
@@ -325,7 +325,7 @@
          }
        else
          {
-           Unwrap<ReductionOp>::Op_t()(me->value_m, v.value());
+           ReductionOp()(me->value_m, v.value());
          }
       }

reply via email to

[Prev in Thread] Current Thread [Next in Thread]