On 26 April 2011 19:01, Eliot Miranda <
eliot.miranda@gmail.com> wrote:
>
>
>
> On Tue, Apr 26, 2011 at 6:21 AM, Igor Stasenko <
siguctua@gmail.com> wrote:
>>
>> On 26 April 2011 04:03, Eliot Miranda <
eliot.miranda@gmail.com> wrote:
>> >
>> >
>> >
>> > On Mon, Apr 25, 2011 at 6:39 PM, Igor Stasenko <
siguctua@gmail.com> wrote:
>> >>
>> >> On 26 April 2011 03:05, Mariano Martinez Peck <
marianopeck@gmail.com> wrote:
>> >> >
>> >> > Hi guys. I don't know why but with CMakeVMMaker the asserts are not working. I can see the flags are being set correct in CmakeList.txt:
>> >> >
>> >> > add_definitions(-arch i386 -mmacosx-version-min=10.5 -g3 -O0 -msse3 -funroll-loops -fasm-blocks -finline-functions -mfpmath=sse -march=pentium-m -falign-functions=16 -fno-gcse -fno-cse-follow-jumps -std=gnu99 -DBUILD_FOR_OSX -DUSE_INLINE_MEMORY_ACCESSORS -DLSB_FIRST -DHAVE_SYS_TIME_H -DHAVE_NANOSLEEP -DNDEBUG=1 -DDEBUGVM=1 -DCOGMTVM=1 -DUSE_GLOBAL_STRUCT=0 -DBASE_HEADER_SIZE=4 -DCOGVM)
>> >> >
>> >>
>> >> AFAIK, code checks
>> >>
>> >> #ifdef NDEBUG
>> >>
>> >>
>> >> which means
>> >> 'if defined NDEBUG'
>> >>
>> >> and so it doesn't matters if it = 1 or = 0
>> >> because it is defined, but don't cares which value.
>> >>
>> >> Also,
>> >> NDEBUG and DEBUGVM should be mutually exclusive?
>> >
>> > NO!! NO!! NO!! [ :) ]. I said earlier, NDEBUG is a linux-ism for enabling asserts. See /usr/include/assert.h. So if defined(NDEBUG) assert(foo) does nothing, but if !defined(NDEBUG) assert(foo) prints a warning and in unix/linux aborts, but in Cog continues.
>> > DEBUGVM includes some extra code that allows break-pointing jumping from the interpreter into machien code. Arguably it could be eliminated but it'll be useful when we port to new ISAs.
>> > I said all this last week. Please take note this time :)
>>
>>
>> But hey, i insist that they are mutually exclusive.
>
> You can insist all you like but you're wrong. NDEBUG controls assertions and these are orthogonal to the enilopmart debugging introduced by using DEBUGVM. Simple as that. They are *not* mutually exclusive.
>
Eliot, i understand this stuff. Now you taking my words too literally.