#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 (const char *imageTarget) |
static RexxString * | getGlobalName (const char *value) |
static void | createStrings () |
static RexxArray * | saveStrings () |
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 |
RexxVariable * | variableCache |
GlobalProtectedObject * | protectedObjects |
Public Attributes inherited from RexxInternalObject | |
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 |
static PackageClass * | rexxPackage = 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) |
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, 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 | |
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 | |
Protected Member Functions inherited from RexxVirtualBase | |
virtual | ~RexxVirtualBase () |
virtual void | baseVirtual () |
Definition at line 169 of file RexxMemory.hpp.
|
private |
Definition at line 323 of file RexxMemory.hpp.
|
inline |
Definition at line 125 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.
|
static |
Add a object to the kernel directory using the provided name.
name | The name of the new environment entry. |
value | The value added. |
Definition at line 148 of file Setup.cpp.
References getGlobalName(), and TheSystem.
Referenced by createImage().
void RexxMemory::addUninitObject | ( | RexxObject * | obj | ) |
Definition at line 616 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 729 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 1099 of file RexxMemory.cpp.
References oldObject().
Referenced by SystemInterpreter::loadImage().
|
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().
|
inlineprivate |
Definition at line 348 of file RexxMemory.hpp.
References MarkMask, and markWord.
Referenced by collect(), and saveImage().
void RexxMemory::checkAllocs | ( | ) |
|
inlineprivate |
Definition at line 345 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 2128 of file RexxMemory.cpp.
References checkSetOK, dumpObject(), RexxInternalObject::getObjectSize(), RexxBehaviour::getPrimitiveBehaviour(), SysFileSystem::getTempFileName(), inObjectStorage(), RexxInternalObject::isOldSpace(), Interpreter::logicError(), logMemoryCheck(), objectReferenceOK(), T_Behaviour, and TheBehaviourBehaviour.
void RexxMemory::checkUninit | ( | ) |
Definition at line 460 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, processingUninits, runUninits(), and verboseMessage().
Referenced by RexxActivation::run().
void RexxMemory::checkWeakReferences | ( | ) |
Definition at line 693 of file RexxMemory.cpp.
References RexxInternalObject::isObjectLive(), markWord, WeakReference::nextReferenceList, OREF_NULL, WeakReference::referentObject, and weakReferenceList.
Referenced by markObjects().
|
inline |
Definition at line 269 of file RexxMemory.hpp.
References saveStack, RexxStack::size, and RexxStack::stack.
Referenced by collectAndUninit().
|
static |
Definition at line 2318 of file RexxMemory.cpp.
References SysMutex::close(), envelopeMutex, flattenMutex, and unflattenMutex.
Referenced by Interpreter::processShutdown().
void RexxMemory::collect | ( | ) |
Definition at line 1040 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 498 of file RexxMemory.cpp.
References clearSaveStack(), collect(), runUninits(), and verboseMessage().
Referenced by lastChanceUninit(), and InterpreterInstance::terminate().
|
static |
Finalize a system class during image construction. This places the class in the Environment and also adds it to the Rexx package.
name | The class name. |
classObj | The class object. |
Definition at line 173 of file Setup.cpp.
References getGlobalName(), TheEnvironment, and TheRexxPackage.
Referenced by createImage().
|
static |
Definition at line 2371 of file RexxMemory.cpp.
References RexxClass::createInstance(), RexxInteger::createInstance(), createLocks(), memoryObject, OREF_NULL, and setUpMemoryTables().
Referenced by createImage().
|
static |
Initialize the Rexx memory environment during an image built.
imageTarget | The 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().
|
static |
Definition at line 2305 of file RexxMemory.cpp.
References SysMutex::create(), envelopeMutex, flattenMutex, and unflattenMutex.
Referenced by create(), and Interpreter::processStartup().
|
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().
|
static |
Definition at line 47 of file GlobalNames.cpp.
References globalStrings, and new_directory().
Referenced by createImage().
|
staticprivate |
Definition at line 94 of file Setup.cpp.
References RexxInternalObject::behaviour, and RexxBehaviour::define().
Referenced by createImage().
|
staticprivate |
Definition at line 124 of file Setup.cpp.
References RexxInternalObject::behaviour, RexxBehaviour::define(), and RexxMethod::setPrivate().
Referenced by createImage().
|
staticprivate |
Definition at line 108 of file Setup.cpp.
References RexxInternalObject::behaviour, RexxBehaviour::define(), and RexxMethod::setProtected().
Referenced by createImage().
|
inline |
Definition at line 267 of file RexxMemory.hpp.
References checkSetOK.
Referenced by RexxTable::addOffset(), RexxEnvelope::flattenReference(), initialize(), and saveImage().
void RexxMemory::discardHoldObject | ( | RexxInternalObject * | obj | ) |
Definition at line 1672 of file RexxMemory.cpp.
References RexxStack::push(), RexxIdentityTable::remove(), saveStack, and saveTable.
Referenced by discardHoldObject().
|
inline |
Definition at line 212 of file RexxMemory.hpp.
References RexxIdentityTable::remove(), and saveTable.
Referenced by discardObject().
RexxObject * RexxMemory::dump | ( | void | ) |
Definition at line 1833 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 2219 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 258 of file RexxMemory.cpp.
References NormalSegmentSet::dumpMemoryProfile(), LargeSegmentSet::dumpMemoryProfile(), newSpaceLargeSegments, and newSpaceNormalSegments.
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().
|
inline |
Definition at line 268 of file RexxMemory.hpp.
References checkSetOK.
Referenced by RexxTable::addOffset(), createImage(), RexxEnvelope::flattenReference(), and restore().
|
virtual |
Reimplemented from RexxVirtualBase.
Definition at line 997 of file RexxMemory.cpp.
RexxStack * RexxMemory::getFlattenStack | ( | void | ) |
Definition at line 2191 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 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().
|
inline |
Definition at line 285 of file RexxMemory.hpp.
References globalStrings.
RexxObject * RexxMemory::gutCheck | ( | void | ) |
Definition at line 1905 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 1681 of file RexxMemory.cpp.
References RexxStack::push(), and saveStack.
Referenced by holdObject(), and GlobalProtectedObject::~GlobalProtectedObject().
void RexxMemory::initialize | ( | bool | restoringImage, |
const char * | imageTarget | ||
) |
Initialize the memory object, including getting the initial memory pool allocations.
restoringImage | True 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). |
imageTarget | The 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().
|
private |
Definition at line 318 of file RexxMemory.cpp.
References RexxBehaviour::getPrimitiveBehaviour(), inSharedObjectStorage(), and T_Last_Class_Type.
Referenced by checkSetOref(), objectReferenceOK(), and orphanCheckMark().
|
private |
Definition at line 288 of file RexxMemory.cpp.
References MemorySegmentSet::isInSegmentSet(), newSpaceLargeSegments, newSpaceNormalSegments, and oldSpaceSegments.
Referenced by inObjectStorage().
bool RexxMemory::isPendingUninit | ( | RexxObject * | obj | ) |
Definition at line 633 of file RexxMemory.cpp.
References RexxIdentityTable::get(), OREF_NULL, and uninitTable.
void RexxMemory::killOrphans | ( | RexxObject * | rootObject | ) |
Definition at line 395 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 517 of file RexxMemory.cpp.
References collectAndUninit(), RexxHashTableCollection::empty(), and uninitTable.
Referenced by Interpreter::terminateInterpreter().
|
virtual |
Reimplemented from RexxVirtualBase.
Definition at line 939 of file RexxMemory.cpp.
References envelope, globalStrings, PackageManager::live(), ActivityManager::live(), SystemInterpreter::live(), Interpreter::live(), markTable, memory_mark, GlobalProtectedObject::next, old2new, GlobalProtectedObject::protectedObject, protectedObjects, rexxPackage, saveStack, saveTable, and variableCache.
|
virtual |
Reimplemented from RexxVirtualBase.
Definition at line 974 of file RexxMemory.cpp.
References envelope, globalStrings, ActivityManager::liveGeneral(), PackageManager::liveGeneral(), SystemInterpreter::liveGeneral(), Interpreter::liveGeneral(), markTable, memory_mark_general, old2new, rexxPackage, saveStack, saveTable, and variableCache.
Referenced by restoreImage().
void RexxMemory::liveStackFull | ( | ) |
Definition at line 1378 of file RexxMemory.cpp.
References RexxStack::copyEntries(), liveStack, originalLiveStack, and RexxStack::size.
Referenced by checkLiveStack().
|
inline |
Definition at line 264 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 250 of file RexxMemory.cpp.
References logMemoryCheck().
Referenced by verboseMessage().
|
virtual |
Reimplemented from RexxInternalObject.
Definition at line 1007 of file RexxMemory.cpp.
References new_proxy().
void RexxMemory::mark | ( | RexxObject * | markObject | ) |
Definition at line 1395 of file RexxMemory.cpp.
References RexxInternalObject::behaviour, RexxInternalObject::hasNoReferences(), markWord, ObjectNeedsMarking, OldSpaceBit, pushLiveStack(), and RexxInternalObject::setObjectLive().
Referenced by markObjectsMain().
void RexxMemory::markGeneral | ( | void * | obj | ) |
Definition at line 1453 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 642 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 360 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 2244 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 780 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 new_object(), and newObject().
RexxObject * RexxMemory::newObject | ( | size_t | size, |
size_t | type | ||
) |
Definition at line 1111 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 1172 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 740 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 337 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 1073 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 1586 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 347 of file RexxMemory.hpp.
References RexxStack::fastPop(), and liveStack.
Referenced by killOrphans(), markObjectsMain(), orphanCheckMark(), and saveImage().
|
inlineprivate |
Definition at line 346 of file RexxMemory.hpp.
References checkLiveStack(), RexxStack::fastPush(), and liveStack.
Referenced by killOrphans(), mark(), markObjectsMain(), orphanCheckMark(), saveImage(), and saveImageMark().
|
inline |
Definition at line 265 of file RexxMemory.hpp.
References RexxStack::push(), and saveStack.
Referenced by newObject(), and newObjects().
|
inline |
Definition at line 220 of file RexxMemory.hpp.
References dumpEnable.
RexxObject * RexxMemory::reclaim | ( | ) |
Definition at line 1028 of file RexxMemory.cpp.
|
inline |
Definition at line 213 of file RexxMemory.hpp.
References RexxSaveStack::remove(), and saveStack.
|
inline |
Definition at line 266 of file RexxMemory.hpp.
References RexxSaveStack::remove(), and saveStack.
void RexxMemory::removeUninitObject | ( | RexxObject * | obj | ) |
Definition at line 605 of file RexxMemory.cpp.
References RexxIdentityTable::remove(), and uninitTable.
Referenced by RexxInternalObject::removedUninit().
void RexxMemory::reSize | ( | RexxObject * | shrinkObj, |
size_t | requestSize | ||
) |
Definition at line 1288 of file RexxMemory.cpp.
References RexxInternalObject::getObjectSize(), DeadObject::getObjectSize(), MinimumObjectSize, roundObjectResize(), and RexxInternalObject::setObjectSize().
Referenced by RexxArray::resize().
|
static |
Definition at line 2388 of file RexxMemory.cpp.
References enableOrefChecks(), ActivityManager::init(), Interpreter::init(), IntegerEight, IntegerFive, IntegerFour, IntegerMinusOne, IntegerNine, IntegerOne, IntegerSeven, IntegerSix, IntegerThree, IntegerTwo, IntegerZero, memoryObject, new_identity_table(), new_integer(), new_text(), PackageManager::restore(), RESTORE_CLASS, RexxInternalObject::setOldSpace(), setUpMemoryTables(), and TheNullText.
Referenced by initialize().
|
private |
Definition at line 817 of file RexxMemory.cpp.
References RexxInternalObject::behaviour, RexxArray::get(), RexxBehaviour::getClassType(), RexxString::getEncoding(), RexxString::getStringData(), RexxString::getText(), RexxInternalObject::hasReferences(), image_buffer, RexxActivity::initializeThreadContext(), RexxInternalObject::isNonPrimitive(), liveGeneral(), 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_REXX_PACKAGE, saveArray_SYSTEM, saveArray_TRUE, T_Last_Exported_Class, T_String, TheClassClass, TheCommonRetrievers, TheEnvironment, TheFalseObject, TheFunctionsDirectory, TheKernel, TheNilObject, TheNullArray, TheNullPointer, TheRexxPackage, TheSystem, TheTrueObject, and virtualFunctionTable.
Referenced by initialize().
|
inlineprivate |
|
inlineprivate |
Definition at line 359 of file RexxMemory.hpp.
References markWord, objOffset, and RexxInternalObject::setObjectLive().
Referenced by markGeneral().
|
static |
Definition at line 105 of file GlobalNames.cpp.
References RexxArray::data().
Referenced by restoreImage().
|
inline |
Definition at line 218 of file RexxMemory.hpp.
References restoreimage.
Referenced by initialize(), and RexxBehaviour::liveGeneral().
void RexxMemory::returnFlattenStack | ( | void | ) |
Definition at line 2210 of file RexxMemory.cpp.
References flattenMutex, flattenStack, and SysMutex::release().
Referenced by RexxEnvelope::pack().
void RexxMemory::runUninits | ( | ) |
Definition at line 527 of file RexxMemory.cpp.
References RexxObject::classObject(), ActivityManager::currentActivity, RexxHashTableCollection::first(), RexxClass::getId(), RexxString::getStringData(), RexxInternalObject::identityHash(), RexxHashTableCollection::index(), RexxHashTableCollection::next(), OREF_NULL, pendingUninits, processingUninits, RexxIdentityTable::put(), RexxIdentityTable::remove(), RexxActivity::run(), TheFalseObject, TheTrueObject, uninitTable, RexxHashTableCollection::value(), and verboseMessage().
Referenced by checkUninitQueue(), collectAndUninit(), RexxActivity::exitCurrentThread(), RexxActivity::run(), and RexxActivity::runThread().
void RexxMemory::saveImage | ( | const char * | imageTarget | ) |
Save the memory image as part of the interpreter build.
Definition at line 1704 of file RexxMemory.cpp.
References BASEIMAGE, RexxInternalObject::behaviour, bumpMarkWord(), 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_REXX_PACKAGE, saveArray_SYSTEM, saveArray_TRUE, saveimage, saveObject(), saveStack, saveStrings(), saveTable, SAVINGIMAGE, RexxInternalObject::setInRexxPackage(), T_Last_Exported_Class, TheClassClass, TheCommonRetrievers, TheEnvironment, TheFalseObject, TheFunctionsDirectory, TheKernel, TheNilObject, TheNullArray, TheNullPointer, TheRexxPackage, TheSystem, and TheTrueObject.
Referenced by createImage().
|
private |
Definition at line 1514 of file RexxMemory.cpp.
References RexxInternalObject::behaviour, RexxBehaviour::getClassType(), RexxClass::getId(), RexxInternalObject::getObjectSize(), RexxBehaviour::getOwningClass(), RexxBehaviour::getSavedPrimitiveBehaviour(), RexxString::getStringData(), image_buffer, image_offset, RexxInternalObject::isNewSpace(), RexxBehaviour::isNonPrimitive(), RexxInternalObject::isObjectLive(), RexxBehaviour::isTransientClass(), Interpreter::logicError(), logObjectStats(), markWord, MaxImageSize, OREF_NULL, pushLiveStack(), RexxBehaviour::setNonPrimitive(), and RexxInternalObject::setObjectLive().
Referenced by markGeneral().
|
inline |
Definition at line 211 of file RexxMemory.hpp.
References RexxIdentityTable::add(), and saveTable.
Referenced by saveImage(), and saveObject().
|
static |
|
inline |
Definition at line 217 of file RexxMemory.hpp.
References saveimage.
Referenced by RexxBehaviour::liveGeneral(), ActivityManager::liveGeneral(), RexxSource::liveGeneral(), SystemInterpreter::liveGeneral(), and Interpreter::liveGeneral().
void RexxMemory::scavengeSegmentSets | ( | MemorySegmentSet * | requester, |
size_t | allocationLength | ||
) |
Definition at line 1332 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 1891 of file RexxMemory.cpp.
References dumpEnable, Error_Logical_value_method, OREF_NULL, and RexxObject::truthValue().
void RexxMemory::setEnvelope | ( | RexxEnvelope * | _envelope | ) |
Definition at line 2024 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 1989 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 2058 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().
|
inline |
Definition at line 226 of file RexxMemory.hpp.
References orphanCheck.
RexxObject * RexxMemory::setParms | ( | RexxObject * | deadSegs, |
RexxObject * | notUsed | ||
) |
Definition at line 1692 of file RexxMemory.cpp.
References OREF_NULL.
void RexxMemory::setUpMemoryTables | ( | RexxIdentityTable * | old2newTable | ) |
Definition at line 2272 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 2250 of file RexxMemory.cpp.
References currentPool, firstPool, MemorySegmentPool::freePool(), and MemorySegmentPool::nextPool().
RexxObject * RexxMemory::temporaryObject | ( | size_t | size | ) |
Definition at line 1429 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 354 of file RexxMemory.hpp.
References envelope, and RexxVirtualBase::unflatten().
Referenced by markGeneral().
|
inline |
Definition at line 240 of file RexxMemory.hpp.
References logVerboseOutput().
Referenced by MemorySegmentSet::addSegment(), MemorySegmentSet::adjustMemorySize(), checkUninitQueue(), collect(), collectAndUninit(), MemorySegmentSet::combineEmptySegments(), LargeSegmentSet::completeSweepOperation(), RexxActivity::exitCurrentThread(), LargeSegmentSet::expandSegmentSet(), markObjects(), MemorySegmentSet::mergeSegments(), RexxActivity::run(), RexxActivity::runThread(), runUninits(), NormalSegmentSet::suggestMemoryExpansion(), InterpreterInstance::terminate(), and Interpreter::terminateInterpreter().
|
inline |
Definition at line 258 of file RexxMemory.hpp.
References logVerboseOutput().
|
inline |
Definition at line 246 of file RexxMemory.hpp.
References logVerboseOutput().
|
inline |
Definition at line 252 of file RexxMemory.hpp.
References logVerboseOutput().
|
private |
Definition at line 414 of file RexxMemory.hpp.
Referenced by collect(), initialize(), markObjectsMain(), and newObject().
|
private |
Definition at line 403 of file RexxMemory.hpp.
Referenced by checkSetOref(), disableOrefChecks(), and enableOrefChecks().
|
private |
Definition at line 415 of file RexxMemory.hpp.
Referenced by collect(), and initialize().
|
static |
Definition at line 311 of file RexxMemory.hpp.
|
private |
Definition at line 393 of file RexxMemory.hpp.
Referenced by dump(), initialize(), memoryPoolAdded(), newLargeSegment(), newSegment(), RexxMemory(), and shutdown().
|
private |
Definition at line 400 of file RexxMemory.hpp.
Referenced by dump(), RexxInstructionOptions::execute(), gutCheck(), queryDump(), RexxMemory(), and setDump().
|
private |
Definition at line 410 of file RexxMemory.hpp.
Referenced by live(), liveGeneral(), markGeneral(), RexxMemory(), setEnvelope(), and unflattenMark().
|
staticprivate |
Definition at line 421 of file RexxMemory.hpp.
Referenced by closeLocks(), createLocks(), and setEnvelope().
|
static |
Definition at line 309 of file RexxMemory.hpp.
|
static |
Definition at line 302 of file RexxMemory.hpp.
|
private |
Definition at line 392 of file RexxMemory.hpp.
Referenced by dump(), initialize(), RexxMemory(), and shutdown().
|
staticprivate |
Definition at line 419 of file RexxMemory.hpp.
Referenced by closeLocks(), createLocks(), getFlattenStack(), and returnFlattenStack().
|
private |
Definition at line 381 of file RexxMemory.hpp.
Referenced by getFlattenStack(), and returnFlattenStack().
|
static |
Definition at line 310 of file RexxMemory.hpp.
|
staticprivate |
Definition at line 418 of file RexxMemory.hpp.
Referenced by createStrings(), getGlobalName(), getGlobalStrings(), initialize(), live(), liveGeneral(), and saveImage().
|
private |
Definition at line 397 of file RexxMemory.hpp.
Referenced by restoreImage(), saveImage(), and saveImageMark().
|
private |
Definition at line 398 of file RexxMemory.hpp.
Referenced by saveImage(), and saveImageMark().
|
private |
Definition at line 412 of file RexxMemory.hpp.
Referenced by logObjectStats(), and saveImage().
|
static |
Definition at line 312 of file RexxMemory.hpp.
|
private |
Definition at line 380 of file RexxMemory.hpp.
Referenced by checkLiveStack(), initialize(), liveStackFull(), markObjects(), popLiveStack(), pushLiveStack(), and setUpMemoryTables().
int RexxMemory::markReason |
Definition at line 305 of file RexxMemory.hpp.
Referenced by killOrphans(), restoreImage(), and saveImage().
|
private |
Definition at line 384 of file RexxMemory.hpp.
Referenced by initialize(), live(), liveGeneral(), setMarkTable(), and setUpMemoryTables().
size_t RexxMemory::markWord |
Definition at line 304 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 396 of file RexxMemory.hpp.
Referenced by collect(), dump(), dumpImageStats(), dumpMemoryProfile(), initialize(), inSharedObjectStorage(), newObject(), newObjects(), and scavengeSegmentSets().
|
private |
Definition at line 395 of file RexxMemory.hpp.
Referenced by collect(), dump(), dumpImageStats(), dumpMemoryProfile(), initialize(), inSharedObjectStorage(), newObject(), newObjects(), and scavengeSegmentSets().
|
private |
Definition at line 407 of file RexxMemory.hpp.
Referenced by markGeneral(), restoreObjectMark(), RexxMemory(), and setObjectOffset().
|
private |
Definition at line 387 of file RexxMemory.hpp.
Referenced by gutCheck(), live(), liveGeneral(), saveImage(), setOref(), and setUpMemoryTables().
|
private |
Definition at line 394 of file RexxMemory.hpp.
Referenced by dump(), gutCheck(), initialize(), inSharedObjectStorage(), and oldObject().
|
private |
Definition at line 411 of file RexxMemory.hpp.
Referenced by initialize(), liveStackFull(), and markObjects().
|
private |
Definition at line 406 of file RexxMemory.hpp.
Referenced by markGeneral(), markObjects(), RexxMemory(), and setOrphanCheck().
|
private |
Definition at line 389 of file RexxMemory.hpp.
Referenced by checkUninit(), checkUninitQueue(), and runUninits().
|
private |
Definition at line 390 of file RexxMemory.hpp.
Referenced by checkUninitQueue(), and runUninits().
GlobalProtectedObject* RexxMemory::protectedObjects |
Definition at line 307 of file RexxMemory.hpp.
Referenced by GlobalProtectedObject::GlobalProtectedObject(), live(), and GlobalProtectedObject::~GlobalProtectedObject().
|
private |
Definition at line 399 of file RexxMemory.hpp.
Referenced by restoreImage(), and restoreMark().
|
private |
Definition at line 402 of file RexxMemory.hpp.
Referenced by gutCheck(), markGeneral(), restoreImage(), and restoringImage().
|
static |
Definition at line 314 of file RexxMemory.hpp.
Referenced by createRexxPackage(), live(), and liveGeneral().
|
private |
Definition at line 401 of file RexxMemory.hpp.
Referenced by markGeneral(), saveImage(), and savingImage().
|
private |
Definition at line 382 of file RexxMemory.hpp.
Referenced by clearSaveStack(), discardHoldObject(), holdObject(), live(), liveGeneral(), newObject(), newObjects(), pushSaveStack(), removeHold(), removeSavedObject(), RexxMemory(), saveImage(), and setUpMemoryTables().
|
private |
Definition at line 383 of file RexxMemory.hpp.
Referenced by collect(), discardHoldObject(), discardObject(), live(), liveGeneral(), RexxMemory(), saveImage(), saveObject(), and setUpMemoryTables().
|
static |
Definition at line 313 of file RexxMemory.hpp.
|
staticprivate |
Definition at line 420 of file RexxMemory.hpp.
Referenced by closeLocks(), createLocks(), and setObjectOffset().
|
private |
Definition at line 388 of file RexxMemory.hpp.
Referenced by addUninitObject(), checkUninit(), initialize(), isPendingUninit(), lastChanceUninit(), markObjects(), removeUninitObject(), and runUninits().
RexxVariable* RexxMemory::variableCache |
Definition at line 306 of file RexxMemory.hpp.
Referenced by RexxActivation::cacheLocalVariable(), initialize(), live(), liveGeneral(), and RexxActivation::newLocalVariable().
|
static |
Definition at line 301 of file RexxMemory.hpp.
Referenced by buildVirtualFunctionTable(), RexxHashTable::newInstance(), newObject(), newObjects(), oldObject(), RexxNilObject::operator new(), RexxListTable::operator new(), RexxEnvelope::puff(), restoreImage(), and temporaryObject().
|
private |
Definition at line 416 of file RexxMemory.hpp.
Referenced by addWeakReference(), checkWeakReferences(), and RexxMemory().