Thanks!

> Returns an instance from the integer cache maintained by the RexxIntegerClass 
> object. These are all marked by the live() method on the object, so 
> RexxMemory doesn't need to do anything special. 


I never realised that the RexxInteger has a (what? metaclass?) different from 
RexxClass.…
And apparently, it’s the only class to be like that.

My notes:

All classes declare they class using CLASS_CREATE
except RexxInteger and NumberString which use CLASS_CREATE_SPECIAL
and except RexxClass, probably for bootstrap.
    CLASS_CREATE_SPECIAL(NumberString, "String", RexxClass);
    CLASS_CREATE_SPECIAL(Integer,      "String", RexxIntegerClass);

RexxClass *NumberString::classInstance = OREF_NULL;
RexxIntegerClass *RexxInteger::classInstance = OREF_NULL;


Only the file IntegerClass.cpp has 2 live methods:
void RexxInteger::live(size_t liveMark)
void RexxIntegerClass::live(size_t liveMark)


I noticed that all the class are doing
    memory_mark(objectVariables);
instead of doing
    RexxObject::live(liveMark)

This is aligned with the comment in ObjectClass.cpp
 * Other exported classes that inherit from Object are
 * also expected to mark this field.
but to not forget if other attributes are added to RexxObject in the future.

_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to