[Vm-dev] '-DNDEBUG=0' and '-DDEBUGVM=1'
Igor Stasenko
siguctua at gmail.com
Tue Apr 26 01:39:01 UTC 2011
On 26 April 2011 03:05, Mariano Martinez Peck <marianopeck at 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?
If first stands for 'no-debug' and second stands for 'debug vm'..
> I modified the StackInterpreter to this:
>
> lookupMethodInClass: class
> | currentClass dictionary found |
> <inline: false>
> self asserta: '42' = 'cuarenta y tres'.
> self assert: 'mariano' = 'esta perdido'.
> self print: 'grrrr'; cr.
>
> .....
>
> and only 'grrr' is printed. The TWO previous assert are ignored.
>
> I may be doing something very stupid...
>
> thanks in advance,
>
> Mariano
>
>
>
> On Wed, Apr 13, 2011 at 8:06 PM, Igor Stasenko <siguctua at gmail.com> wrote:
>>
>> On 13 April 2011 19:13, Mariano Martinez Peck <marianopeck at gmail.com> wrote:
>> > I've just commited the fix, but not the comment ;)
>> >
>> > Seriously, I don't know how we can document this kind of things.
>> > Putting such comments in #compilerFlagsRelease or #compilerFlagsRelease
>> > doesn't make sense because they are aprox. 12 implementaions...I don't want
>> > to copy paste to all of them. Only in one? it doesn't make sense because
>> > people won't see it. So..how we document this kind of things? I have no
>> > idea.
>> >
>> > The same with class comments. There are so many classes that copy pasting or
>> > documenting only one doesn't make sense.
>> >
>>
>> The root class is enough.
>> A subclasses should just say something like 'i am special for
>> ___that__ and do things differently because i want __that__'.
>>
>>
>> > The only thing I though is doing something like this:
>> >
>> >
>> > compilerFlagsRelease
>> > ^#('-g3' '-Os' '-fvisibility=hidden' '-funroll-loops' '-fasm-blocks'
>> > '-finline-functions' '-mfpmath=sse' '-fomit-frame-pointer'
>> > '-march=pentium-m' '-mtune=prescott' '-falign-functions=16' '-fno-gcse'
>> > '-fno-cse-follow-jumps' '-std=gnu99' '-DBUILD_FOR_OSX'
>> > '-DUSE_INLINE_MEMORY_ACCESSORS' '-DLSB_FIRST'
>> > '-DUSE_INLINE_MEMORY_ACCESSORS' '-DHAVE_SYS_TIME_H' '-DHAVE_NANOSLEEP'
>> > '-DNDEBUG=0' , self debugVMFlag: true, '-DCOGMTVM=0'
>> > '-DUSE_GLOBAL_STRUCT=0' '-DBASE_HEADER_SIZE=4')
>> >
>> >>>debugVMFlagEnable: boolean
>> > "THIS flag is blagh...blh..."
>> > ^ '-DDEBUGVM=', boolean asNumber asString
>> >
>> > or something like that...
>> >
>> >
>>
>> This knowledge is important. It of course a question where to put that,
>> but that's exactly why i didn't wanted to use autoconf to generate
>> config.h file, which contains like 50 various flags,
>> without any clues, where these flags being used, and in what
>> situations they should be turned on or off..
>>
>> So, later we could step over every flag and properly document them,
>> and like that, for people who will come later, we will have an idea
>> what are need to deal with and why.
>>
>> > cheers
>> >
>> > Mariano
>> >
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
>
>
--
Best regards,
Igor Stasenko AKA sig.
More information about the Vm-dev
mailing list