Ah, right. The stack member is not an object reference. Make the change for just the local variables member, which is the one that is causing the problem.
Rick On Fri, Feb 11, 2011 at 8:37 AM, Rony G. Flatscher <rony.flatsc...@wu-wien.ac.at> wrote: > Rick, > > thank you very much! > > Here the changes I did: > > void RexxActivation::live(size_t liveMark) > /******************************************************************************/ > /* Function: Normal garbage collection live marking > */ > /******************************************************************************/ > { > memory_mark(this->previous); > memory_mark(this->executable); > memory_mark(this->scope); > memory_mark(this->code); > memory_mark(this->settings.securityManager); > memory_mark(this->receiver); > memory_mark(this->activity); > memory_mark(this->parent); > memory_mark(this->dostack); > /* the stack and the local variables handle their own marking. */ > /* > this->stack.live(liveMark); > this->settings.local_variables.live(liveMark); > */ > if (this->stack != OREF_NULL) > { > this->stack.live(liveMark); > } > if (this->settings.local_variables != OREF_NULL) > { > this->settings.local_variables.live(liveMark); > } > > ... cut ... > > > While compiling, unfortunately the following error occurs: > > libtool: compile: g++ -DHAVE_CONFIG_H -I. -DORX_VER=4 -DORX_REL=1 > -DORX_MOD=0 -DORX_FIX=0 -DORX_SYS_STR=\"MACOSX\" > -DORX_CATDIR=\"/opt/ooRexx/bin\" -DORX_SHARED_LIBRARY_EXT=\".dylib\" -I./lib > -I./api -I./api/platform/unix -I./common -I./common/platform/unix > -I./interpreter -I./interpreter/behaviour -I./interpreter/execution > -I./interpreter/memory -I./interpreter/package -I./interpreter/concurrency > -I./interpreter/expression -I./interpreter/instructions > -I./interpreter/classes -I./interpreter/classes/support > -I./interpreter/runtime -I./interpreter/parser -I./interpreter/messages > -I./interpreter/streamLibrary -I./interpreter/platform/common > -I./interpreter/platform/unix -arch i386 -arch i386 -DNOOPT -DPTHREAD_KERNEL > -D_POSIX_THREAD -D_REENTRANT -D_GNU_SOURCE -DLINUX -DOPSYS_LINUX -MT > librexx_la-RexxActivation.lo -MD -MP -MF .deps/librexx_la-RexxActivation.Tpo > -c ./interpreter/execution/RexxActivation.cpp -fno-common -DPIC -o > .libs/librexx_la-RexxActivation.o > ./interpreter/execution/RexxActivation.cpp: In member function ‘virtual void > RexxActivation::live(size_t)’: > ./interpreter/execution/RexxActivation.cpp:931: error: no match for > ‘operator!=’ in ‘((RexxActivation*)this)->RexxActivation::stack != 0’ > ./interpreter/execution/RexxActivation.cpp:935: error: no match for > ‘operator!=’ in > ‘((RexxActivation*)this)->RexxActivation::settings.ActivationSettings::local_variables > != 0’ > make: *** [librexx_la-RexxActivation.lo] Error 1 > > > Please advise! > > Thanks, > > ---rony > > > > > On 11.02.2011 12:14, Rick McGuire wrote: > > I'm a little handicapped at the moment because the laptop I do my > ooRexx work on died yesterday, but from the stack trace, I think I > know what's going on. In RexxActivation::live(), there are the > following lines: > > this->stack.live(livemark); > this->settings.local_variables.live(livemark); > > Try changing these lines to this: > > if (this->stack != OREF_NULL) > { > this->stack.live(livemark); > } > if (this->settings.local_variables != OREF_NULL) > { > this->settings.local_variables.live(livemark); > } > > It looks like you're hitting a tiny window where garbage collection is > getting called when the local_variables are still null. > > Rick > > ------------------------------------------------------------------------------ > The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE: > Pinpoint memory and threading errors before they happen. > Find and fix more than 250 security defects in the development cycle. > Locate bottlenecks in serial and parallel code that limit performance. > http://p.sf.net/sfu/intel-dev2devfeb > _______________________________________________ > Oorexx-devel mailing list > Oorexx-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/oorexx-devel > > ------------------------------------------------------------------------------ The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE: Pinpoint memory and threading errors before they happen. Find and fix more than 250 security defects in the development cycle. Locate bottlenecks in serial and parallel code that limit performance. http://p.sf.net/sfu/intel-dev2devfeb _______________________________________________ Oorexx-devel mailing list Oorexx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/oorexx-devel