[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