[svn:parrot] r44819 - in branches/fix_icc_failures: include/parrot src/call src/pmc

whiteknight at svn.parrot.org whiteknight at svn.parrot.org
Tue Mar 9 18:20:32 UTC 2010


Author: whiteknight
Date: Tue Mar  9 18:20:30 2010
New Revision: 44819
URL: https://trac.parrot.org/parrot/changeset/44819

Log:
Added PARROT_ASSERT_MSG macro, which does an assertion with a custom error message. Added PARROT_FAILURE which does an unconditonal assertion failure with a custom error message. PARROT_ASSERT was used (abused) to provide these two functions, but ICC gets very unhappy about it. No changes to functionality, but a lot fewer warnings on ICC"

Modified:
   branches/fix_icc_failures/include/parrot/exceptions.h
   branches/fix_icc_failures/src/call/args.c
   branches/fix_icc_failures/src/call/context.c
   branches/fix_icc_failures/src/pmc/callcontext.pmc
   branches/fix_icc_failures/src/pmc/hashiteratorkey.pmc
   branches/fix_icc_failures/src/pmc/iterator.pmc

Modified: branches/fix_icc_failures/include/parrot/exceptions.h
==============================================================================
--- branches/fix_icc_failures/include/parrot/exceptions.h	Tue Mar  9 16:52:04 2010	(r44818)
+++ branches/fix_icc_failures/include/parrot/exceptions.h	Tue Mar  9 18:20:30 2010	(r44819)
@@ -272,10 +272,14 @@
 #ifdef NDEBUG
 #  define PARROT_ASSERT(x) /*@-noeffect@*/((void)0)/*@=noeffect@*/
 #  define PARROT_ASSERT_ARG(x) (0)
+#  define PARROT_FAILURE(x) /*@-noeffect@*/((void)0)/*@=noeffect@*/
+#  define PARROT_ASSERT_MSG(x, s) /*@-noeffect@*/((void)0)/*@=noeffect@*/
 #  define ASSERT_ARGS(a)
 #else
 #  define PARROT_ASSERT(x) (x) ? ((void)0) : Parrot_confess(#x, __FILE__, __LINE__)
 #  define PARROT_ASSERT_ARG(x) ((x) ? (0) : (Parrot_confess(#x, __FILE__, __LINE__), 0))
+#  define PARROT_FAILURE(x) Parrot_confess(x, __FILE__, __LINE__)
+#  define PARROT_ASSERT_MSG(x, s) ((x) ? (0) : (Parrot_confess(s, __FILE__, __LINE__), 0))
 
 #  ifdef __GNUC__
 #    define ASSERT_ARGS(a) ASSERT_ARGS_ ## a ;

Modified: branches/fix_icc_failures/src/call/args.c
==============================================================================
--- branches/fix_icc_failures/src/call/args.c	Tue Mar  9 16:52:04 2010	(r44818)
+++ branches/fix_icc_failures/src/call/args.c	Tue Mar  9 18:20:30 2010	(r44819)
@@ -2740,7 +2740,7 @@
 intval_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
 {
     ASSERT_ARGS(intval_constant_from_varargs)
-    PARROT_ASSERT(!"Wrong call");
+    PARROT_FAILURE("Wrong call");
     return 0;
 }
 
@@ -2748,7 +2748,7 @@
 numval_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
 {
     ASSERT_ARGS(numval_constant_from_varargs)
-    PARROT_ASSERT(!"Wrong call");
+    PARROT_FAILURE("Wrong call");
     return 0.0;
 }
 
@@ -2757,7 +2757,7 @@
 string_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
 {
     ASSERT_ARGS(string_constant_from_varargs)
-    PARROT_ASSERT(!"Wrong call");
+    PARROT_FAILURE("Wrong call");
     return NULL;
 }
 
@@ -2766,7 +2766,7 @@
 pmc_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
 {
     ASSERT_ARGS(pmc_constant_from_varargs)
-    PARROT_ASSERT(!"Wrong call");
+    PARROT_FAILURE("Wrong call");
     return PMCNULL;
 }
 
@@ -2927,7 +2927,7 @@
     void   **values;
     INTVAL   size;
 
-    PARROT_ASSERT((type >= 0 && type < 4) || !"Wrong pointer type");
+    PARROT_ASSERT_MSG((type >= 0 && type < 4), "Wrong pointer type");
 
     GETATTR_CallContext_returns_size(interp, self, size);
     values = csr_reallocate_return_values(interp, self, size + 1);
@@ -2979,7 +2979,7 @@
         *(PMC **)ptr = get_integer_pmc(interp, value);
         break;
       default:
-        PARROT_ASSERT(!"Impossible type");
+        PARROT_FAILURE("Impossible type");
     }
 }
 
@@ -3004,7 +3004,7 @@
         *(PMC **)ptr = get_number_pmc(interp, value);
         break;
       default:
-        PARROT_ASSERT(!"Impossible type");
+        PARROT_FAILURE("Impossible type");
     }
 }
 
@@ -3031,7 +3031,7 @@
                 get_string_pmc(interp, value);
         break;
       default:
-        PARROT_ASSERT(!"Impossible type");
+        PARROT_FAILURE("Impossible type");
     }
 }
 
@@ -3056,7 +3056,7 @@
         *(PMC **)ptr = value;
         break;
       default:
-        PARROT_ASSERT(!"Impossible type");
+        PARROT_FAILURE(!"Impossible type");
     }
 }
 
@@ -3102,7 +3102,7 @@
     INTVAL   size;
 
     GETATTR_CallContext_returns_size(interp, self, size);
-    PARROT_ASSERT((key < size) || !"Wrong index");
+    PARROT_ASSERT_MSG(key < size, "Wrong index");
 
     GETATTR_CallContext_returns_values(interp, self, values);
     return values[key];

Modified: branches/fix_icc_failures/src/call/context.c
==============================================================================
--- branches/fix_icc_failures/src/call/context.c	Tue Mar  9 16:52:04 2010	(r44818)
+++ branches/fix_icc_failures/src/call/context.c	Tue Mar  9 18:20:30 2010	(r44819)
@@ -306,7 +306,7 @@
                            ? NULL
                            : get_context_struct_fast(interp, pmcold);
 
-    PARROT_ASSERT(!PMC_IS_NULL(pmcctx) || !"Can't initialise Null CallContext");
+    PARROT_ASSERT_MSG(!PMC_IS_NULL(pmcctx), "Can't initialise Null CallContext");
 
     /*
      * FIXME Invoking corotine shouldn't initialise context. So just

Modified: branches/fix_icc_failures/src/pmc/callcontext.pmc
==============================================================================
--- branches/fix_icc_failures/src/pmc/callcontext.pmc	Tue Mar  9 16:52:04 2010	(r44818)
+++ branches/fix_icc_failures/src/pmc/callcontext.pmc	Tue Mar  9 18:20:30 2010	(r44819)
@@ -655,7 +655,7 @@
                 res = Parrot_str_append(INTERP, res, CONST_STRING(INTERP, "P"));
                 break;
               default:
-                PARROT_ASSERT(!"Impossible flag");
+                PARROT_FAILURE("Impossible flag");
                 break;
             }
             c = NEXT_CELL(c);

Modified: branches/fix_icc_failures/src/pmc/hashiteratorkey.pmc
==============================================================================
--- branches/fix_icc_failures/src/pmc/hashiteratorkey.pmc	Tue Mar  9 16:52:04 2010	(r44818)
+++ branches/fix_icc_failures/src/pmc/hashiteratorkey.pmc	Tue Mar  9 18:20:30 2010	(r44819)
@@ -84,7 +84,7 @@
         Parrot_HashIteratorKey_attributes *attrs =
                 PARROT_HASHITERATORKEY(SELF);
 
-        PARROT_ASSERT(value || !"Can't set NULL pointer into HashIteratorKey");
+        PARROT_ASSERT_MSG(value, "Can't set NULL pointer into HashIteratorKey");
 
         if (key == 0) {
             attrs->parrot_hash = (Hash*)value;

Modified: branches/fix_icc_failures/src/pmc/iterator.pmc
==============================================================================
--- branches/fix_icc_failures/src/pmc/iterator.pmc	Tue Mar  9 16:52:04 2010	(r44818)
+++ branches/fix_icc_failures/src/pmc/iterator.pmc	Tue Mar  9 18:20:30 2010	(r44819)
@@ -204,7 +204,7 @@
 */
     VTABLE void set_integer_native(INTVAL value) {
         PMC *self = SELF;
-        PARROT_ASSERT(!"Iterator: implementation have to override this method");
+        PARROT_FAILURE("Iterator: implementation have to override this method");
 
         Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_UNIMPLEMENTED,
                 "Iterator: unimplemented method");


More information about the parrot-commits mailing list