RexxMemory Class Reference

#include <RexxMemory.hpp>

Inheritance diagram for RexxMemory:
[legend]

Public Member Functions

 RexxMemory ()
 
 RexxMemory (RESTORETYPE restoreType)
 
 operator RexxObject * ()
 
RexxObjectoperator= (DeadObject *d)
 
void live (size_t)
 
void liveGeneral (int reason)
 
void flatten (RexxEnvelope *)
 
RexxObjectmakeProxy (RexxEnvelope *)
 
void initialize (bool restoringImage, const char *imageTarget)
 
MemorySegmentnewSegment (size_t requestLength, size_t minLength)
 
MemorySegmentnewLargeSegment (size_t requestLength, size_t minLength)
 
RexxObjectoldObject (size_t size)
 
RexxObjectnewObject (size_t size)
 
RexxObjectnewObject (size_t size, size_t type)
 
RexxObjecttemporaryObject (size_t size)
 
RexxArraynewObjects (size_t size, size_t count, size_t objectType)
 
void reSize (RexxObject *, size_t)
 
void checkUninit ()
 
void runUninits ()
 
void removeUninitObject (RexxObject *obj)
 
void addUninitObject (RexxObject *obj)
 
bool isPendingUninit (RexxObject *obj)
 
void checkUninitQueue ()
 
void markObjects (void)
 
void markObjectsMain (RexxObject *)
 
void killOrphans (RexxObject *)
 
void mark (RexxObject *)
 
void markGeneral (void *)
 
void collect ()
 
RexxObjectsaveObject (RexxInternalObject *saveObj)
 
void discardObject (RexxInternalObject *obj)
 
void removeHold (RexxInternalObject *obj)
 
void discardHoldObject (RexxInternalObject *obj)
 
RexxObjectholdObject (RexxInternalObject *obj)
 
void saveImage (const char *imageTarget)
 
bool savingImage ()
 
bool restoringImage ()
 
RexxObjectsetDump (RexxObject *)
 
bool queryDump ()
 
RexxObjectdump ()
 
void dumpObject (RexxObject *objectRef, FILE *outfile)
 
void setObjectOffset (size_t offset)
 
void setEnvelope (RexxEnvelope *)
 
void setMarkTable (RexxTable *marktable)
 
void setOrphanCheck (bool orphancheck)
 
RexxObjectcheckSetOref (RexxObject *, RexxObject **, RexxObject *, const char *, int)
 
RexxObjectsetOref (void *index, RexxObject *value)
 
RexxStackgetFlattenStack ()
 
void returnFlattenStack ()
 
RexxObjectreclaim ()
 
RexxObjectsetParms (RexxObject *, RexxObject *)
 
RexxObjectgutCheck ()
 
void memoryPoolAdded (MemorySegmentPool *)
 
void shutdown ()
 
void liveStackFull ()
 
void dumpMemoryProfile ()
 
char * allocateImageBuffer (size_t size)
 
void logVerboseOutput (const char *message, void *sub1, void *sub2)
 
void verboseMessage (const char *message)
 
void verboseMessage (const char *message, size_t sub1)
 
void verboseMessage (const char *message, size_t sub1, size_t sub2)
 
void verboseMessage (const char *message, const char *sub1, size_t sub2)
 
void logObjectStats (RexxObject *obj)
 
void pushSaveStack (RexxObject *obj)
 
void removeSavedObject (RexxObject *obj)
 
void disableOrefChecks ()
 
void enableOrefChecks ()
 
void clearSaveStack ()
 
void checkAllocs ()
 
RexxObjectdumpImageStats ()
 
void scavengeSegmentSets (MemorySegmentSet *requester, size_t allocationLength)
 
void setUpMemoryTables (RexxIdentityTable *old2newTable)
 
void collectAndUninit (bool clearStack)
 
void lastChanceUninit ()
 
RexxDirectorygetGlobalStrings ()
 
void addWeakReference (WeakReference *ref)
 
void checkWeakReferences ()
 
- Public Member Functions inherited from RexxInternalObject
void * operator new (size_t, RexxClass *)
 
void * operator new (size_t, RexxClass *, RexxObject **, size_t, size_t)
 
void * operator new (size_t size, void *ptr)
 
void operator delete (void *)
 
void operator delete (void *p, void *ptr)
 
 RexxInternalObject ()
 
 RexxInternalObject (RESTORETYPE restoreType)
 
virtual ~RexxInternalObject ()
 
 operator RexxObject * ()
 
size_t getObjectSize ()
 
void setObjectSize (size_t s)
 
size_t getObjectDataSize ()
 
void * getObjectDataSpace ()
 
void clearObject ()
 
void clearObject (size_t l)
 
void setVirtualFunctions (void *t)
 
void setInitHeader (size_t s, size_t markword)
 
void setInitHeader (size_t markword)
 
void setObjectLive (size_t markword)
 
void setHasReferences ()
 
void setHasNoReferences ()
 
bool hasReferences ()
 
bool hasNoReferences ()
 
void setPrimitive ()
 
void setNonPrimitive ()
 
bool isPrimitive ()
 
bool isNonPrimitive ()
 
void setInRexxPackage ()
 
bool isInRexxPackage ()
 
bool isObjectMarked (size_t markword)
 
void setObjectMark (size_t markword)
 
void clearObjectMark ()
 
bool isObjectLive (size_t mark)
 
bool isObjectDead (size_t mark)
 
bool isOldSpace ()
 
bool isNewSpace ()
 
void setNewSpace ()
 
void setOldSpace ()
 
void makeProxiedObject ()
 
bool isProxyObject ()
 
bool isSubClassOrEnhanced ()
 
bool isBaseClass ()
 
size_t getObjectTypeNumber ()
 
RexxBehaviourgetObjectType ()
 
bool isObjectType (RexxBehaviour *b)
 
bool isObjectType (size_t t)
 
bool isSameType (RexxInternalObject *o)
 
void setBehaviour (RexxBehaviour *b)
 
virtual RexxObjectcopy ()
 
virtual RexxObjectevaluate (RexxActivation *, RexxExpressionStack *)
 
virtual RexxObjectgetValue (RexxActivation *)
 
virtual RexxObjectgetValue (RexxVariableDictionary *)
 
virtual RexxObjectgetRealValue (RexxActivation *)
 
virtual RexxObjectgetRealValue (RexxVariableDictionary *)
 
virtual void uninit ()
 
virtual HashCode hash ()
 
virtual HashCode getHashValue ()
 
HashCode identityHash ()
 
virtual bool truthValue (int)
 
virtual bool logicalValue (logical_t &)
 
virtual RexxStringmakeString ()
 
virtual RexxTextmakeText ()
 
virtual void copyIntoTail (RexxCompoundTail *buffer)
 
virtual RexxStringprimitiveMakeString ()
 
virtual RexxTextprimitiveMakeText ()
 
virtual RexxArraymakeArray ()
 
virtual RexxStringstringValue ()
 
virtual RexxTexttextValue ()
 
virtual RexxIntegerintegerValue (size_t)
 
virtual bool numberValue (wholenumber_t &result, size_t precision)
 
virtual bool numberValue (wholenumber_t &result)
 
virtual bool unsignedNumberValue (stringsize_t &result, size_t precision)
 
virtual bool unsignedNumberValue (stringsize_t &result)
 
virtual bool doubleValue (double &result)
 
virtual RexxNumberStringnumberString ()
 
virtual bool isEqual (RexxObject *)
 
virtual bool isInstanceOf (RexxClass *)
 
virtual RexxMethodinstanceMethod (RexxString *)
 
virtual RexxSupplierinstanceMethods (RexxClass *)
 
virtual RexxObjectdynamicTarget (RexxObject **arguments, size_t count, size_t named_count)
 
void hasUninit ()
 
void removedUninit ()
 
void printObject ()
 
RexxObjectclone ()
 
- Public Member Functions inherited from RexxVirtualBase
virtual RexxObjectunflatten (RexxEnvelope *)
 

Static Public Member Functions

static void createLocks ()
 
static void closeLocks ()
 
static void restore ()
 
static void buildVirtualFunctionTable ()
 
static void create ()
 
static void createImage (const char *imageTarget)
 
static RexxStringgetGlobalName (const char *value)
 
static void createStrings ()
 
static RexxArraysaveStrings ()
 
static void restoreStrings (RexxArray *stringArray)
 
static void addToSystem (const char *name, RexxInternalObject *classObj)
 
static void completeSystemClass (const char *name, RexxClass *classObj)
 
static void createRexxPackage ()
 
- Static Public Member Functions inherited from RexxInternalObject
static size_t getObjectHeaderSize ()
 

Public Attributes

size_t markWord
 
int markReason
 
RexxVariablevariableCache
 
GlobalProtectedObjectprotectedObjects
 
- Public Attributes inherited from RexxInternalObject
ObjectHeader header
 
RexxBehaviourbehaviour
 

Static Public Attributes

static void * virtualFunctionTable [] = {NULL}
 
static PCPPM exportedMethods []
 
static RexxDirectoryenvironment = OREF_NULL
 
static RexxDirectoryfunctionsDir = OREF_NULL
 
static RexxDirectorycommonRetrievers = OREF_NULL
 
static RexxDirectorykernel = OREF_NULL
 
static RexxDirectorysystem = OREF_NULL
 
static PackageClassrexxPackage = OREF_NULL
 

Private Types

enum  {
  saveArray_ENV = 1 , saveArray_KERNEL , saveArray_NAME_STRINGS , saveArray_TRUE ,
  saveArray_FALSE , saveArray_NIL , saveArray_GLOBAL_STRINGS , saveArray_CLASS ,
  saveArray_PBEHAV , saveArray_PACKAGES , saveArray_NULLA , saveArray_NULLPOINTER ,
  saveArray_REXX_PACKAGE , saveArray_SYSTEM , saveArray_FUNCTIONS , saveArray_COMMON_RETRIEVERS ,
  saveArray_highest = saveArray_COMMON_RETRIEVERS
}
 

Private Member Functions

void checkLiveStack ()
 
void pushLiveStack (RexxObject *obj)
 
RexxObjectpopLiveStack ()
 
void bumpMarkWord ()
 
void restoreMark (RexxObject *markObject, RexxObject **pMarkObject)
 
void unflattenMark (RexxObject *markObject, RexxObject **pMarkObject)
 
void restoreObjectMark (RexxObject *markObject, RexxObject **pMarkObject)
 
void saveImageMark (RexxObject *markObject, RexxObject **pMarkObject)
 
void orphanCheckMark (RexxObject *markObject, RexxObject **pMarkObject)
 
bool inObjectStorage (RexxObject *obj)
 
bool inSharedObjectStorage (RexxObject *obj)
 
bool objectReferenceOK (RexxObject *o)
 
void restoreImage ()
 

Static Private Member Functions

static void defineKernelMethod (const char *name, RexxBehaviour *behaviour, PCPPM entryPoint, size_t arguments, bool named_arguments=false)
 
static void defineProtectedKernelMethod (const char *name, RexxBehaviour *behaviour, PCPPM entryPoint, size_t arguments, bool named_arguments=false)
 
static void definePrivateKernelMethod (const char *name, RexxBehaviour *behaviour, PCPPM entryPoint, size_t arguments, bool named_arguments=false)
 

Private Attributes

RexxStackliveStack
 
RexxStackflattenStack
 
RexxSaveStacksaveStack
 
RexxIdentityTablesaveTable
 
RexxTablemarkTable
 
RexxIdentityTableold2new
 
RexxIdentityTableuninitTable
 
size_t pendingUninits
 
bool processingUninits
 
MemorySegmentPoolfirstPool
 
MemorySegmentPoolcurrentPool
 
OldSpaceSegmentSet oldSpaceSegments
 
NormalSegmentSet newSpaceNormalSegments
 
LargeSegmentSet newSpaceLargeSegments
 
char * image_buffer
 
size_t image_offset
 
size_t relocation
 
bool dumpEnable
 
bool saveimage
 
bool restoreimage
 
bool checkSetOK
 
bool orphanCheck
 
size_t objOffset
 
RexxEnvelopeenvelope
 
RexxStackoriginalLiveStack
 
MemoryStatsimageStats
 
size_t allocations
 
size_t collections
 
WeakReferenceweakReferenceList
 

Static Private Attributes

static RexxDirectoryglobalStrings = OREF_NULL
 
static SysMutex flattenMutex
 
static SysMutex unflattenMutex
 
static SysMutex envelopeMutex
 

Additional Inherited Members

- Protected Member Functions inherited from RexxVirtualBase
virtual ~RexxVirtualBase ()
 
virtual void baseVirtual ()
 

Detailed Description

Definition at line 169 of file RexxMemory.hpp.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
saveArray_ENV 
saveArray_KERNEL 
saveArray_NAME_STRINGS 
saveArray_TRUE 
saveArray_FALSE 
saveArray_NIL 
saveArray_GLOBAL_STRINGS 
saveArray_CLASS 
saveArray_PBEHAV 
saveArray_PACKAGES 
saveArray_NULLA 
saveArray_NULLPOINTER 
saveArray_REXX_PACKAGE 
saveArray_SYSTEM 
saveArray_FUNCTIONS 
saveArray_COMMON_RETRIEVERS 
saveArray_highest 

Definition at line 323 of file RexxMemory.hpp.

Constructor & Destructor Documentation

◆ RexxMemory() [1/2]

◆ RexxMemory() [2/2]

RexxMemory::RexxMemory ( RESTORETYPE  restoreType)
inline

Definition at line 176 of file RexxMemory.hpp.

Member Function Documentation

◆ addToSystem()

void RexxMemory::addToSystem ( const char *  name,
RexxInternalObject value 
)
static

Add a object to the kernel directory using the provided name.

Parameters
nameThe name of the new environment entry.
valueThe value added.

Definition at line 148 of file Setup.cpp.

References getGlobalName(), and TheSystem.

Referenced by createImage().

◆ addUninitObject()

void RexxMemory::addUninitObject ( RexxObject obj)

◆ addWeakReference()

void RexxMemory::addWeakReference ( WeakReference ref)

◆ allocateImageBuffer()

char * RexxMemory::allocateImageBuffer ( size_t  size)

Definition at line 1099 of file RexxMemory.cpp.

References oldObject().

Referenced by SystemInterpreter::loadImage().

◆ buildVirtualFunctionTable()

void RexxMemory::buildVirtualFunctionTable ( )
static

Definition at line 174 of file VirtualFunctionTable.cpp.

References getVftPointer(), RESTOREIMAGE, T_AbstractCode, T_Activation, T_ActivationFrameBuffer, T_Activity, T_AddressInstruction, T_Array, T_ArrayClass, T_AssignmentInstruction, T_AttributeGetterCode, T_AttributeSetterCode, T_Behaviour, T_BinaryOperatorTerm, T_Buffer, T_BufferClass, T_CallInstruction, T_Class, T_ClassClass, T_ClassDirective, T_Clause, T_CommandHandler, T_CommandInstruction, T_CompoundElement, T_CompoundVariableTerm, T_ConstantGetterCode, T_CPPCode, T_Directory, T_DirectoryClass, T_DoBlock, T_DoInstruction, T_DotVariableTerm, T_DropInstruction, T_ElseInstruction, T_EndIfInstruction, T_EndInstruction, T_Envelope, T_ExitInstruction, T_ExposeInstruction, T_ExtensionDirective, T_ForwardInstruction, T_FunctionCallTerm, T_GuardInstruction, T_HashTable, T_IdentityTable, T_IdentityTableClass, T_IfInstruction, T_IndirectVariableTerm, T_Instruction, T_Integer, T_IntegerClass, T_InternalStack, T_InterpreterInstance, T_InterpretInstruction, T_LabelInstruction, T_LeaveInstruction, T_LibraryDirective, T_LibraryPackage, T_List, T_ListClass, T_ListTable, T_ListTerm, T_LogicalTerm, T_Memory, T_Message, T_MessageClass, T_MessageInstruction, T_MessageSendTerm, T_Method, T_MethodClass, T_MutableBuffer, T_MutableBufferClass, T_NativeActivation, T_NativeMethod, T_NativeRoutine, T_NilObject, T_NopInstruction, T_NumberString, T_NumberStringClass, T_NumericInstruction, T_Object, T_ObjectClass, T_OptionsInstruction, T_OtherwiseInstruction, T_Package, T_PackageClass, T_ParseInstruction, T_ParseTrigger, T_Pointer, T_PointerClass, T_ProcedureInstruction, T_Queue, T_QueueClass, T_QueueInstruction, T_RaiseInstruction, T_RegisteredRoutine, T_Relation, T_RelationClass, T_ReplyInstruction, T_RequiresDirective, T_ReturnInstruction, T_RexxBlock, T_RexxBlockClass, T_RexxCode, T_RexxContext, T_RexxContextClass, T_RexxSource, T_RexxText, T_RexxTextClass, T_Routine, T_RoutineClass, T_SayInstruction, T_SecurityManager, T_SelectInstruction, T_SignalInstruction, T_SmartBuffer, T_SourceLiteral, T_Stack, T_StackFrame, T_StackFrameClass, T_Stem, T_StemClass, T_StemVariableTerm, T_String, T_StringClass, T_Supplier, T_SupplierClass, T_Table, T_TableClass, T_ThenInstruction, T_Token, T_TraceInstruction, T_UnaryOperatorTerm, T_Unicode, T_UnicodeClass, T_UpperInstruction, T_UseInstruction, T_Variable, T_VariableDictionary, T_VariableTerm, T_WeakReference, T_WeakReferenceClass, and virtualFunctionTable.

Referenced by initialize().

◆ bumpMarkWord()

void RexxMemory::bumpMarkWord ( )
inlineprivate

Definition at line 348 of file RexxMemory.hpp.

References MarkMask, and markWord.

Referenced by collect(), and saveImage().

◆ checkAllocs()

void RexxMemory::checkAllocs ( )

◆ checkLiveStack()

void RexxMemory::checkLiveStack ( )
inlineprivate

Definition at line 345 of file RexxMemory.hpp.

References RexxStack::checkRoom(), liveStack, and liveStackFull().

Referenced by pushLiveStack().

◆ checkSetOref()

◆ checkUninit()

◆ checkUninitQueue()

void RexxMemory::checkUninitQueue ( )
inline

Definition at line 200 of file RexxMemory.hpp.

References pendingUninits, processingUninits, runUninits(), and verboseMessage().

Referenced by RexxActivation::run().

◆ checkWeakReferences()

void RexxMemory::checkWeakReferences ( )

◆ clearSaveStack()

void RexxMemory::clearSaveStack ( )
inline

Definition at line 269 of file RexxMemory.hpp.

References saveStack, RexxStack::size, and RexxStack::stack.

Referenced by collectAndUninit().

◆ closeLocks()

void RexxMemory::closeLocks ( )
static

Definition at line 2318 of file RexxMemory.cpp.

References SysMutex::close(), envelopeMutex, flattenMutex, and unflattenMutex.

Referenced by Interpreter::processShutdown().

◆ collect()

◆ collectAndUninit()

void RexxMemory::collectAndUninit ( bool  clearStack)

Force a last-gasp garbage collection and running of the uninits during interpreter instance shutdown. This is an attempt to ensure that all objects with uninit methods get a chance to clean up prior to termination.

Definition at line 498 of file RexxMemory.cpp.

References clearSaveStack(), collect(), runUninits(), and verboseMessage().

Referenced by lastChanceUninit(), and InterpreterInstance::terminate().

◆ completeSystemClass()

void RexxMemory::completeSystemClass ( const char *  name,
RexxClass classObj 
)
static

Finalize a system class during image construction. This places the class in the Environment and also adds it to the Rexx package.

Parameters
nameThe class name.
classObjThe class object.

Definition at line 173 of file Setup.cpp.

References getGlobalName(), TheEnvironment, and TheRexxPackage.

Referenced by createImage().

◆ create()

void RexxMemory::create ( )
static

◆ createImage()

void RexxMemory::createImage ( const char *  imageTarget)
static

Initialize the Rexx memory environment during an image built.

Parameters
imageTargetThe location to save the created image file.

Definition at line 219 of file Setup.cpp.

References A_COUNT, RexxString::abbrev(), RexxInteger::abs(), RexxNumberString::abs(), RexxString::abs(), PackageClass::addClass(), PackageClass::addPackage(), PackageClass::addPublicClass(), PackageClass::addPublicRoutine(), PackageClass::addRoutine(), addToSystem(), RexxHashTableCollection::allAt(), RexxRelation::allIndex(), RexxDirectory::allIndexes(), RexxList::allIndexes(), RexxQueue::allIndexes(), RexxStem::allIndexes(), RexxHashTableCollection::allIndexes(), RexxArray::allIndexes(), RexxDirectory::allItems(), RexxList::allItems(), RexxStem::allItems(), RexxHashTableCollection::allItems(), RexxArray::allItems(), RexxInteger::andOp(), RexxNumberString::andOp(), RexxString::andOp(), RexxList::append(), RexxMutableBuffer::append(), RexxQueue::append(), RexxArray::appendRexx(), RexxMessage::arguments(), RexxQueue::at(), RexxDirectory::atRexx(), RexxSupplier::available(), RexxString::b2x(), BASEIMAGELOAD, RexxString::bitAnd(), RexxString::bitOr(), RexxString::bitXor(), RexxStem::bracket(), RexxStem::bracketEqual(), RexxString::c2d(), RexxString::c2x(), RoutineClass::callRexx(), RoutineClass::callWithRexx(), RexxString::caselessAbbrev(), RexxString::caselessChangeStr(), RexxMutableBuffer::caselessChangeStr(), RexxString::caselessCompare(), RexxString::caselessCompareToRexx(), RexxString::caselessCountStrRexx(), RexxMutableBuffer::caselessCountStrRexx(), RexxString::caselessEquals(), RexxMutableBuffer::caselessLastPos(), RexxString::caselessLastPosRexx(), RexxMutableBuffer::caselessMatch(), RexxString::caselessMatch(), RexxMutableBuffer::caselessMatchChar(), RexxString::caselessMatchChar(), RexxMutableBuffer::caselessPos(), RexxString::caselessPosRexx(), RexxMutableBuffer::caselessWordPos(), RexxString::caselessWordPos(), RexxInteger::ceiling(), RexxNumberString::ceiling(), RexxString::ceiling(), RexxString::center(), RexxString::changeStr(), RexxMutableBuffer::changeStr(), CLASS_CREATE, RexxInteger::classObject(), RexxNumberString::classObject(), RexxObject::classObject(), RexxList::classOf(), RexxString::compare(), RexxString::compareToRexx(), RexxMessage::completed(), completeSystemClass(), RexxObject::concatBlank(), RexxString::concatBlank(), RexxObject::concatRexx(), RexxString::concatRexx(), RexxString::copies(), RexxBlock::copyRexx(), RexxContext::copyRexx(), RexxObject::copyRexx(), Unicode::copyRexx(), RexxString::countStrRexx(), RexxMutableBuffer::countStrRexx(), CPPM, create(), RexxArray::createInstance(), RexxBlock::createInstance(), RexxBuffer::createInstance(), RexxContext::createInstance(), RexxDirectory::createInstance(), RexxIdentityTable::createInstance(), RexxList::createInstance(), RexxMessage::createInstance(), RexxMethod::createInstance(), RexxMutableBuffer::createInstance(), RexxNumberString::createInstance(), RexxObject::createInstance(), PackageClass::createInstance(), RexxPointer::createInstance(), RexxQueue::createInstance(), RexxRelation::createInstance(), RoutineClass::createInstance(), StackFrameClass::createInstance(), RexxStem::createInstance(), RexxString::createInstance(), RexxSupplier::createInstance(), RexxTable::createInstance(), RexxText::createInstance(), Unicode::createInstance(), WeakReference::createInstance(), Interpreter::createInterpreterInstance(), RexxActivity::createNewActivationStack(), createRexxPackage(), createStrings(), ActivityManager::currentActivity, RexxString::d2c(), RexxInteger::d2c(), RexxNumberString::d2c(), RexxString::d2x(), RexxInteger::d2x(), RexxNumberString::d2x(), RexxString::dataType(), RexxString::decodeBase64(), RexxClass::defaultNameRexx(), RexxObject::defaultNameRexx(), RexxClass::defineClassMethod(), defineKernelMethod(), RexxClass::defineMethod(), RexxClass::defineMethods(), definePrivateKernelMethod(), defineProtectedKernelMethod(), RexxClass::deleteMethod(), RexxArray::deleteRexx(), RexxString::delstr(), RexxString::delWord(), RexxMutableBuffer::delWord(), PackageClass::digits(), RexxArray::dimension(), RexxInteger::divide(), RexxNumberString::divide(), RexxString::divide(), RexxObject::dynamicTargetRexx(), RexxArray::empty(), RexxDirectory::empty(), RexxList::empty(), RexxStem::empty(), RexxHashTableCollection::empty(), enableOrefChecks(), RexxString::encodeBase64(), RexxClass::enhanced(), RexxDirectory::entryRexx(), RexxClass::equal(), RexxInteger::equal(), RexxNumberString::equal(), RexxObject::equal(), RexxPointer::equal(), RexxString::equal(), RexxString::equals(), RexxActivity::error(), RexxMessage::errorCondition(), RexxArray::fill(), PackageClass::findClassRexx(), PackageClass::findProgramRexx(), PackageClass::findRoutineRexx(), RexxArray::firstItem(), RexxList::firstItem(), RexxArray::firstRexx(), RexxList::firstRexx(), RexxQueue::firstRexx(), RexxInteger::floor(), RexxNumberString::floor(), RexxString::floor(), PackageClass::form(), RexxInteger::format(), RexxString::format(), RexxNumberString::formatRexx(), PackageClass::fuzz(), RexxContext::getArgs(), StackFrameClass::getArguments(), RexxClass::getBaseClass(), RexxMutableBuffer::getBufferSize(), PackageClass::getClasses(), RexxContext::getCondition(), RexxContext::getDigits(), RexxContext::getDigitsPropagate(), RexxArray::getDimensions(), RexxContext::getExecutable(), StackFrameClass::getExecutable(), RexxContext::getForm(), RexxContext::getFuzz(), getGlobalName(), RexxClass::getId(), PackageClass::getImportedClasses(), PackageClass::getImportedPackages(), PackageClass::getImportedRoutines(), RexxBlock::getKind(), RexxContext::getLine(), StackFrameClass::getLine(), RexxClass::getMetaClass(), PackageClass::getMethods(), RexxContext::getName(), PackageClass::getName(), StackFrameClass::getName(), RexxContext::getNamedArgs(), RexxBlock::getPackage(), RexxClass::getPackage(), RexxContext::getPackage(), BaseExecutable::getPackage(), RexxContext::getParentContextObject(), PackageClass::getPublicClasses(), PackageClass::getPublicRoutines(), RexxBlock::getRawExecutable(), RexxHashTableCollection::getRexx(), RexxArray::getRexx(), PackageClass::getRoutines(), RexxContext::getRS(), RexxMethod::getScopeRexx(), RexxBlock::getSource(), PackageClass::getSource(), PackageClass::getSourceLineRexx(), PackageClass::getSourceSize(), RexxContext::getStackFrames(), RexxClass::getSubClasses(), RexxClass::getSuperClass(), RexxClass::getSuperClasses(), SystemInterpreter::getSystemName(), StackFrameClass::getTarget(), StackFrameClass::getTraceLine(), StackFrameClass::getType(), RexxBlock::getVariables(), RexxContext::getVariables(), Interpreter::getVersionNumber(), RexxDirectory::hasEntry(), RexxMessage::hasError(), RexxInteger::hashCode(), RexxNumberString::hashCode(), RexxObject::hashCode(), RexxList::hasIndex(), RexxQueue::hasindex(), RexxStem::hasIndex(), RexxDirectory::hasIndex(), RexxHashTableCollection::hasIndexRexx(), RexxArray::hasIndexRexx(), RexxArray::hasItem(), RexxDirectory::hasItem(), RexxList::hasItem(), RexxStem::hasItem(), RexxRelation::hasItem(), RexxHashTableCollection::hasItemRexx(), RexxObject::hasMethodRexx(), RexxObject::identityHashRexx(), RexxSupplier::index(), RexxArray::index(), RexxList::index(), RexxQueue::index(), RexxStem::index(), RexxDirectory::indexRexx(), RexxHashTableCollection::indexRexx(), RexxClass::inherit(), RexxObject::init(), ActivityManager::init(), Interpreter::init(), PackageManager::initialize(), RexxActivity::initializeThreadContext(), RexxSupplier::initRexx(), RexxQueue::insert(), RexxMutableBuffer::insert(), RexxString::insert(), RexxList::insertRexx(), RexxArray::insertRexx(), RexxObject::instanceMethodRexx(), RexxObject::instanceMethodsRexx(), RexxInteger::integerDivide(), RexxNumberString::integerDivide(), RexxString::integerDivide(), IntegerEight, IntegerFive, IntegerFour, IntegerMinusOne, IntegerNine, IntegerOne, IntegerSeven, IntegerSix, IntegerThree, IntegerTwo, IntegerZero, RexxClass::isAbstractRexx(), RexxMethod::isAbstractRexx(), RexxMutableBuffer::isASCIIRexx(), RexxString::isASCIIRexx(), RexxMethod::isAttributeRexx(), RexxMethod::isConstantRexx(), RexxArray::isEmpty(), RexxDirectory::isEmpty(), RexxList::isEmpty(), RexxStem::isEmpty(), RexxHashTableCollection::isEmpty(), RexxInteger::isGreaterOrEqual(), RexxNumberString::isGreaterOrEqual(), RexxString::isGreaterOrEqual(), RexxInteger::isGreaterThan(), RexxNumberString::isGreaterThan(), RexxString::isGreaterThan(), RexxMethod::isGuardedRexx(), RexxObject::isInstanceOfRexx(), RexxInteger::isLessOrEqual(), RexxNumberString::isLessOrEqual(), RexxString::isLessOrEqual(), RexxInteger::isLessThan(), RexxNumberString::isLessThan(), RexxString::isLessThan(), RexxClass::isMetaClassRexx(), RexxObject::isNilRexx(), RexxPointer::isNull(), RexxMethod::isPackageRexx(), RexxMethod::isPrivateRexx(), RexxMethod::isProtectedRexx(), RexxClass::isSubclassOf(), RexxDirectory::items(), RexxArray::itemsRexx(), RexxDirectory::itemsRexx(), RexxList::itemsRexx(), RexxStem::itemsRexx(), RexxTable::itemsRexx(), kernel_public, RexxArray::lastItem(), RexxList::lastItem(), RexxMutableBuffer::lastPos(), RexxString::lastPosRexx(), RexxArray::lastRexx(), RexxList::lastRexx(), RexxQueue::lastRexx(), RexxString::left(), RexxMutableBuffer::lengthRexx(), RexxString::lengthRexx(), loader(), RexxMethod::loadExternalMethod(), RoutineClass::loadExternalRoutine(), PackageClass::loadLibrary(), PackageClass::loadPackage(), RexxLocal::local(), Interpreter::logicError(), RexxMutableBuffer::lower(), RexxString::lowerRexx(), RexxObject::makeArrayRexx(), RexxObject::makeString(), RexxObject::makeStringRexx(), RexxMutableBuffer::match(), RexxString::match(), RexxMutableBuffer::matchChar(), RexxString::matchChar(), RexxInteger::Max(), RexxNumberString::Max(), RexxString::Max(), memoryObject, RexxMessage::messageName(), RexxMessage::messageTarget(), RexxClass::method(), RexxClass::methods(), RexxInteger::Min(), RexxNumberString::Min(), RexxString::Min(), RexxInteger::minus(), RexxNumberString::minus(), RexxString::minus(), RexxClass::mixinClassRexx(), RexxInteger::multiply(), RexxNumberString::multiply(), RexxString::multiply(), RexxMutableBuffer::mydelete(), new_directory(), new_integer(), new_string(), new_text(), RexxMethod::newFileRexx(), RoutineClass::newFileRexx(), RexxArray::newRexx(), RexxIdentityTable::newRexx(), RexxList::newRexx(), RexxMessage::newRexx(), RexxMethod::newRexx(), RexxMutableBufferClass::newRexx(), RexxQueue::newRexx(), RexxRelation::newRexx(), RoutineClass::newRexx(), RexxStem::newRexx(), RexxString::newRexx(), RexxSupplierClass::newRexx(), RexxTable::newRexx(), RexxText::newRexx(), Unicode::newRexx(), RexxBlock::newRexx(), RexxBuffer::newRexx(), RexxContext::newRexx(), RexxPointer::newRexx(), StackFrameClass::newRexx(), WeakReference::newRexx(), RexxClass::newRexx(), RexxObject::newRexx(), PackageClass::newRexx(), RexxDirectory::newRexx(), RexxSupplier::next(), RexxList::next(), RexxQueue::next(), RexxArray::nextRexx(), RexxClass::notEqual(), RexxInteger::notEqual(), RexxNumberString::notEqual(), RexxString::notEqual(), RexxObject::notEqual(), RexxPointer::notEqual(), RexxMessage::notify(), RexxInteger::notOp(), RexxNumberString::notOp(), RexxString::notOp(), RexxObject::objectName(), RexxObject::objectNameEquals(), RexxArray::of(), RexxQueue::ofRexx(), OREF_NULL, RexxInteger::orOp(), RexxNumberString::orOp(), RexxString::orOp(), RexxMutableBuffer::overlay(), RexxString::overlay(), RexxQueue::peek(), RexxInteger::plus(), RexxNumberString::plus(), RexxString::plus(), RexxString::posRexx(), RexxMutableBuffer::posRexx(), RexxInteger::power(), RexxNumberString::power(), RexxString::power(), RexxList::previous(), RexxQueue::previous(), RexxArray::previousRexx(), RexxQueue::pullRexx(), RexxQueue::pushRexx(), RexxList::put(), RexxQueue::put(), RexxRelation::put(), RexxDirectory::put(), RexxArray::putRexx(), RexxHashTableCollection::putRexx(), RexxClass::queryMixinClass(), RexxQueue::queueRexx(), RC_OK, RexxInteger::remainder(), RexxNumberString::remainder(), RexxString::remainder(), RexxList::remove(), RexxQueue::remove(), RexxStem::remove(), RexxRelation::removeAll(), RexxArray::removeItem(), RexxDirectory::removeItem(), RexxList::removeItem(), RexxStem::removeItem(), RexxRelation::removeItemRexx(), RexxHashTableCollection::removeItemRexx(), RexxHashTableCollection::removeRexx(), RexxArray::removeRexx(), RexxDirectory::removeRexx(), RexxMutableBuffer::replaceAt(), RexxString::replaceAt(), RexxStem::request(), RexxObject::requestRexx(), CPPCode::resolveExportedMethod(), RexxActivity::resolveProgramName(), RexxMessage::result(), ActivityManager::returnActivity(), RexxString::reverse(), RexxString::right(), RexxInteger::round(), RexxNumberString::round(), RexxString::round(), RexxObject::run(), saveImage(), RexxList::section(), RexxQueue::section(), RexxArray::sectionRexx(), RexxMessage::send(), RexxObject::send(), RexxObject::sendWith(), RexxContext::setArgs(), RexxMutableBuffer::setBufferSize(), RexxMutableBuffer::setEncodingRexx(), PackageClass::setEncodingRexx(), RexxString::setEncodingRexx(), RexxDirectory::setEntry(), RexxMethod::setGuardedRexx(), setMarkTable(), RexxDirectory::setMethod(), RexxObject::setMethod(), RexxMethod::setPrivateRexx(), RexxMethod::setProtectedRexx(), RexxClass::setRexxDefined(), RexxMethod::setSecurityManager(), PackageClass::setSecurityManager(), RoutineClass::setSecurityManager(), RexxString::setTextRexx(), RexxMethod::setUnguardedRexx(), RexxInteger::sign(), RexxNumberString::Sign(), RexxString::sign(), RexxArray::sizeRexx(), BaseExecutable::source(), RexxString::space(), RexxMutableBuffer::space(), RexxArray::stableSortRexx(), RexxArray::stableSortWithRexx(), RexxMessage::start(), RexxObject::start(), RexxObject::startWith(), RexxClass::strictEqual(), RexxInteger::strictEqual(), RexxNumberString::strictEqual(), RexxObject::strictEqual(), RexxString::strictEqual(), RexxInteger::strictGreaterOrEqual(), RexxNumberString::strictGreaterOrEqual(), RexxString::strictGreaterOrEqual(), RexxInteger::strictGreaterThan(), RexxNumberString::strictGreaterThan(), RexxString::strictGreaterThan(), RexxInteger::strictLessOrEqual(), RexxNumberString::strictLessOrEqual(), RexxString::strictLessOrEqual(), RexxInteger::strictLessThan(), RexxNumberString::strictLessThan(), RexxString::strictLessThan(), RexxInteger::strictNotEqual(), RexxNumberString::strictNotEqual(), RexxString::strictNotEqual(), RexxObject::strictNotEqual(), RexxObject::stringRexx(), RexxString::strip(), RexxString::subchar(), RexxMutableBuffer::subchar(), RexxClass::subclassRexx(), RexxString::substr(), RexxMutableBuffer::substr(), RexxMutableBuffer::subWord(), RexxString::subWord(), RexxMutableBuffer::subWords(), RexxString::subWords(), RexxDirectory::supplier(), RexxList::supplier(), RexxQueue::supplier(), RexxStem::supplier(), RexxHashTableCollection::supplier(), RexxArray::supplier(), Unicode::systemIsLittleEndian(), T_NilObject, TheArrayBehaviour, TheArrayClass, TheArrayClassBehaviour, TheBufferBehaviour, TheBufferClass, TheBufferClassBehaviour, TheClassBehaviour, TheClassClass, TheClassClassBehaviour, TheCommonRetrievers, TheDirectoryBehaviour, TheDirectoryClass, TheDirectoryClassBehaviour, TheEnvironment, TheFalseObject, TheFunctionsDirectory, TheIdentityTableBehaviour, TheIdentityTableClass, TheIdentityTableClassBehaviour, TheIntegerBehaviour, TheIntegerClass, TheIntegerClassBehaviour, TheKernel, TheListBehaviour, TheListClass, TheListClassBehaviour, TheMessageBehaviour, TheMessageClass, TheMessageClassBehaviour, TheMethodBehaviour, TheMethodClass, TheMethodClassBehaviour, TheMutableBufferBehaviour, TheMutableBufferClass, TheMutableBufferClassBehaviour, TheNilObject, TheNullArray, TheNullPointer, TheNullText, TheNumberStringBehaviour, TheNumberStringClass, TheNumberStringClassBehaviour, TheObjectBehaviour, TheObjectClass, TheObjectClassBehaviour, ThePackageBehaviour, ThePackageClass, ThePackageClassBehaviour, ThePointerBehaviour, ThePointerClass, ThePointerClassBehaviour, TheQueueBehaviour, TheQueueClass, TheQueueClassBehaviour, TheRelationBehaviour, TheRelationClass, TheRelationClassBehaviour, TheRexxBlockBehaviour, TheRexxBlockClass, TheRexxBlockClassBehaviour, TheRexxContextBehaviour, TheRexxContextClass, TheRexxContextClassBehaviour, TheRexxPackage, TheRexxTextBehaviour, TheRexxTextClass, TheRexxTextClassBehaviour, TheRoutineBehaviour, TheRoutineClass, TheRoutineClassBehaviour, TheStackFrameBehaviour, TheStackFrameClass, TheStackFrameClassBehaviour, TheStemBehaviour, TheStemClass, TheStemClassBehaviour, TheStringBehaviour, TheStringClass, TheStringClassBehaviour, TheSupplierBehaviour, TheSupplierClass, TheSupplierClassBehaviour, TheSystem, TheTableBehaviour, TheTableClass, TheTableClassBehaviour, TheTrueObject, TheUnicodeBehaviour, TheUnicodeClass, TheUnicodeClassBehaviour, TheWeakReferenceBehaviour, TheWeakReferenceClass, TheWeakReferenceClassBehaviour, RexxStem::toDirectory(), RexxArray::toString(), PackageClass::trace(), RexxString::translate(), RexxMutableBuffer::translate(), RexxString::trunc(), RexxInteger::trunc(), RexxNumberString::trunc(), Unicode::unialgo_version(), RexxClass::uninherit(), RexxHashTableCollection::uniqueIndexes(), RexxObject::unknownRexx(), RexxObject::unsetMethod(), RexxMutableBuffer::upper(), RexxString::upperRexx(), Unicode::utf8proc_codepointBidiClass(), Unicode::utf8proc_codepointBidiMirrored(), Unicode::utf8proc_codepointBoundClass(), Unicode::utf8proc_codepointCategory(), Unicode::utf8proc_codepointCharWidth(), Unicode::utf8proc_codepointCombiningClass(), Unicode::utf8proc_codepointControlBoundary(), Unicode::utf8proc_codepointDecompositionType(), Unicode::utf8proc_codepointIgnorable(), Unicode::utf8proc_codepointIsLower(), Unicode::utf8proc_codepointIsUpper(), Unicode::utf8proc_codepointToLowerSimple(), Unicode::utf8proc_codepointToTitleSimple(), Unicode::utf8proc_codepointToUpperSimple(), Unicode::utf8proc_graphemeBreak(), Unicode::utf8proc_transform(), Unicode::utf8proc_version(), RexxSupplier::value(), WeakReference::value(), RexxList::value(), VARIABLE_RC, VARIABLE_RESULT, VARIABLE_SELF, VARIABLE_SIGL, VARIABLE_SUPER, RexxMutableBuffer::verify(), RexxString::verify(), RexxMutableBuffer::word(), RexxString::word(), RexxMutableBuffer::wordIndex(), RexxString::wordIndex(), RexxMutableBuffer::wordLength(), RexxString::wordLength(), RexxMutableBuffer::wordPos(), RexxString::wordPos(), RexxMutableBuffer::words(), RexxString::words(), RexxString::x2b(), RexxString::x2c(), RexxString::x2d(), RexxInteger::xorOp(), RexxNumberString::xorOp(), and RexxString::xorOp().

Referenced by initialize().

◆ createLocks()

void RexxMemory::createLocks ( )
static

Definition at line 2305 of file RexxMemory.cpp.

References SysMutex::create(), envelopeMutex, flattenMutex, and unflattenMutex.

Referenced by create(), and Interpreter::processStartup().

◆ createRexxPackage()

void RexxMemory::createRexxPackage ( )
static

Create the base Rexx package object. All Rexx-defined classes in the image will be added to this package.

Definition at line 205 of file Setup.cpp.

References rexxPackage.

Referenced by createImage().

◆ createStrings()

void RexxMemory::createStrings ( )
static

Definition at line 47 of file GlobalNames.cpp.

References globalStrings, and new_directory().

Referenced by createImage().

◆ defineKernelMethod()

void RexxMemory::defineKernelMethod ( const char *  name,
RexxBehaviour behaviour,
PCPPM  entryPoint,
size_t  arguments,
bool  named_arguments = false 
)
staticprivate

Definition at line 94 of file Setup.cpp.

References RexxInternalObject::behaviour, and RexxBehaviour::define().

Referenced by createImage().

◆ definePrivateKernelMethod()

void RexxMemory::definePrivateKernelMethod ( const char *  name,
RexxBehaviour behaviour,
PCPPM  entryPoint,
size_t  arguments,
bool  named_arguments = false 
)
staticprivate

Definition at line 124 of file Setup.cpp.

References RexxInternalObject::behaviour, RexxBehaviour::define(), and RexxMethod::setPrivate().

Referenced by createImage().

◆ defineProtectedKernelMethod()

void RexxMemory::defineProtectedKernelMethod ( const char *  name,
RexxBehaviour behaviour,
PCPPM  entryPoint,
size_t  arguments,
bool  named_arguments = false 
)
staticprivate

◆ disableOrefChecks()

void RexxMemory::disableOrefChecks ( )
inline

Definition at line 267 of file RexxMemory.hpp.

References checkSetOK.

Referenced by RexxTable::addOffset(), RexxEnvelope::flattenReference(), initialize(), and saveImage().

◆ discardHoldObject()

void RexxMemory::discardHoldObject ( RexxInternalObject obj)

Definition at line 1672 of file RexxMemory.cpp.

References RexxStack::push(), RexxIdentityTable::remove(), saveStack, and saveTable.

Referenced by discardHoldObject().

◆ discardObject()

void RexxMemory::discardObject ( RexxInternalObject obj)
inline

Definition at line 212 of file RexxMemory.hpp.

References RexxIdentityTable::remove(), and saveTable.

Referenced by discardObject().

◆ dump()

◆ dumpImageStats()

◆ dumpMemoryProfile()

void RexxMemory::dumpMemoryProfile ( )

◆ dumpObject()

void RexxMemory::dumpObject ( RexxObject objectRef,
FILE *  outfile 
)

Definition at line 270 of file RexxMemory.cpp.

References RexxInternalObject::getObjectSize(), and logMemoryCheck().

Referenced by checkSetOref(), and orphanCheckMark().

◆ enableOrefChecks()

void RexxMemory::enableOrefChecks ( )
inline

Definition at line 268 of file RexxMemory.hpp.

References checkSetOK.

Referenced by RexxTable::addOffset(), createImage(), RexxEnvelope::flattenReference(), and restore().

◆ flatten()

void RexxMemory::flatten ( RexxEnvelope env)
virtual

Reimplemented from RexxVirtualBase.

Definition at line 997 of file RexxMemory.cpp.

◆ getFlattenStack()

RexxStack * RexxMemory::getFlattenStack ( void  )

◆ getGlobalName()

RexxString * RexxMemory::getGlobalName ( const char *  value)
static

Add a string to the global name table.

Parameters
valueThe new value to add.
Returns
The single instance of this string.

Definition at line 2339 of file RexxMemory.cpp.

References RexxDirectory::at(), globalStrings, RexxObject::messageSend(), new_string(), OREF_NULL, RexxDirectory::put(), and RexxInternalObject::stringValue().

Referenced by addToSystem(), completeSystemClass(), createImage(), RexxBehaviour::define(), and saveImage().

◆ getGlobalStrings()

RexxDirectory* RexxMemory::getGlobalStrings ( )
inline

Definition at line 285 of file RexxMemory.hpp.

References globalStrings.

◆ gutCheck()

◆ holdObject()

RexxObject * RexxMemory::holdObject ( RexxInternalObject obj)

Definition at line 1681 of file RexxMemory.cpp.

References RexxStack::push(), and saveStack.

Referenced by holdObject(), and GlobalProtectedObject::~GlobalProtectedObject().

◆ initialize()

void RexxMemory::initialize ( bool  restoringImage,
const char *  imageTarget 
)

Initialize the memory object, including getting the initial memory pool allocations.

Parameters
restoringImageTrue if we are initializing during an image restore, false if we need to build the initial image environemnt (i.e., called via rexximage during a build).
imageTargetThe location to store the image if this is a save operation.

Definition at line 179 of file RexxMemory.cpp.

References OldSpaceSegmentSet::allocateObject(), allocations, buildVirtualFunctionTable(), collections, createImage(), MemorySegmentPool::createPool(), currentPool, disableOrefChecks(), firstPool, NormalSegmentSet::getInitialSet(), globalStrings, liveStack, markTable, memoryObject, new_identity_table(), newSpaceLargeSegments, newSpaceNormalSegments, oldSpaceSegments, OREF_NULL, originalLiveStack, restore(), restoreImage(), restoringImage(), SegmentDeadSpace, RexxInternalObject::setBehaviour(), TheMemoryBehaviour, uninitTable, and variableCache.

Referenced by Interpreter::startInterpreter().

◆ inObjectStorage()

bool RexxMemory::inObjectStorage ( RexxObject obj)
private

◆ inSharedObjectStorage()

bool RexxMemory::inSharedObjectStorage ( RexxObject obj)
private

◆ isPendingUninit()

bool RexxMemory::isPendingUninit ( RexxObject obj)

Definition at line 633 of file RexxMemory.cpp.

References RexxIdentityTable::get(), OREF_NULL, and uninitTable.

◆ killOrphans()

◆ lastChanceUninit()

void RexxMemory::lastChanceUninit ( )

Force a last-gasp garbage collection and running of the uninits during interpreter instance shutdown. This is an attempt to ensure that all objects with uninit methods get a chance to clean up prior to termination.

Definition at line 517 of file RexxMemory.cpp.

References collectAndUninit(), RexxHashTableCollection::empty(), and uninitTable.

Referenced by Interpreter::terminateInterpreter().

◆ live()

◆ liveGeneral()

◆ liveStackFull()

void RexxMemory::liveStackFull ( )

Definition at line 1378 of file RexxMemory.cpp.

References RexxStack::copyEntries(), liveStack, originalLiveStack, and RexxStack::size.

Referenced by checkLiveStack().

◆ logObjectStats()

void RexxMemory::logObjectStats ( RexxObject obj)
inline

Definition at line 264 of file RexxMemory.hpp.

References imageStats, and MemoryStats::logObject().

Referenced by saveImageMark().

◆ logVerboseOutput()

void RexxMemory::logVerboseOutput ( const char *  message,
void *  sub1,
void *  sub2 
)

Definition at line 250 of file RexxMemory.cpp.

References logMemoryCheck().

Referenced by verboseMessage().

◆ makeProxy()

RexxObject * RexxMemory::makeProxy ( RexxEnvelope env)
virtual

Reimplemented from RexxInternalObject.

Definition at line 1007 of file RexxMemory.cpp.

References new_proxy().

◆ mark()

◆ markGeneral()

◆ markObjects()

void RexxMemory::markObjects ( void  )

◆ markObjectsMain()

void RexxMemory::markObjectsMain ( RexxObject rootObject)

◆ memoryPoolAdded()

void RexxMemory::memoryPoolAdded ( MemorySegmentPool pool)

Add a new pool to the memory set.

Parameters
poolThe new pool.

Definition at line 2244 of file RexxMemory.cpp.

References currentPool.

Referenced by MemorySegmentPool::newLargeSegment(), and MemorySegmentPool::newSegment().

◆ newLargeSegment()

MemorySegment * RexxMemory::newLargeSegment ( size_t  requestLength,
size_t  minLength 
)

◆ newObject() [1/2]

RexxObject* RexxMemory::newObject ( size_t  size)
inline

Definition at line 190 of file RexxMemory.hpp.

References newObject(), and T_Object.

Referenced by new_object(), and newObject().

◆ newObject() [2/2]

◆ newObjects()

◆ newSegment()

◆ objectReferenceOK()

bool RexxMemory::objectReferenceOK ( RexxObject o)
private

◆ oldObject()

◆ operator RexxObject *()

RexxMemory::operator RexxObject * ( )
inline

Definition at line 178 of file RexxMemory.hpp.

◆ operator=()

RexxObject* RexxMemory::operator= ( DeadObject d)
inline

Definition at line 179 of file RexxMemory.hpp.

◆ orphanCheckMark()

◆ popLiveStack()

RexxObject* RexxMemory::popLiveStack ( )
inlineprivate

Definition at line 347 of file RexxMemory.hpp.

References RexxStack::fastPop(), and liveStack.

Referenced by killOrphans(), markObjectsMain(), orphanCheckMark(), and saveImage().

◆ pushLiveStack()

void RexxMemory::pushLiveStack ( RexxObject obj)
inlineprivate

◆ pushSaveStack()

void RexxMemory::pushSaveStack ( RexxObject obj)
inline

Definition at line 265 of file RexxMemory.hpp.

References RexxStack::push(), and saveStack.

Referenced by newObject(), and newObjects().

◆ queryDump()

bool RexxMemory::queryDump ( )
inline

Definition at line 220 of file RexxMemory.hpp.

References dumpEnable.

◆ reclaim()

RexxObject * RexxMemory::reclaim ( )

Definition at line 1028 of file RexxMemory.cpp.

References collect(), and OREF_NULL.

◆ removeHold()

void RexxMemory::removeHold ( RexxInternalObject obj)
inline

Definition at line 213 of file RexxMemory.hpp.

References RexxSaveStack::remove(), and saveStack.

◆ removeSavedObject()

void RexxMemory::removeSavedObject ( RexxObject obj)
inline

Definition at line 266 of file RexxMemory.hpp.

References RexxSaveStack::remove(), and saveStack.

◆ removeUninitObject()

void RexxMemory::removeUninitObject ( RexxObject obj)

Definition at line 605 of file RexxMemory.cpp.

References RexxIdentityTable::remove(), and uninitTable.

Referenced by RexxInternalObject::removedUninit().

◆ reSize()

void RexxMemory::reSize ( RexxObject shrinkObj,
size_t  requestSize 
)

◆ restore()

◆ restoreImage()

◆ restoreMark()

void RexxMemory::restoreMark ( RexxObject markObject,
RexxObject **  pMarkObject 
)
inlineprivate

Definition at line 349 of file RexxMemory.hpp.

References relocation.

Referenced by markGeneral().

◆ restoreObjectMark()

void RexxMemory::restoreObjectMark ( RexxObject markObject,
RexxObject **  pMarkObject 
)
inlineprivate

Definition at line 359 of file RexxMemory.hpp.

References markWord, objOffset, and RexxInternalObject::setObjectLive().

Referenced by markGeneral().

◆ restoreStrings()

void RexxMemory::restoreStrings ( RexxArray stringArray)
static

Definition at line 105 of file GlobalNames.cpp.

References RexxArray::data().

Referenced by restoreImage().

◆ restoringImage()

bool RexxMemory::restoringImage ( )
inline

Definition at line 218 of file RexxMemory.hpp.

References restoreimage.

Referenced by initialize(), and RexxBehaviour::liveGeneral().

◆ returnFlattenStack()

void RexxMemory::returnFlattenStack ( void  )

Definition at line 2210 of file RexxMemory.cpp.

References flattenMutex, flattenStack, and SysMutex::release().

Referenced by RexxEnvelope::pack().

◆ runUninits()

◆ saveImage()

◆ saveImageMark()

◆ saveObject()

RexxObject* RexxMemory::saveObject ( RexxInternalObject saveObj)
inline

Definition at line 211 of file RexxMemory.hpp.

References RexxIdentityTable::add(), and saveTable.

Referenced by saveImage(), and saveObject().

◆ saveStrings()

RexxArray * RexxMemory::saveStrings ( )
static

Definition at line 71 of file GlobalNames.cpp.

References new_array().

Referenced by saveImage().

◆ savingImage()

bool RexxMemory::savingImage ( )
inline

◆ scavengeSegmentSets()

◆ setDump()

RexxObject * RexxMemory::setDump ( RexxObject selection)

◆ setEnvelope()

void RexxMemory::setEnvelope ( RexxEnvelope _envelope)

◆ setMarkTable()

void RexxMemory::setMarkTable ( RexxTable marktable)
inline

Definition at line 225 of file RexxMemory.hpp.

References markTable.

Referenced by createImage().

◆ setObjectOffset()

void RexxMemory::setObjectOffset ( size_t  offset)

◆ setOref()

◆ setOrphanCheck()

void RexxMemory::setOrphanCheck ( bool  orphancheck)
inline

Definition at line 226 of file RexxMemory.hpp.

References orphanCheck.

◆ setParms()

RexxObject * RexxMemory::setParms ( RexxObject deadSegs,
RexxObject notUsed 
)

Definition at line 1692 of file RexxMemory.cpp.

References OREF_NULL.

◆ setUpMemoryTables()

◆ shutdown()

void RexxMemory::shutdown ( )

◆ temporaryObject()

◆ unflattenMark()

void RexxMemory::unflattenMark ( RexxObject markObject,
RexxObject **  pMarkObject 
)
inlineprivate

Definition at line 354 of file RexxMemory.hpp.

References envelope, and RexxVirtualBase::unflatten().

Referenced by markGeneral().

◆ verboseMessage() [1/4]

◆ verboseMessage() [2/4]

void RexxMemory::verboseMessage ( const char *  message,
const char *  sub1,
size_t  sub2 
)
inline

Definition at line 258 of file RexxMemory.hpp.

References logVerboseOutput().

◆ verboseMessage() [3/4]

void RexxMemory::verboseMessage ( const char *  message,
size_t  sub1 
)
inline

Definition at line 246 of file RexxMemory.hpp.

References logVerboseOutput().

◆ verboseMessage() [4/4]

void RexxMemory::verboseMessage ( const char *  message,
size_t  sub1,
size_t  sub2 
)
inline

Definition at line 252 of file RexxMemory.hpp.

References logVerboseOutput().

Member Data Documentation

◆ allocations

size_t RexxMemory::allocations
private

Definition at line 414 of file RexxMemory.hpp.

Referenced by collect(), initialize(), markObjectsMain(), and newObject().

◆ checkSetOK

bool RexxMemory::checkSetOK
private

Definition at line 403 of file RexxMemory.hpp.

Referenced by checkSetOref(), disableOrefChecks(), and enableOrefChecks().

◆ collections

size_t RexxMemory::collections
private

Definition at line 415 of file RexxMemory.hpp.

Referenced by collect(), and initialize().

◆ commonRetrievers

RexxDirectory * RexxMemory::commonRetrievers = OREF_NULL
static

Definition at line 311 of file RexxMemory.hpp.

◆ currentPool

MemorySegmentPool* RexxMemory::currentPool
private

◆ dumpEnable

bool RexxMemory::dumpEnable
private

◆ envelope

RexxEnvelope* RexxMemory::envelope
private

Definition at line 410 of file RexxMemory.hpp.

Referenced by live(), liveGeneral(), markGeneral(), RexxMemory(), setEnvelope(), and unflattenMark().

◆ envelopeMutex

SysMutex RexxMemory::envelopeMutex
staticprivate

Definition at line 421 of file RexxMemory.hpp.

Referenced by closeLocks(), createLocks(), and setEnvelope().

◆ environment

RexxDirectory * RexxMemory::environment = OREF_NULL
static

Definition at line 309 of file RexxMemory.hpp.

◆ exportedMethods

PCPPM RexxMemory::exportedMethods[]
static

Definition at line 302 of file RexxMemory.hpp.

◆ firstPool

MemorySegmentPool* RexxMemory::firstPool
private

Definition at line 392 of file RexxMemory.hpp.

Referenced by dump(), initialize(), RexxMemory(), and shutdown().

◆ flattenMutex

SysMutex RexxMemory::flattenMutex
staticprivate

Definition at line 419 of file RexxMemory.hpp.

Referenced by closeLocks(), createLocks(), getFlattenStack(), and returnFlattenStack().

◆ flattenStack

RexxStack* RexxMemory::flattenStack
private

Definition at line 381 of file RexxMemory.hpp.

Referenced by getFlattenStack(), and returnFlattenStack().

◆ functionsDir

RexxDirectory * RexxMemory::functionsDir = OREF_NULL
static

Definition at line 310 of file RexxMemory.hpp.

◆ globalStrings

RexxDirectory * RexxMemory::globalStrings = OREF_NULL
staticprivate

◆ image_buffer

char* RexxMemory::image_buffer
private

Definition at line 397 of file RexxMemory.hpp.

Referenced by restoreImage(), saveImage(), and saveImageMark().

◆ image_offset

size_t RexxMemory::image_offset
private

Definition at line 398 of file RexxMemory.hpp.

Referenced by saveImage(), and saveImageMark().

◆ imageStats

MemoryStats* RexxMemory::imageStats
private

Definition at line 412 of file RexxMemory.hpp.

Referenced by logObjectStats(), and saveImage().

◆ kernel

RexxDirectory * RexxMemory::kernel = OREF_NULL
static

Definition at line 312 of file RexxMemory.hpp.

◆ liveStack

RexxStack* RexxMemory::liveStack
private

◆ markReason

int RexxMemory::markReason

Definition at line 305 of file RexxMemory.hpp.

Referenced by killOrphans(), restoreImage(), and saveImage().

◆ markTable

RexxTable* RexxMemory::markTable
private

Definition at line 384 of file RexxMemory.hpp.

Referenced by initialize(), live(), liveGeneral(), setMarkTable(), and setUpMemoryTables().

◆ markWord

◆ newSpaceLargeSegments

LargeSegmentSet RexxMemory::newSpaceLargeSegments
private

◆ newSpaceNormalSegments

NormalSegmentSet RexxMemory::newSpaceNormalSegments
private

◆ objOffset

size_t RexxMemory::objOffset
private

Definition at line 407 of file RexxMemory.hpp.

Referenced by markGeneral(), restoreObjectMark(), RexxMemory(), and setObjectOffset().

◆ old2new

RexxIdentityTable* RexxMemory::old2new
private

Definition at line 387 of file RexxMemory.hpp.

Referenced by gutCheck(), live(), liveGeneral(), saveImage(), setOref(), and setUpMemoryTables().

◆ oldSpaceSegments

OldSpaceSegmentSet RexxMemory::oldSpaceSegments
private

Definition at line 394 of file RexxMemory.hpp.

Referenced by dump(), gutCheck(), initialize(), inSharedObjectStorage(), and oldObject().

◆ originalLiveStack

RexxStack* RexxMemory::originalLiveStack
private

Definition at line 411 of file RexxMemory.hpp.

Referenced by initialize(), liveStackFull(), and markObjects().

◆ orphanCheck

bool RexxMemory::orphanCheck
private

Definition at line 406 of file RexxMemory.hpp.

Referenced by markGeneral(), markObjects(), RexxMemory(), and setOrphanCheck().

◆ pendingUninits

size_t RexxMemory::pendingUninits
private

Definition at line 389 of file RexxMemory.hpp.

Referenced by checkUninit(), checkUninitQueue(), and runUninits().

◆ processingUninits

bool RexxMemory::processingUninits
private

Definition at line 390 of file RexxMemory.hpp.

Referenced by checkUninitQueue(), and runUninits().

◆ protectedObjects

◆ relocation

size_t RexxMemory::relocation
private

Definition at line 399 of file RexxMemory.hpp.

Referenced by restoreImage(), and restoreMark().

◆ restoreimage

bool RexxMemory::restoreimage
private

Definition at line 402 of file RexxMemory.hpp.

Referenced by gutCheck(), markGeneral(), restoreImage(), and restoringImage().

◆ rexxPackage

PackageClass * RexxMemory::rexxPackage = OREF_NULL
static

Definition at line 314 of file RexxMemory.hpp.

Referenced by createRexxPackage(), live(), and liveGeneral().

◆ saveimage

bool RexxMemory::saveimage
private

Definition at line 401 of file RexxMemory.hpp.

Referenced by markGeneral(), saveImage(), and savingImage().

◆ saveStack

◆ saveTable

◆ system

RexxDirectory * RexxMemory::system = OREF_NULL
static

Definition at line 313 of file RexxMemory.hpp.

◆ unflattenMutex

SysMutex RexxMemory::unflattenMutex
staticprivate

Definition at line 420 of file RexxMemory.hpp.

Referenced by closeLocks(), createLocks(), and setObjectOffset().

◆ uninitTable

◆ variableCache

RexxVariable* RexxMemory::variableCache

◆ virtualFunctionTable

◆ weakReferenceList

WeakReference* RexxMemory::weakReferenceList
private

Definition at line 416 of file RexxMemory.hpp.

Referenced by addWeakReference(), checkWeakReferences(), and RexxMemory().


The documentation for this class was generated from the following files: