This is the mail archive of the guile@cygnus.com mailing list for the guile project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
>Several years ago, before >Guile, a Cray Research compiler upgrade did break my port of SCM -- >it was necessary to write a replacement for setjmp in order to make >SCM garbage collection work. > >The problem is variables being optimized away entirely, not merely >allocated in registers. Guile assumes that SCM objects passed on >the C stack are protected -- this is not necessarily true for C >compilers that do aggressive inlining. It was necessary to turn >off inlining in the case of the Cray port. >To sum up, conservative gc requires a chumminess with the C compiler >that is not warranted by any standard. It may require platform and compiler >specific hacks in order to work properly. After reading the various responses to this issue, I'm a bit confused about whether this problem is real or not, but it sounds worrying. I'll be living in fear of better C compilers. Potentially, a seemingly innocent change to your C code could trigger some compiler optimisation to kick in, or else previous working code could be trashed by a future compiler upgrade that is smarter at removing variables. And how would you know? Your program crashes at random times - maybe once a day/week/year, but you'd never find the problem. Code walkthroughs would tell you nothing. >I have actually tried your exhaustive testing solution -- it is *far* >too slow to be practical. I don't think it's too slow if you just want to do unit testing of a number of new functions, satisfy yourself, and then switch it off again.