Sorry to bring this up again, but I hope someone can help me with this. I'm trying to compile Parrot on Windows XP / Visual C++ with assertions enabled, that is, without C<NDEBUG>.
When running miniparrot I receive the following error: Assertion failed: (PTR2UINTVAL(mmd_table[i].func_ptr) & 3) == 0, file src\mmd.c, line 1709 Here's some context: -snip- /* * register default mmds for this type */ for (i = 0; i < n; ++i) { assert((PTR2UINTVAL(mmd_table[i].func_ptr) & 3) == 0); mmd_register(interp, mmd_table[i].func_nr, type, mmd_table[i].right, mmd_table[i].func_ptr); mmd_create_builtin_multi_meth(interp, ns, type, mmd_table + i); } -snip- Now, when I run miniparrot through the debugger C<mmd_table[0].func_ptr> is 0x100036e3, which is C<Parrot_UnManagedStruct_is_equal>. My questions are: - Is anyone else smoking / running Parrot with assertions enabled? - The assertion seems to check that the lowest two bits of a function pointer are zero. Why's that? Thanks, Ron