ooRexx
4.2.0-source
About: ooRexx (Open Object Rexx) is a free implementation of Object Rexx. Object Rexx is an enhancement of the classic Rexx interpreter; a full-featured programming language with a human-oriented syntax.
![]() ![]() |
#include <RexxMemory.hpp>
Static Public Member Functions | |
static void | createLocks () |
static void | closeLocks () |
static void | restore () |
static void | buildVirtualFunctionTable () |
static void | create () |
static void | createImage () |
static RexxString * | getGlobalName (const char *value) |
static void | createStrings () |
static RexxArray * | saveStrings () |
static void | restoreStrings (RexxArray *stringArray) |
![]() | |
static size_t | getObjectHeaderSize () |
Public Attributes | |
size_t | markWord |
int | markReason |
RexxVariable * | variableCache |
GlobalProtectedObject * | protectedObjects |
![]() | |
ObjectHeader | header |
RexxBehaviour * | behaviour |
Static Public Attributes | |
static void * | virtualFunctionTable [] = {NULL} |
static PCPPM | exportedMethods [] |
static RexxDirectory * | environment = OREF_NULL |
static RexxDirectory * | functionsDir = OREF_NULL |
static RexxDirectory * | commonRetrievers = OREF_NULL |
static RexxDirectory * | kernel = OREF_NULL |
static RexxDirectory * | system = 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_SYSTEM, saveArray_FUNCTIONS, saveArray_COMMON_RETRIEVERS, saveArray_highest = saveArray_COMMON_RETRIEVERS } |
Private Member Functions | |
void | checkLiveStack () |
void | pushLiveStack (RexxObject *obj) |
RexxObject * | popLiveStack () |
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) |
static void | defineProtectedKernelMethod (const char *name, RexxBehaviour *behaviour, PCPPM entryPoint, size_t arguments) |
static void | definePrivateKernelMethod (const char *name, RexxBehaviour *behaviour, PCPPM entryPoint, size_t arguments) |
Private Attributes | |
RexxStack * | liveStack |
RexxStack * | flattenStack |
RexxSaveStack * | saveStack |
RexxIdentityTable * | saveTable |
RexxTable * | markTable |
RexxIdentityTable * | old2new |
RexxIdentityTable * | uninitTable |
size_t | pendingUninits |
bool | processingUninits |
MemorySegmentPool * | firstPool |
MemorySegmentPool * | currentPool |
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 |
RexxEnvelope * | envelope |
RexxStack * | originalLiveStack |
MemoryStats * | imageStats |
size_t | allocations |
size_t | collections |
WeakReference * | weakReferenceList |
Static Private Attributes | |
static RexxDirectory * | globalStrings = OREF_NULL |
static SysMutex | flattenMutex |
static SysMutex | unflattenMutex |
static SysMutex | envelopeMutex |
Additional Inherited Members | |
![]() | |
virtual | ~RexxVirtualBase () |
virtual void | baseVirtual () |
Definition at line 169 of file RexxMemory.hpp.
|
private |
Definition at line 310 of file RexxMemory.hpp.
|
inline |
Definition at line 117 of file RexxMemory.cpp.
References currentPool, dumpEnable, envelope, firstPool, markWord, objOffset, OREF_NULL, orphanCheck, roundObjectBoundary(), saveStack, saveTable, RexxInternalObject::setObjectSize(), and weakReferenceList.
|
inline |
Definition at line 176 of file RexxMemory.hpp.
void RexxMemory::addUninitObject | ( | RexxObject * | obj | ) |
Definition at line 589 of file RexxMemory.cpp.
References RexxIdentityTable::get(), OREF_NULL, RexxIdentityTable::put(), TheNilObject, and uninitTable.
Referenced by RexxInternalObject::hasUninit().
void RexxMemory::addWeakReference | ( | WeakReference * | ref | ) |
Definition at line 702 of file RexxMemory.cpp.
References WeakReference::nextReferenceList, and weakReferenceList.
Referenced by WeakReference::unflatten(), and WeakReference::WeakReference().
char * RexxMemory::allocateImageBuffer | ( | size_t | size | ) |
Definition at line 1060 of file RexxMemory.cpp.
References oldObject().
Referenced by SystemInterpreter::loadImage().
|
static |
Definition at line 169 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_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_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_RexxCode, T_RexxContext, T_RexxContextClass, T_RexxSource, T_Routine, T_RoutineClass, T_SayInstruction, T_SecurityManager, T_SelectInstruction, T_SignalInstruction, T_SmartBuffer, 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_UseInstruction, T_Variable, T_VariableDictionary, T_VariableTerm, T_WeakReference, T_WeakReferenceClass, and virtualFunctionTable.
Referenced by initialize().
|
inlineprivate |
Definition at line 334 of file RexxMemory.hpp.
References MarkMask, and markWord.
Referenced by collect(), and saveImage().
void RexxMemory::checkAllocs | ( | ) |
|
inlineprivate |
Definition at line 331 of file RexxMemory.hpp.
References RexxStack::checkRoom(), liveStack, and liveStackFull().
Referenced by pushLiveStack().
RexxObject * RexxMemory::checkSetOref | ( | RexxObject * | setter, |
RexxObject ** | index, | ||
RexxObject * | value, | ||
const char * | fileName, | ||
int | lineNum | ||
) |
Definition at line 2066 of file RexxMemory.cpp.
References checkSetOK, dumpObject(), RexxInternalObject::getObjectSize(), RexxBehaviour::getPrimitiveBehaviour(), SysFileSystem::getTempFileName(), inObjectStorage(), RexxInternalObject::isOldSpace(), Interpreter::logicError(), logMemoryCheck(), objectReferenceOK(), setOref(), T_Behaviour, and TheBehaviourBehaviour.
void RexxMemory::checkUninit | ( | ) |
Definition at line 441 of file RexxMemory.cpp.
References RexxHashTableCollection::first(), RexxHashTableCollection::index(), RexxInternalObject::isObjectDead(), markWord, RexxHashTableCollection::next(), OREF_NULL, pendingUninits, RexxTable::replace(), TheTrueObject, and uninitTable.
Referenced by markObjects().
|
inline |
Definition at line 200 of file RexxMemory.hpp.
References pendingUninits, and runUninits().
Referenced by RexxActivation::run().
void RexxMemory::checkWeakReferences | ( | ) |
Definition at line 666 of file RexxMemory.cpp.
References RexxInternalObject::isObjectLive(), markWord, WeakReference::nextReferenceList, OREF_NULL, WeakReference::referentObject, and weakReferenceList.
Referenced by markObjects().
|
inline |
Definition at line 260 of file RexxMemory.hpp.
References saveStack, RexxStack::size, and RexxStack::stack.
Referenced by collectAndUninit().
|
static |
Definition at line 2256 of file RexxMemory.cpp.
References SysMutex::close(), envelopeMutex, flattenMutex, and unflattenMutex.
Referenced by Interpreter::processShutdown().
void RexxMemory::collect | ( | ) |
Definition at line 1001 of file RexxMemory.cpp.
References allocations, bumpMarkWord(), collections, RexxHashTableCollection::items(), markObjects(), newSpaceLargeSegments, newSpaceNormalSegments, saveTable, MemorySegmentSet::sweep(), and verboseMessage().
Referenced by collectAndUninit(), LargeSegmentSet::expandOrCollect(), NormalSegmentSet::handleAllocationFailure(), and reclaim().
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 479 of file RexxMemory.cpp.
References clearSaveStack(), collect(), and runUninits().
Referenced by lastChanceUninit(), and InterpreterInstance::terminate().
|
static |
Definition at line 2300 of file RexxMemory.cpp.
References RexxClass::createInstance(), RexxInteger::createInstance(), createLocks(), memoryObject, OREF_NULL, and setUpMemoryTables().
Referenced by createImage().
|
static |
Definition at line 132 of file Setup.cpp.
References A_COUNT, RexxString::abbrev(), RexxInteger::abs(), RexxString::abs(), RexxNumberString::abs(), PackageClass::addClass(), PackageClass::addPackage(), PackageClass::addPublicClass(), PackageClass::addPublicRoutine(), PackageClass::addRoutine(), RexxHashTableCollection::allAt(), RexxRelation::allIndex(), RexxQueue::allIndexes(), RexxList::allIndexes(), RexxDirectory::allIndexes(), RexxHashTableCollection::allIndexes(), RexxStem::allIndexes(), RexxArray::allIndexes(), RexxList::allItems(), RexxDirectory::allItems(), RexxHashTableCollection::allItems(), RexxStem::allItems(), RexxArray::allItems(), RexxInteger::andOp(), RexxString::andOp(), RexxNumberString::andOp(), RexxQueue::append(), RexxMutableBuffer::append(), RexxList::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(), RexxMutableBuffer::caselessChangeStr(), RexxString::caselessChangeStr(), RexxString::caselessCompare(), RexxString::caselessCompareToRexx(), RexxMutableBuffer::caselessCountStrRexx(), RexxString::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(), RexxMutableBuffer::changeStr(), RexxString::changeStr(), CHAR_ABBREV, CHAR_ABS, CHAR_ACTIVATE, CHAR_ADDCLASS, CHAR_ADDPACKAGE, CHAR_ADDPUBLICCLASS, CHAR_ADDPUBLICROUTINE, CHAR_ADDROUTINE, CHAR_ALLAT, CHAR_ALLINDEX, CHAR_ALLINDEXES, CHAR_ALLITEMS, CHAR_AND, CHAR_APPEND, CHAR_ARGS, CHAR_ARGUMENTS, CHAR_ARRAY, CHAR_AT, CHAR_AVAILABLE, CHAR_B2X, CHAR_BACKSLASH, CHAR_BACKSLASH_EQUAL, CHAR_BACKSLASH_GREATERTHAN, CHAR_BACKSLASH_LESSTHAN, CHAR_BASECLASS, CHAR_BITAND, CHAR_BITOR, CHAR_BITXOR, CHAR_BLANK, CHAR_BRACKETS, CHAR_BRACKETSEQUAL, CHAR_BUFFER, CHAR_C2D, CHAR_C2X, CHAR_CALL, CHAR_CALLWITH, CHAR_CASELESSABBREV, CHAR_CASELESSCHANGESTR, CHAR_CASELESSCOMPARE, CHAR_CASELESSCOMPARETO, CHAR_CASELESSCOUNTSTR, CHAR_CASELESSEQUALS, CHAR_CASELESSLASTPOS, CHAR_CASELESSMATCH, CHAR_CASELESSMATCHCHAR, CHAR_CASELESSPOS, CHAR_CASELESSWORDPOS, CHAR_CENTER, CHAR_CENTRE, CHAR_CHANGESTR, CHAR_CLASS, CHAR_CLASSES, CHAR_COMMON_RETRIEVERS, CHAR_COMPARABLE, CHAR_COMPARE, CHAR_COMPARETO, CHAR_COMPLETED, CHAR_CONCATENATE, CHAR_CONDITION, CHAR_COPIES, CHAR_COPY, CHAR_COUNTSTR, CHAR_D2C, CHAR_D2X, CHAR_DATATYPE, CHAR_DECODEBASE64, CHAR_DEFAULTNAME, CHAR_DEFINE, CHAR_DEFINE_METHODS, CHAR_DEFINEDMETHODS, CHAR_DELETE, CHAR_DELSTR, CHAR_DELWORD, CHAR_DIGITS, CHAR_DIMENSION, CHAR_DIRECTORY, CHAR_DIVIDE, CHAR_EMPTY, CHAR_ENCODEBASE64, CHAR_ENHANCED, CHAR_ENTRY, CHAR_ENVIRONMENT, CHAR_EQUAL, CHAR_EQUALS, CHAR_ERRORCONDITION, CHAR_EXECUTABLE, CHAR_FALSE, CHAR_FINDCLASS, CHAR_FINDROUTINE, CHAR_FIRST, CHAR_FIRSTITEM, CHAR_FORM, CHAR_FORMAT, CHAR_FUNCTIONS, CHAR_FUZZ, CHAR_GETBUFFERSIZE, CHAR_GREATERTHAN, CHAR_GREATERTHAN_EQUAL, CHAR_GREATERTHAN_LESSTHAN, CHAR_HASENTRY, CHAR_HASERROR, CHAR_HASHCODE, CHAR_HASINDEX, CHAR_HASITEM, CHAR_HASMETHOD, CHAR_ID, CHAR_IDENTITYHASH, CHAR_IDENTITYTABLE, CHAR_IMPORTEDCLASSES, CHAR_IMPORTEDPACKAGES, CHAR_IMPORTEDROUTINES, CHAR_INDEX, CHAR_INHERIT, CHAR_INIT, CHAR_INSERT, CHAR_INSTANCEMETHOD, CHAR_INSTANCEMETHODS, CHAR_INTDIV, CHAR_INTEGER, CHAR_INTERNALNAME, CHAR_ISA, CHAR_ISEMPTY, CHAR_ISGUARDED, CHAR_ISINSTANCEOF, CHAR_ISNULL, CHAR_ISPRIVATE, CHAR_ISPROTECTED, CHAR_ISSUBCLASSOF, CHAR_ITEM, CHAR_ITEMS, CHAR_KERNEL, CHAR_LAST, CHAR_LASTITEM, CHAR_LASTPOS, CHAR_LEFT, CHAR_LENGTH, CHAR_LESSTHAN, CHAR_LESSTHAN_EQUAL, CHAR_LESSTHAN_GREATERTHAN, CHAR_LIST, CHAR_LOADPACKAGE, CHAR_LOCAL, CHAR_LOWER, CHAR_MAKEARRAY, CHAR_MAKESTRING, CHAR_MAPCOLLECTION, CHAR_MATCH, CHAR_MATCHCHAR, CHAR_MESSAGE, CHAR_MESSAGENAME, CHAR_METACLASS, CHAR_METHOD, CHAR_METHODS, CHAR_MIXINCLASS, CHAR_MULTIPLY, CHAR_MUTABLEBUFFER, CHAR_NAME, CHAR_NEW, CHAR_NEWFILE, CHAR_NEXT, CHAR_NIL, CHAR_NOTIFY, CHAR_NULLARRAY, CHAR_NULLPOINTER, CHAR_NULLSTRING, CHAR_NUMBERSTRING, CHAR_OBJECT, CHAR_OBJECTNAME, CHAR_OBJECTNAMEEQUALS, CHAR_OF, CHAR_OR, CHAR_ORDEREDCOLLECTION, CHAR_ORXMAX, CHAR_ORXMIN, CHAR_OVERLAY, CHAR_PACKAGE, CHAR_PEEK, CHAR_PLUS, CHAR_POINTER, CHAR_POS, CHAR_POWER, CHAR_PREVIOUS, CHAR_PUBLICCLASSES, CHAR_PUBLICROUTINES, CHAR_PULL, CHAR_PUSH, CHAR_PUT, CHAR_QUERYMIXINCLASS, CHAR_QUEUE, CHAR_RELATION, CHAR_REMAINDER, CHAR_REMOVE, CHAR_REMOVEITEM, CHAR_REPLACEAT, CHAR_REQUEST, CHAR_RESULT, CHAR_REVERSE, CHAR_REXXCONTEXT, CHAR_RIGHT, CHAR_ROUTINE, CHAR_ROUTINES, CHAR_RUN, CHAR_SECTION, CHAR_SEND, CHAR_SETBUFFERSIZE, CHAR_SETENTRY, CHAR_SETGUARDED, CHAR_SETMETHOD, CHAR_SETPRIVATE, CHAR_SETPROTECTED, CHAR_SETSECURITYMANAGER, CHAR_SETUNGUARDED, CHAR_SHRIEKREXXDEFINED, CHAR_SIGN, CHAR_SIZE, CHAR_SORT, CHAR_SORTWITH, CHAR_SOURCE, CHAR_SOURCELINE, CHAR_SOURCESIZE, CHAR_SPACE, CHAR_STABLESORT, CHAR_STABLESORTWITH, CHAR_START, CHAR_STEM, CHAR_STRICT_BACKSLASH_EQUAL, CHAR_STRICT_BACKSLASH_GREATERTHAN, CHAR_STRICT_BACKSLASH_LESSTHAN, CHAR_STRICT_EQUAL, CHAR_STRICT_GREATERTHAN, CHAR_STRICT_GREATERTHAN_EQUAL, CHAR_STRICT_LESSTHAN, CHAR_STRICT_LESSTHAN_EQUAL, CHAR_STRING, CHAR_STRIP, CHAR_SUBCHAR, CHAR_SUBCLASS, CHAR_SUBCLASSES, CHAR_SUBSTR, CHAR_SUBTRACT, CHAR_SUBWORD, CHAR_SUPERCLASS, CHAR_SUPERCLASSES, CHAR_SUPPLIER, CHAR_SYSTEM, CHAR_TABLE, CHAR_TARGET, CHAR_TODIRECTORY, CHAR_TOSTRING, CHAR_TRANSLATE, CHAR_TRUE, CHAR_TRUNC, CHAR_UNINHERIT, CHAR_UNKNOWN, CHAR_UNSETMETHOD, CHAR_UPPER, CHAR_VALUE, CHAR_VARIABLES, CHAR_VERIFY, CHAR_VERSION, CHAR_WEAKREFERENCE, CHAR_WORD, CHAR_WORDINDEX, CHAR_WORDLENGTH, CHAR_WORDPOS, CHAR_WORDS, CHAR_X2B, CHAR_X2C, CHAR_X2D, CHAR_XOR, CLASS_CREATE, RexxInteger::classObject(), RexxNumberString::classObject(), RexxObject::classObject(), RexxList::classOf(), RexxString::compare(), RexxString::compareToRexx(), RexxMessage::completed(), RexxString::concatBlank(), RexxObject::concatBlank(), RexxString::concatRexx(), RexxObject::concatRexx(), RexxString::copies(), RexxContext::copyRexx(), RexxObject::copyRexx(), RexxMutableBuffer::countStrRexx(), RexxString::countStrRexx(), CPPM, create(), PackageClass::createInstance(), RexxSupplier::createInstance(), RexxIdentityTable::createInstance(), RexxRelation::createInstance(), RexxPointer::createInstance(), StackFrameClass::createInstance(), RexxTable::createInstance(), WeakReference::createInstance(), RexxQueue::createInstance(), RexxContext::createInstance(), RexxMessage::createInstance(), RexxDirectory::createInstance(), RoutineClass::createInstance(), RexxBuffer::createInstance(), RexxList::createInstance(), RexxMutableBuffer::createInstance(), RexxMethod::createInstance(), RexxStem::createInstance(), RexxArray::createInstance(), RexxNumberString::createInstance(), RexxString::createInstance(), RexxObject::createInstance(), Interpreter::createInterpreterInstance(), RexxActivity::createNewActivationStack(), createStrings(), ActivityManager::currentActivity, RexxInteger::d2c(), RexxNumberString::d2c(), RexxString::d2c(), RexxInteger::d2x(), RexxNumberString::d2x(), RexxString::d2x(), RexxString::dataType(), RexxString::decodeBase64(), RexxClass::defaultNameRexx(), RexxObject::defaultNameRexx(), RexxClass::defineClassMethod(), defineKernelMethod(), RexxClass::defineMethod(), RexxClass::defineMethods(), definePrivateKernelMethod(), defineProtectedKernelMethod(), RexxClass::deleteMethod(), RexxArray::deleteRexx(), RexxString::delstr(), RexxMutableBuffer::delWord(), RexxString::delWord(), PackageClass::digits(), RexxArray::dimension(), RexxInteger::divide(), RexxString::divide(), RexxNumberString::divide(), RexxDirectory::empty(), RexxHashTableCollection::empty(), RexxStem::empty(), RexxList::empty(), RexxArray::empty(), enableOrefChecks(), RexxString::encodeBase64(), RexxClass::enhanced(), RexxDirectory::entryRexx(), RexxPointer::equal(), RexxClass::equal(), RexxInteger::equal(), RexxNumberString::equal(), RexxString::equal(), RexxObject::equal(), RexxString::equals(), RexxActivity::error(), RexxMessage::errorCondition(), RexxArray::fill(), PackageClass::findClassRexx(), PackageClass::findRoutineRexx(), RexxList::firstItem(), RexxArray::firstItem(), RexxQueue::firstRexx(), RexxList::firstRexx(), RexxArray::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(), RexxArray::getDimensions(), RexxContext::getExecutable(), StackFrameClass::getExecutable(), RexxContext::getForm(), RexxContext::getFuzz(), getGlobalName(), RexxClass::getId(), PackageClass::getImportedClasses(), PackageClass::getImportedPackages(), PackageClass::getImportedRoutines(), SystemInterpreter::getInternalSystemName(), RexxContext::getLine(), StackFrameClass::getLine(), RexxClass::getMetaClass(), PackageClass::getMethods(), PackageClass::getName(), StackFrameClass::getName(), RexxContext::getName(), RexxContext::getPackage(), BaseExecutable::getPackage(), PackageClass::getPublicClasses(), PackageClass::getPublicRoutines(), RexxHashTableCollection::getRexx(), RexxArray::getRexx(), PackageClass::getRoutines(), RexxContext::getRS(), PackageClass::getSource(), PackageClass::getSourceLineRexx(), PackageClass::getSourceSize(), RexxContext::getStackFrames(), RexxClass::getSubClasses(), RexxClass::getSuperClass(), RexxClass::getSuperClasses(), SystemInterpreter::getSystemName(), SystemInterpreter::getSystemVersion(), StackFrameClass::getTarget(), StackFrameClass::getTraceLine(), StackFrameClass::getType(), RexxContext::getVariables(), Interpreter::getVersionNumber(), RexxDirectory::hasEntry(), RexxMessage::hasError(), RexxInteger::hashCode(), RexxNumberString::hashCode(), RexxObject::hashCode(), RexxQueue::hasindex(), RexxDirectory::hasIndex(), RexxList::hasIndex(), RexxStem::hasIndex(), RexxHashTableCollection::hasIndexRexx(), RexxArray::hasIndexRexx(), RexxRelation::hasItem(), RexxDirectory::hasItem(), RexxStem::hasItem(), RexxList::hasItem(), RexxArray::hasItem(), RexxHashTableCollection::hasItemRexx(), RexxObject::hasMethodRexx(), RexxObject::identityHashRexx(), RexxSupplier::index(), RexxQueue::index(), RexxStem::index(), RexxList::index(), RexxArray::index(), RexxHashTableCollection::indexRexx(), RexxDirectory::indexRexx(), RexxClass::inherit(), Interpreter::init(), ActivityManager::init(), RexxObject::init(), PackageManager::initialize(), RexxActivity::initializeThreadContext(), RexxSupplier::initRexx(), RexxQueue::insert(), RexxMutableBuffer::insert(), RexxString::insert(), RexxList::insertRexx(), RexxArray::insertRexx(), RexxObject::instanceMethodRexx(), RexxObject::instanceMethodsRexx(), RexxInteger::integerDivide(), RexxString::integerDivide(), RexxNumberString::integerDivide(), IntegerEight, IntegerFive, IntegerFour, IntegerMinusOne, IntegerNine, IntegerOne, IntegerSeven, IntegerSix, IntegerThree, IntegerTwo, IntegerZero, RexxDirectory::isEmpty(), RexxHashTableCollection::isEmpty(), RexxStem::isEmpty(), RexxList::isEmpty(), RexxArray::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(), RexxPointer::isNull(), RexxMethod::isPrivateRexx(), RexxMethod::isProtectedRexx(), RexxClass::isSubclassOf(), RexxTable::itemsRexx(), RexxDirectory::itemsRexx(), RexxList::itemsRexx(), RexxStem::itemsRexx(), RexxArray::itemsRexx(), kernel_public, RexxList::lastItem(), RexxArray::lastItem(), RexxMutableBuffer::lastPos(), RexxString::lastPosRexx(), RexxQueue::lastRexx(), RexxList::lastRexx(), RexxArray::lastRexx(), RexxString::left(), RexxMutableBuffer::lengthRexx(), RexxString::lengthRexx(), 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(), RexxString::minus(), RexxNumberString::minus(), RexxClass::mixinclass(), RexxInteger::multiply(), RexxString::multiply(), RexxNumberString::multiply(), RexxMutableBuffer::mydelete(), new_directory(), new_integer(), new_string(), RoutineClass::newFileRexx(), RexxMethod::newFileRexx(), RexxMutableBufferClass::newRexx(), RexxQueue::newRexx(), RexxRelation::newRexx(), RexxIdentityTable::newRexx(), RexxTable::newRexx(), RexxPointer::newRexx(), WeakReference::newRexx(), RexxSupplierClass::newRexx(), RexxMessage::newRexx(), RoutineClass::newRexx(), RexxContext::newRexx(), StackFrameClass::newRexx(), RexxDirectory::newRexx(), PackageClass::newRexx(), RexxBuffer::newRexx(), RexxClass::newRexx(), RexxStem::newRexx(), RexxList::newRexx(), RexxMethod::newRexx(), RexxArray::newRexx(), RexxObject::newRexx(), RexxString::newRexx(), RexxSupplier::next(), RexxQueue::next(), RexxList::next(), RexxArray::nextRexx(), RexxPointer::notEqual(), RexxClass::notEqual(), RexxInteger::notEqual(), RexxNumberString::notEqual(), RexxString::notEqual(), RexxObject::notEqual(), RexxMessage::notify(), RexxInteger::notOp(), RexxString::notOp(), RexxNumberString::notOp(), RexxObject::objectName(), RexxObject::objectNameEquals(), RexxArray::of(), RexxQueue::ofRexx(), OREF_NULL, RexxInteger::orOp(), RexxString::orOp(), RexxNumberString::orOp(), RexxMutableBuffer::overlay(), RexxString::overlay(), RexxQueue::peek(), RexxInteger::plus(), RexxString::plus(), RexxNumberString::plus(), RexxMutableBuffer::posRexx(), RexxString::posRexx(), RexxInteger::power(), RexxString::power(), RexxNumberString::power(), RexxQueue::previous(), RexxList::previous(), RexxArray::previousRexx(), RexxQueue::pullRexx(), RexxQueue::pushRexx(), RexxRelation::put(), RexxQueue::put(), RexxDirectory::put(), RexxList::put(), RexxHashTableCollection::putRexx(), RexxArray::putRexx(), RexxClass::queryMixinClass(), RexxQueue::queueRexx(), RC_OK, RexxInteger::remainder(), RexxString::remainder(), RexxNumberString::remainder(), RexxQueue::remove(), RexxList::remove(), RexxStem::remove(), RexxRelation::removeAll(), RexxDirectory::removeItem(), RexxStem::removeItem(), RexxList::removeItem(), RexxArray::removeItem(), RexxRelation::removeItemRexx(), RexxHashTableCollection::removeItemRexx(), RexxHashTableCollection::removeRexx(), RexxDirectory::removeRexx(), RexxArray::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(), RoutineClass::runProgram(), saveImage(), RexxQueue::section(), RexxList::section(), RexxArray::sectionRexx(), RexxMessage::send(), RexxObject::send(), RexxObject::sendWith(), RexxMutableBuffer::setBufferSize(), RexxDirectory::setEntry(), RexxMethod::setGuardedRexx(), setMarkTable(), RexxDirectory::setMethod(), RexxObject::setMethod(), RexxMethod::setPrivateRexx(), RexxMethod::setProtectedRexx(), RexxClass::setRexxDefined(), PackageClass::setSecurityManager(), RoutineClass::setSecurityManager(), RexxMethod::setSecurityManager(), RexxMethod::setUnguardedRexx(), RexxInteger::sign(), RexxString::sign(), RexxNumberString::Sign(), RexxArray::sizeRexx(), BaseExecutable::source(), RexxMutableBuffer::space(), RexxString::space(), RexxArray::stableSortRexx(), RexxArray::stableSortWithRexx(), RexxMessage::start(), RexxObject::start(), RexxObject::startWith(), RexxClass::strictEqual(), RexxInteger::strictEqual(), RexxNumberString::strictEqual(), RexxString::strictEqual(), RexxObject::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(), RexxMutableBuffer::subchar(), RexxString::subchar(), RexxClass::subclass(), RexxMutableBuffer::substr(), RexxString::substr(), RexxMutableBuffer::subWord(), RexxString::subWord(), RexxMutableBuffer::subWords(), RexxString::subWords(), RexxQueue::supplier(), RexxDirectory::supplier(), RexxHashTableCollection::supplier(), RexxStem::supplier(), RexxList::supplier(), RexxArray::supplier(), 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, TheNumberStringBehaviour, TheNumberStringClass, TheNumberStringClassBehaviour, TheObjectBehaviour, TheObjectClass, TheObjectClassBehaviour, ThePackageBehaviour, ThePackageClass, ThePackageClassBehaviour, ThePointerBehaviour, ThePointerClass, ThePointerClassBehaviour, TheQueueBehaviour, TheQueueClass, TheQueueClassBehaviour, TheRelationBehaviour, TheRelationClass, TheRelationClassBehaviour, TheRexxContextBehaviour, TheRexxContextClass, TheRexxContextClassBehaviour, TheRoutineBehaviour, TheRoutineClass, TheRoutineClassBehaviour, TheStackFrameBehaviour, TheStackFrameClass, TheStackFrameClassBehaviour, TheStemBehaviour, TheStemClass, TheStemClassBehaviour, TheStringBehaviour, TheStringClass, TheStringClassBehaviour, TheSupplierBehaviour, TheSupplierClass, TheSupplierClassBehaviour, TheSystem, TheTableBehaviour, TheTableClass, TheTableClassBehaviour, TheTrueObject, TheWeakReferenceBehaviour, TheWeakReferenceClass, TheWeakReferenceClassBehaviour, RexxStem::toDirectory(), RexxArray::toString(), PackageClass::trace(), RexxMutableBuffer::translate(), RexxString::translate(), RexxInteger::trunc(), RexxNumberString::trunc(), RexxString::trunc(), RexxClass::uninherit(), RexxHashTableCollection::uniqueIndexes(), RexxObject::unknownRexx(), RexxObject::unsetMethod(), RexxMutableBuffer::upper(), RexxString::upperRexx(), 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(), RexxString::xorOp(), and RexxNumberString::xorOp().
Referenced by initialize().
|
static |
Definition at line 2243 of file RexxMemory.cpp.
References SysMutex::create(), envelopeMutex, flattenMutex, and unflattenMutex.
Referenced by create(), and Interpreter::processStartup().
|
static |
Definition at line 47 of file GlobalNames.cpp.
References globalStrings, and new_directory().
Referenced by createImage().
|
staticprivate |
Definition at line 91 of file Setup.cpp.
References RexxInternalObject::behaviour, and RexxBehaviour::define().
Referenced by createImage().
|
staticprivate |
Definition at line 117 of file Setup.cpp.
References RexxInternalObject::behaviour, RexxBehaviour::define(), RexxMethod::setPrivate(), and RexxMethod::setProtected().
Referenced by createImage().
|
staticprivate |
Definition at line 103 of file Setup.cpp.
References RexxInternalObject::behaviour, RexxBehaviour::define(), and RexxMethod::setProtected().
Referenced by createImage().
|
inline |
Definition at line 258 of file RexxMemory.hpp.
References checkSetOK.
Referenced by RexxTable::addOffset(), RexxEnvelope::flattenReference(), initialize(), and saveImage().
void RexxMemory::discardHoldObject | ( | RexxInternalObject * | obj | ) |
Definition at line 1629 of file RexxMemory.cpp.
References RexxStack::push(), RexxIdentityTable::remove(), saveStack, and saveTable.
Referenced by discardHoldObject().
|
inline |
Definition at line 209 of file RexxMemory.hpp.
References RexxIdentityTable::remove(), and saveTable.
Referenced by discardObject().
RexxObject * RexxMemory::dump | ( | void | ) |
Definition at line 1771 of file RexxMemory.cpp.
References currentPool, dumpEnable, MemorySegmentSet::dumpSegments(), firstPool, RexxBehaviour::getPrimitiveBehaviour(), markWord, memoryObject, newSpaceLargeSegments, newSpaceNormalSegments, MemorySegmentPool::nextPool(), oldSpaceSegments, OREF_NULL, MemorySegmentPoolHeader::reserved, and T_Last_Exported_Class.
Referenced by RexxInstructionOptions::execute(), and gutCheck().
RexxObject * RexxMemory::dumpImageStats | ( | void | ) |
Definition at line 2157 of file RexxMemory.cpp.
References MemoryStats::clear(), MemorySegmentSet::gatherStats(), MemoryStats::largeStats, newSpaceLargeSegments, newSpaceNormalSegments, MemoryStats::normalStats, MemoryStats::printMemoryStats(), and TheNilObject.
void RexxMemory::dumpMemoryProfile | ( | ) |
Definition at line 239 of file RexxMemory.cpp.
References NormalSegmentSet::dumpMemoryProfile(), LargeSegmentSet::dumpMemoryProfile(), newSpaceLargeSegments, and newSpaceNormalSegments.
void RexxMemory::dumpObject | ( | RexxObject * | objectRef, |
FILE * | outfile | ||
) |
Definition at line 251 of file RexxMemory.cpp.
References RexxInternalObject::getObjectSize(), and logMemoryCheck().
Referenced by checkSetOref(), and orphanCheckMark().
|
inline |
Definition at line 259 of file RexxMemory.hpp.
References checkSetOK.
Referenced by RexxTable::addOffset(), createImage(), RexxEnvelope::flattenReference(), and restore().
|
virtual |
Reimplemented from RexxVirtualBase.
Definition at line 958 of file RexxMemory.cpp.
RexxStack * RexxMemory::getFlattenStack | ( | void | ) |
Definition at line 2129 of file RexxMemory.cpp.
References flattenMutex, flattenStack, LiveStackSize, SysMutex::request(), and SysMutex::requestImmediate().
Referenced by RexxEnvelope::pack().
|
static |
Add a string to the global name table.
value | The new value to add. |
Definition at line 2277 of file RexxMemory.cpp.
References RexxDirectory::at(), globalStrings, new_string(), OREF_NULL, RexxDirectory::put(), and RexxInternalObject::stringValue().
Referenced by createImage(), RexxBehaviour::define(), and saveImage().
|
inline |
Definition at line 276 of file RexxMemory.hpp.
References globalStrings.
Referenced by RexxSource::globalSetup().
RexxObject * RexxMemory::gutCheck | ( | void | ) |
Definition at line 1843 of file RexxMemory.cpp.
References RexxInternalObject::behaviour, dump(), dumpEnable, RexxHashTableCollection::first(), RexxIdentityTable::get(), RexxBehaviour::getClassType(), RexxInteger::getValue(), RexxHashTableCollection::index(), OldSpaceSegmentSet::markOldSpaceObjects(), new_identity_table(), RexxHashTableCollection::next(), old2new, oldSpaceSegments, OREF_NULL, RexxIdentityTable::remove(), and restoreimage.
RexxObject * RexxMemory::holdObject | ( | RexxInternalObject * | obj | ) |
Definition at line 1638 of file RexxMemory.cpp.
References RexxStack::push(), and saveStack.
Referenced by holdObject(), and GlobalProtectedObject::~GlobalProtectedObject().
void RexxMemory::initialize | ( | bool | restoringImage | ) |
Definition at line 160 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(), SegmentDeadSpace, RexxInternalObject::setBehaviour(), TheMemoryBehaviour, uninitTable, and variableCache.
Referenced by Interpreter::startInterpreter().
|
private |
Definition at line 299 of file RexxMemory.cpp.
References RexxBehaviour::getPrimitiveBehaviour(), inSharedObjectStorage(), and T_Last_Class_Type.
Referenced by checkSetOref(), objectReferenceOK(), and orphanCheckMark().
|
private |
Definition at line 269 of file RexxMemory.cpp.
References MemorySegmentSet::isInSegmentSet(), newSpaceLargeSegments, newSpaceNormalSegments, and oldSpaceSegments.
Referenced by inObjectStorage().
bool RexxMemory::isPendingUninit | ( | RexxObject * | obj | ) |
Definition at line 606 of file RexxMemory.cpp.
References RexxIdentityTable::get(), OREF_NULL, and uninitTable.
void RexxMemory::killOrphans | ( | RexxObject * | rootObject | ) |
Definition at line 376 of file RexxMemory.cpp.
References RexxInternalObject::behaviour, RexxInternalObject::hasReferences(), RexxObject::liveGeneral(), LIVEMARK, markReason, memory_mark_general, OREF_NULL, popLiveStack(), pushLiveStack(), and TheNilObject.
Referenced by markObjects().
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 497 of file RexxMemory.cpp.
References collectAndUninit(), RexxHashTableCollection::empty(), and uninitTable.
Referenced by Interpreter::terminateInterpreter().
|
virtual |
Reimplemented from RexxVirtualBase.
Definition at line 902 of file RexxMemory.cpp.
References envelope, globalStrings, ActivityManager::live(), PackageManager::live(), Interpreter::live(), SystemInterpreter::live(), markTable, memory_mark, GlobalProtectedObject::next, old2new, GlobalProtectedObject::protectedObject, protectedObjects, saveStack, saveTable, and variableCache.
|
virtual |
Reimplemented from RexxVirtualBase.
Definition at line 936 of file RexxMemory.cpp.
References envelope, globalStrings, ActivityManager::liveGeneral(), PackageManager::liveGeneral(), Interpreter::liveGeneral(), SystemInterpreter::liveGeneral(), markTable, memory_mark_general, old2new, saveStack, saveTable, and variableCache.
void RexxMemory::liveStackFull | ( | ) |
Definition at line 1339 of file RexxMemory.cpp.
References RexxStack::copyEntries(), liveStack, originalLiveStack, and RexxStack::size.
Referenced by checkLiveStack().
|
inline |
Definition at line 255 of file RexxMemory.hpp.
References imageStats, and MemoryStats::logObject().
Referenced by saveImageMark().
void RexxMemory::logVerboseOutput | ( | const char * | message, |
void * | sub1, | ||
void * | sub2 | ||
) |
Definition at line 231 of file RexxMemory.cpp.
References logMemoryCheck().
Referenced by verboseMessage().
|
virtual |
Reimplemented from RexxInternalObject.
Definition at line 968 of file RexxMemory.cpp.
References new_proxy().
void RexxMemory::mark | ( | RexxObject * | markObject | ) |
Definition at line 1356 of file RexxMemory.cpp.
References RexxInternalObject::behaviour, RexxInternalObject::hasNoReferences(), markWord, ObjectNeedsMarking, OldSpaceBit, pushLiveStack(), and RexxInternalObject::setObjectLive().
Referenced by markObjectsMain(), objectIsLive(), objectIsNotLive(), and MemorySegmentSet::sweep().
void RexxMemory::markGeneral | ( | void * | obj | ) |
Definition at line 1414 of file RexxMemory.cpp.
References envelope, Interpreter::logicError(), objOffset, OREF_NULL, orphanCheck, orphanCheckMark(), restoreimage, restoreMark(), restoreObjectMark(), saveimage, saveImageMark(), and unflattenMark().
void RexxMemory::markObjects | ( | void | ) |
Definition at line 615 of file RexxMemory.cpp.
References checkUninit(), checkWeakReferences(), killOrphans(), liveStack, markObjectsMain(), originalLiveStack, orphanCheck, uninitTable, and verboseMessage().
Referenced by collect().
void RexxMemory::markObjectsMain | ( | RexxObject * | rootObject | ) |
Definition at line 341 of file RexxMemory.cpp.
References allocations, RexxInternalObject::behaviour, RexxObject::live(), mark(), markWord, memory_mark, OldSpaceBit, OREF_NULL, popLiveStack(), and pushLiveStack().
Referenced by markObjects().
void RexxMemory::memoryPoolAdded | ( | MemorySegmentPool * | pool | ) |
Add a new pool to the memory set.
pool | The new pool. |
Definition at line 2182 of file RexxMemory.cpp.
References currentPool.
Referenced by MemorySegmentPool::newLargeSegment(), and MemorySegmentPool::newSegment().
MemorySegment * RexxMemory::newLargeSegment | ( | size_t | requestLength, |
size_t | minLength | ||
) |
Definition at line 753 of file RexxMemory.cpp.
References currentPool, MemorySegmentOverhead, MemorySegmentPool::newLargeSegment(), and roundSegmentBoundary().
Referenced by LargeSegmentSet::allocateSegment().
|
inline |
Definition at line 190 of file RexxMemory.hpp.
References newObject(), and T_Object.
Referenced by OldSpaceSegmentSet::allocateObject(), NormalSegmentSet::handleAllocationFailure(), LargeSegmentSet::handleAllocationFailure(), new_object(), and newObject().
RexxObject * RexxMemory::newObject | ( | size_t | size, |
size_t | type | ||
) |
Definition at line 1072 of file RexxMemory.cpp.
References NormalSegmentSet::allocateObject(), LargeSegmentSet::allocateObject(), allocations, RexxBehaviour::getPrimitiveBehaviour(), NormalSegmentSet::handleAllocationFailure(), LargeSegmentSet::handleAllocationFailure(), RexxObject::initializeNewObject(), LargeBlockThreshold, markWord, MinimumObjectSize, newSpaceLargeSegments, newSpaceNormalSegments, OREF_NULL, pushSaveStack(), roundLargeObjectAllocation(), roundObjectBoundary(), saveStack, type, and virtualFunctionTable.
RexxArray * RexxMemory::newObjects | ( | size_t | size, |
size_t | count, | ||
size_t | objectType | ||
) |
Definition at line 1133 of file RexxMemory.cpp.
References NormalSegmentSet::allocateObject(), LargeSegmentSet::allocateObject(), RexxInternalObject::clearObject(), RexxInternalObject::getObjectSize(), RexxBehaviour::getPrimitiveBehaviour(), NormalSegmentSet::handleAllocationFailure(), LargeSegmentSet::handleAllocationFailure(), RexxObject::initializeNewObject(), LargeBlockThreshold, markWord, new_array(), newSpaceLargeSegments, newSpaceNormalSegments, OREF_NULL, pushSaveStack(), RexxArray::put(), roundObjectBoundary(), saveStack, RexxInternalObject::setObjectSize(), T_Object, TheObjectBehaviour, and virtualFunctionTable.
Referenced by new_arrayOfObject(), and new_arrayOfTokens().
MemorySegment * RexxMemory::newSegment | ( | size_t | requestLength, |
size_t | minLength | ||
) |
Definition at line 713 of file RexxMemory.cpp.
References currentPool, MemorySegmentOverhead, MemorySegmentPool::newSegment(), and roundSegmentBoundary().
Referenced by MemorySegmentSet::allocateSegment(), MemorySegment::insertAfter(), MemorySegment::insertBefore(), and NormalSegmentSet::NormalSegmentSet().
|
private |
Definition at line 318 of file RexxMemory.cpp.
References RexxInternalObject::getObjectType(), RexxBehaviour::getPrimitiveBehaviour(), inObjectStorage(), T_Behaviour, TheBehaviourBehaviour, and type.
Referenced by checkSetOref(), and orphanCheckMark().
RexxObject * RexxMemory::oldObject | ( | size_t | size | ) |
Definition at line 1034 of file RexxMemory.cpp.
References OldSpaceSegmentSet::allocateObject(), RexxObject::initializeNewObject(), markWord, oldSpaceSegments, OREF_NULL, roundObjectBoundary(), T_Object, TheObjectBehaviour, and virtualFunctionTable.
Referenced by allocateImageBuffer().
|
inline |
Definition at line 178 of file RexxMemory.hpp.
|
inline |
Definition at line 179 of file RexxMemory.hpp.
|
private |
Definition at line 1543 of file RexxMemory.cpp.
References RexxInternalObject::behaviour, dumpObject(), RexxBehaviour::getClassType(), RexxString::getStringData(), SysFileSystem::getTempFileName(), RexxObject::id(), inObjectStorage(), RexxInternalObject::isNewSpace(), RexxInternalObject::isObjectLive(), Interpreter::logicError(), logMemoryCheck(), markWord, objectReferenceOK(), OREF_NULL, popLiveStack(), pushLiveStack(), RexxInternalObject::setObjectLive(), and TheNilObject.
Referenced by markGeneral().
|
inlineprivate |
Definition at line 333 of file RexxMemory.hpp.
References RexxStack::fastPop(), and liveStack.
Referenced by killOrphans(), markObjectsMain(), orphanCheckMark(), and saveImage().
|
inlineprivate |
Definition at line 332 of file RexxMemory.hpp.
References checkLiveStack(), RexxStack::fastPush(), and liveStack.
Referenced by killOrphans(), mark(), markObjectsMain(), orphanCheckMark(), saveImage(), and saveImageMark().
|
inline |
Definition at line 256 of file RexxMemory.hpp.
References RexxStack::push(), and saveStack.
Referenced by newObject(), and newObjects().
|
inline |
Definition at line 217 of file RexxMemory.hpp.
References dumpEnable.
RexxObject * RexxMemory::reclaim | ( | ) |
Definition at line 989 of file RexxMemory.cpp.
|
inline |
Definition at line 210 of file RexxMemory.hpp.
References RexxSaveStack::remove(), and saveStack.
|
inline |
Definition at line 257 of file RexxMemory.hpp.
References RexxSaveStack::remove(), and saveStack.
void RexxMemory::removeUninitObject | ( | RexxObject * | obj | ) |
Definition at line 578 of file RexxMemory.cpp.
References RexxIdentityTable::remove(), and uninitTable.
Referenced by RexxInternalObject::removedUninit().
void RexxMemory::reSize | ( | RexxObject * | shrinkObj, |
size_t | requestSize | ||
) |
Definition at line 1249 of file RexxMemory.cpp.
References DeadObject::getObjectSize(), RexxInternalObject::getObjectSize(), MinimumObjectSize, roundObjectResize(), and RexxInternalObject::setObjectSize().
Referenced by RexxArray::resize().
|
static |
Definition at line 2317 of file RexxMemory.cpp.
References enableOrefChecks(), Interpreter::init(), ActivityManager::init(), IntegerEight, IntegerFive, IntegerFour, IntegerMinusOne, IntegerNine, IntegerOne, IntegerSeven, IntegerSix, IntegerThree, IntegerTwo, IntegerZero, memoryObject, new_identity_table(), new_integer(), PackageManager::restore(), RESTORE_CLASS, RexxInternalObject::setOldSpace(), and setUpMemoryTables().
Referenced by initialize().
|
private |
Definition at line 790 of file RexxMemory.cpp.
References RexxInternalObject::behaviour, RexxArray::get(), RexxBehaviour::getClassType(), RexxInternalObject::getObjectSize(), RexxInternalObject::hasReferences(), image_buffer, RexxActivity::initializeThreadContext(), RexxInternalObject::isNonPrimitive(), SystemInterpreter::loadImage(), markReason, memoryObject, RexxBehaviour::primitiveBehaviours, relocation, PackageManager::restore(), RexxBehaviour::restore(), restoreimage, RexxBehaviour::restoreSavedPrimitiveBehaviour(), restoreStrings(), RESTORINGIMAGE, saveArray_CLASS, saveArray_COMMON_RETRIEVERS, saveArray_ENV, saveArray_FALSE, saveArray_FUNCTIONS, saveArray_KERNEL, saveArray_NAME_STRINGS, saveArray_NIL, saveArray_NULLA, saveArray_NULLPOINTER, saveArray_PACKAGES, saveArray_PBEHAV, saveArray_SYSTEM, saveArray_TRUE, T_Last_Exported_Class, TheClassClass, TheCommonRetrievers, TheEnvironment, TheFalseObject, TheFunctionsDirectory, TheKernel, TheNilObject, TheNullArray, TheNullPointer, TheSystem, TheTrueObject, and virtualFunctionTable.
Referenced by initialize().
|
inlineprivate |
|
inlineprivate |
Definition at line 345 of file RexxMemory.hpp.
References markWord, objOffset, and RexxInternalObject::setObjectLive().
Referenced by markGeneral().
|
static |
Definition at line 92 of file GlobalNames.cpp.
References RexxArray::data().
Referenced by restoreImage().
|
inline |
Definition at line 215 of file RexxMemory.hpp.
References restoreimage.
Referenced by RexxBehaviour::liveGeneral().
void RexxMemory::returnFlattenStack | ( | void | ) |
Definition at line 2148 of file RexxMemory.cpp.
References flattenMutex, flattenStack, and SysMutex::release().
Referenced by RexxEnvelope::pack().
void RexxMemory::runUninits | ( | ) |
Definition at line 507 of file RexxMemory.cpp.
References ActivityManager::currentActivity, RexxHashTableCollection::first(), RexxHashTableCollection::index(), RexxHashTableCollection::next(), OREF_NULL, pendingUninits, processingUninits, RexxIdentityTable::put(), RexxIdentityTable::remove(), RexxActivity::run(), TheFalseObject, TheTrueObject, uninitTable, and RexxHashTableCollection::value().
Referenced by checkUninitQueue(), collectAndUninit(), RexxActivity::exitCurrentThread(), RexxActivity::run(), and RexxActivity::runThread().
void RexxMemory::saveImage | ( | void | ) |
Definition at line 1657 of file RexxMemory.cpp.
References BASEIMAGE, RexxInternalObject::behaviour, bumpMarkWord(), CHAR_KERNEL, CHAR_MEMORY, MemoryStats::clear(), disableOrefChecks(), getGlobalName(), PackageManager::getImageData(), RexxBehaviour::getPrimitiveBehaviour(), globalStrings, image_buffer, image_offset, imageStats, RexxInternalObject::isNonPrimitive(), RexxObject::liveGeneral(), markReason, MaxImageSize, memory_mark_general, memoryObject, new_array(), old2new, OREF_NULL, OrefSet, popLiveStack(), MemoryStats::printSavedImageStats(), pushLiveStack(), RexxArray::put(), saveArray_CLASS, saveArray_COMMON_RETRIEVERS, saveArray_ENV, saveArray_FALSE, saveArray_FUNCTIONS, saveArray_highest, saveArray_KERNEL, saveArray_NAME_STRINGS, saveArray_NIL, saveArray_NULLA, saveArray_NULLPOINTER, saveArray_PACKAGES, saveArray_PBEHAV, saveArray_SYSTEM, saveArray_TRUE, saveimage, saveObject(), saveStack, saveStrings(), saveTable, SAVINGIMAGE, T_Last_Exported_Class, TheClassClass, TheCommonRetrievers, TheEnvironment, TheFalseObject, TheFunctionsDirectory, TheKernel, TheNilObject, TheNullArray, TheNullPointer, TheSystem, and TheTrueObject.
Referenced by createImage().
|
private |
Definition at line 1475 of file RexxMemory.cpp.
References RexxInternalObject::behaviour, RexxInternalObject::clearObjectMark(), RexxInternalObject::getObjectSize(), RexxBehaviour::getSavedPrimitiveBehaviour(), image_buffer, image_offset, RexxInternalObject::isNewSpace(), RexxBehaviour::isNonPrimitive(), RexxInternalObject::isObjectLive(), RexxBehaviour::isTransientClass(), Interpreter::logicError(), logObjectStats(), markWord, MaxImageSize, OREF_NULL, pushLiveStack(), RexxInternalObject::setNonPrimitive(), RexxInternalObject::setObjectLive(), and RexxInternalObject::setPrimitive().
Referenced by markGeneral().
|
inline |
Definition at line 208 of file RexxMemory.hpp.
References RexxIdentityTable::add(), and saveTable.
Referenced by saveImage(), and saveObject().
|
static |
|
inline |
Definition at line 214 of file RexxMemory.hpp.
References saveimage.
Referenced by ActivityManager::liveGeneral(), RexxBehaviour::liveGeneral(), Interpreter::liveGeneral(), SystemInterpreter::liveGeneral(), and RexxSource::liveGeneral().
void RexxMemory::scavengeSegmentSets | ( | MemorySegmentSet * | requester, |
size_t | allocationLength | ||
) |
Definition at line 1293 of file RexxMemory.cpp.
References MemorySegmentSet::addDeadObject(), MemorySegmentSet::addSegment(), MemorySegmentSet::donateObject(), MemorySegmentSet::donateSegment(), MemorySegmentSet::is(), newSpaceLargeSegments, newSpaceNormalSegments, and MemorySegmentSet::SET_NORMAL.
Referenced by NormalSegmentSet::handleAllocationFailure(), and LargeSegmentSet::handleAllocationFailure().
RexxObject * RexxMemory::setDump | ( | RexxObject * | selection | ) |
Definition at line 1829 of file RexxMemory.cpp.
References dumpEnable, Error_Logical_value_method, OREF_NULL, and RexxObject::truthValue().
void RexxMemory::setEnvelope | ( | RexxEnvelope * | _envelope | ) |
Definition at line 1962 of file RexxMemory.cpp.
References envelope, envelopeMutex, OREF_NULL, SysMutex::release(), SysMutex::request(), and SysMutex::requestImmediate().
Referenced by RexxEnvelope::puff().
|
inline |
void RexxMemory::setObjectOffset | ( | size_t | offset | ) |
Definition at line 1927 of file RexxMemory.cpp.
References objOffset, SysMutex::release(), SysMutex::request(), SysMutex::requestImmediate(), and unflattenMutex.
Referenced by RexxEnvelope::puff().
RexxObject * RexxMemory::setOref | ( | void * | index, |
RexxObject * | value | ||
) |
index
Definition at line 1996 of file RexxMemory.cpp.
References RexxInternalObject::behaviour, RexxInteger::decrementValue(), RexxIdentityTable::get(), RexxBehaviour::getClassType(), RexxInteger::getValue(), RexxInteger::incrementValue(), RexxInternalObject::isNewSpace(), old2new, OREF_NULL, RexxIdentityTable::put(), and RexxIdentityTable::remove().
Referenced by checkSetOref().
|
inline |
Definition at line 223 of file RexxMemory.hpp.
References orphanCheck.
RexxObject * RexxMemory::setParms | ( | RexxObject * | deadSegs, |
RexxObject * | notUsed | ||
) |
Definition at line 1649 of file RexxMemory.cpp.
References OREF_NULL.
void RexxMemory::setUpMemoryTables | ( | RexxIdentityTable * | old2newTable | ) |
Definition at line 2210 of file RexxMemory.cpp.
References RexxStack::init(), liveStack, LiveStackSize, markTable, new_identity_table(), old2new, OrefSet, RexxIdentityTable::put(), saveStack, SaveStackAllocSize, SaveStackSize, saveTable, RexxInternalObject::setBehaviour(), and TheStackBehaviour.
void RexxMemory::shutdown | ( | ) |
Definition at line 2188 of file RexxMemory.cpp.
References currentPool, firstPool, MemorySegmentPool::freePool(), and MemorySegmentPool::nextPool().
RexxObject * RexxMemory::temporaryObject | ( | size_t | size | ) |
Definition at line 1390 of file RexxMemory.cpp.
References Error_System_resources, RexxObject::initializeNewObject(), markWord, OREF_NULL, reportException(), roundObjectBoundary(), T_Object, TheObjectBehaviour, and virtualFunctionTable.
Referenced by RexxStack::operator new().
|
inlineprivate |
Definition at line 340 of file RexxMemory.hpp.
References envelope, and RexxVirtualBase::unflatten().
Referenced by markGeneral().
|
inline |
Definition at line 237 of file RexxMemory.hpp.
References logVerboseOutput().
Referenced by MemorySegmentSet::addSegment(), MemorySegmentSet::adjustMemorySize(), collect(), MemorySegmentSet::combineEmptySegments(), LargeSegmentSet::completeSweepOperation(), LargeSegmentSet::expandSegmentSet(), markObjects(), MemorySegmentSet::mergeSegments(), and NormalSegmentSet::suggestMemoryExpansion().
|
inline |
Definition at line 243 of file RexxMemory.hpp.
References logVerboseOutput().
|
inline |
Definition at line 249 of file RexxMemory.hpp.
References logVerboseOutput().
|
private |
Definition at line 400 of file RexxMemory.hpp.
Referenced by collect(), initialize(), markObjectsMain(), and newObject().
|
private |
Definition at line 389 of file RexxMemory.hpp.
Referenced by checkSetOref(), disableOrefChecks(), and enableOrefChecks().
|
private |
Definition at line 401 of file RexxMemory.hpp.
Referenced by collect(), and initialize().
|
static |
Definition at line 299 of file RexxMemory.hpp.
|
private |
Definition at line 379 of file RexxMemory.hpp.
Referenced by dump(), initialize(), memoryPoolAdded(), newLargeSegment(), newSegment(), RexxMemory(), and shutdown().
|
private |
Definition at line 386 of file RexxMemory.hpp.
Referenced by dump(), RexxInstructionOptions::execute(), gutCheck(), queryDump(), RexxMemory(), and setDump().
|
private |
Definition at line 396 of file RexxMemory.hpp.
Referenced by live(), liveGeneral(), markGeneral(), RexxMemory(), setEnvelope(), and unflattenMark().
|
staticprivate |
Definition at line 407 of file RexxMemory.hpp.
Referenced by closeLocks(), createLocks(), and setEnvelope().
|
static |
Definition at line 297 of file RexxMemory.hpp.
|
static |
Definition at line 290 of file RexxMemory.hpp.
|
private |
Definition at line 378 of file RexxMemory.hpp.
Referenced by dump(), initialize(), RexxMemory(), and shutdown().
|
staticprivate |
Definition at line 405 of file RexxMemory.hpp.
Referenced by closeLocks(), createLocks(), getFlattenStack(), and returnFlattenStack().
|
private |
Definition at line 367 of file RexxMemory.hpp.
Referenced by getFlattenStack(), and returnFlattenStack().
|
static |
Definition at line 298 of file RexxMemory.hpp.
|
staticprivate |
Definition at line 404 of file RexxMemory.hpp.
Referenced by createStrings(), getGlobalName(), getGlobalStrings(), initialize(), live(), liveGeneral(), and saveImage().
|
private |
Definition at line 383 of file RexxMemory.hpp.
Referenced by restoreImage(), saveImage(), and saveImageMark().
|
private |
Definition at line 384 of file RexxMemory.hpp.
Referenced by saveImage(), and saveImageMark().
|
private |
Definition at line 398 of file RexxMemory.hpp.
Referenced by logObjectStats(), and saveImage().
|
static |
Definition at line 300 of file RexxMemory.hpp.
|
private |
Definition at line 366 of file RexxMemory.hpp.
Referenced by checkLiveStack(), initialize(), liveStackFull(), markObjects(), popLiveStack(), pushLiveStack(), and setUpMemoryTables().
int RexxMemory::markReason |
Definition at line 293 of file RexxMemory.hpp.
Referenced by killOrphans(), restoreImage(), and saveImage().
|
private |
Definition at line 370 of file RexxMemory.hpp.
Referenced by initialize(), live(), liveGeneral(), setMarkTable(), and setUpMemoryTables().
size_t RexxMemory::markWord |
Definition at line 292 of file RexxMemory.hpp.
Referenced by bumpMarkWord(), checkUninit(), checkWeakReferences(), dump(), MemorySegment::firstDeadObject(), MemorySegment::lastDeadObject(), mark(), markObjectsMain(), RexxHashTable::newInstance(), newObject(), newObjects(), oldObject(), RexxListTable::operator new(), orphanCheckMark(), RexxEnvelope::puff(), SegmentStats::recordObject(), restoreObjectMark(), RexxMemory(), saveImageMark(), MemorySegmentSet::splitSegment(), MemorySegmentSet::sweep(), and temporaryObject().
|
private |
Definition at line 382 of file RexxMemory.hpp.
Referenced by collect(), dump(), dumpImageStats(), dumpMemoryProfile(), initialize(), inSharedObjectStorage(), newObject(), newObjects(), and scavengeSegmentSets().
|
private |
Definition at line 381 of file RexxMemory.hpp.
Referenced by collect(), dump(), dumpImageStats(), dumpMemoryProfile(), initialize(), inSharedObjectStorage(), newObject(), newObjects(), and scavengeSegmentSets().
|
private |
Definition at line 393 of file RexxMemory.hpp.
Referenced by markGeneral(), restoreObjectMark(), RexxMemory(), and setObjectOffset().
|
private |
Definition at line 373 of file RexxMemory.hpp.
Referenced by gutCheck(), live(), liveGeneral(), saveImage(), setOref(), and setUpMemoryTables().
|
private |
Definition at line 380 of file RexxMemory.hpp.
Referenced by dump(), gutCheck(), initialize(), inSharedObjectStorage(), and oldObject().
|
private |
Definition at line 397 of file RexxMemory.hpp.
Referenced by initialize(), liveStackFull(), and markObjects().
|
private |
Definition at line 392 of file RexxMemory.hpp.
Referenced by markGeneral(), markObjects(), RexxMemory(), and setOrphanCheck().
|
private |
Definition at line 375 of file RexxMemory.hpp.
Referenced by checkUninit(), checkUninitQueue(), and runUninits().
|
private |
Definition at line 376 of file RexxMemory.hpp.
Referenced by runUninits().
GlobalProtectedObject* RexxMemory::protectedObjects |
Definition at line 295 of file RexxMemory.hpp.
Referenced by GlobalProtectedObject::GlobalProtectedObject(), live(), and GlobalProtectedObject::~GlobalProtectedObject().
|
private |
Definition at line 385 of file RexxMemory.hpp.
Referenced by restoreImage(), and restoreMark().
|
private |
Definition at line 388 of file RexxMemory.hpp.
Referenced by gutCheck(), markGeneral(), restoreImage(), and restoringImage().
|
private |
Definition at line 387 of file RexxMemory.hpp.
Referenced by markGeneral(), saveImage(), and savingImage().
|
private |
Definition at line 368 of file RexxMemory.hpp.
Referenced by clearSaveStack(), discardHoldObject(), holdObject(), live(), liveGeneral(), newObject(), newObjects(), pushSaveStack(), removeHold(), removeSavedObject(), RexxMemory(), saveImage(), and setUpMemoryTables().
|
private |
Definition at line 369 of file RexxMemory.hpp.
Referenced by collect(), discardHoldObject(), discardObject(), live(), liveGeneral(), RexxMemory(), saveImage(), saveObject(), and setUpMemoryTables().
|
static |
Definition at line 301 of file RexxMemory.hpp.
|
staticprivate |
Definition at line 406 of file RexxMemory.hpp.
Referenced by closeLocks(), createLocks(), and setObjectOffset().
|
private |
Definition at line 374 of file RexxMemory.hpp.
Referenced by addUninitObject(), checkUninit(), initialize(), isPendingUninit(), lastChanceUninit(), markObjects(), removeUninitObject(), and runUninits().
RexxVariable* RexxMemory::variableCache |
Definition at line 294 of file RexxMemory.hpp.
Referenced by RexxActivation::cacheLocalVariable(), initialize(), live(), liveGeneral(), and RexxActivation::newLocalVariable().
|
static |
Definition at line 289 of file RexxMemory.hpp.
Referenced by buildVirtualFunctionTable(), RexxHashTable::newInstance(), newObject(), newObjects(), oldObject(), RexxListTable::operator new(), RexxNilObject::operator new(), RexxEnvelope::puff(), restoreImage(), and temporaryObject().
|
private |
Definition at line 402 of file RexxMemory.hpp.
Referenced by addWeakReference(), checkWeakReferences(), and RexxMemory().