#include <RexxEnvelope.hpp>
Public Attributes | |
size_t | currentOffset |
Public Attributes inherited from RexxInternalObject | |
ObjectHeader | header |
RexxBehaviour * | behaviour |
Protected Attributes | |
RexxObject * | home |
RexxObject * | receiver |
RexxIdentityTable * | duptable |
RexxIdentityTable * | savetable |
RexxSmartBuffer * | buffer |
RexxIdentityTable * | rehashtable |
RexxStack * | flattenStack |
Additional Inherited Members | |
Static Public Member Functions inherited from RexxInternalObject | |
static size_t | getObjectHeaderSize () |
Protected Member Functions inherited from RexxVirtualBase | |
virtual | ~RexxVirtualBase () |
virtual void | baseVirtual () |
Definition at line 53 of file RexxEnvelope.hpp.
RexxEnvelope::RexxEnvelope | ( | ) |
Definition at line 56 of file RexxEnvelope.cpp.
|
inline |
Definition at line 59 of file RexxEnvelope.hpp.
void RexxEnvelope::addTable | ( | RexxObject * | obj | ) |
Definition at line 433 of file RexxEnvelope.cpp.
References new_identity_table(), OREF_NULL, OrefSet, RexxIdentityTable::put(), rehashtable, and TheNilObject.
Referenced by RexxDirectory::unflatten(), and RexxHashTableCollection::unflatten().
void RexxEnvelope::associateObject | ( | RexxObject * | o, |
size_t | flattenOffset | ||
) |
Definition at line 421 of file RexxEnvelope.cpp.
References RexxTable::addOffset(), and duptable.
Referenced by flattenReference(), and pack().
char * RexxEnvelope::bufferStart | ( | ) |
Definition at line 413 of file RexxEnvelope.cpp.
References buffer, RexxSmartBuffer::getBuffer(), and RexxBuffer::getData().
Referenced by flattenReference(), and pack().
size_t RexxEnvelope::copyBuffer | ( | RexxObject * | obj | ) |
Definition at line 354 of file RexxEnvelope.cpp.
References RexxInternalObject::behaviour, buffer, RexxSmartBuffer::copyData(), Error_Interpretation, flattenReference(), RexxSmartBuffer::getBuffer(), RexxBuffer::getData(), RexxInternalObject::getObjectSize(), RexxBehaviour::getSavedPrimitiveBehaviour(), RexxBehaviour::isNonPrimitive(), RexxBehaviour::isTransientClass(), reportException(), and RexxInternalObject::setNewSpace().
Referenced by flattenReference(), and pack().
void RexxEnvelope::flattenReference | ( | void * | newThisVoid, |
size_t | newSelf, | ||
void * | objRefVoid | ||
) |
Definition at line 95 of file RexxEnvelope.cpp.
References associateObject(), bufferStart(), copyBuffer(), RexxMemory::disableOrefChecks(), RexxMemory::enableOrefChecks(), RexxStack::fastPush(), flattenStack, RexxInternalObject::isProxyObject(), RexxInternalObject::makeProxy(), memoryObject, RexxIdentityTable::put(), queryObj(), and savetable.
Referenced by copyBuffer().
|
inline |
Definition at line 73 of file RexxEnvelope.hpp.
References buffer.
Referenced by RexxMethod::saveMethod().
|
inline |
Definition at line 75 of file RexxEnvelope.hpp.
References currentOffset.
|
inline |
Definition at line 76 of file RexxEnvelope.hpp.
References duptable.
|
inline |
Definition at line 74 of file RexxEnvelope.hpp.
References receiver.
Referenced by RexxMethod::restore(), and RoutineClass::restore().
|
inline |
Definition at line 77 of file RexxEnvelope.hpp.
References rehashtable.
|
virtual |
Reimplemented from RexxVirtualBase.
Definition at line 63 of file RexxEnvelope.cpp.
References buffer, duptable, home, memory_mark, receiver, rehashtable, and savetable.
|
virtual |
Reimplemented from RexxVirtualBase.
Definition at line 79 of file RexxEnvelope.cpp.
References buffer, duptable, home, memory_mark_general, receiver, rehashtable, and savetable.
|
inline |
Definition at line 57 of file RexxEnvelope.hpp.
void * RexxEnvelope::operator new | ( | size_t | size | ) |
Definition at line 460 of file RexxEnvelope.cpp.
References new_object(), and T_Envelope.
RexxBuffer * RexxEnvelope::pack | ( | RexxObject * | _receiver | ) |
Definition at line 168 of file RexxEnvelope.cpp.
References associateObject(), buffer, bufferStart(), RexxHashTableCollection::contents, copyBuffer(), currentOffset, DEFAULT_ENVELOPE_BUFFER, duptable, RexxStack::fastPop(), RexxStack::fastPush(), RexxObject::flatten(), flattenStack, RexxSmartBuffer::getBuffer(), RexxSmartBuffer::getDataLength(), RexxMemory::getFlattenStack(), memoryObject, new_identity_table(), OREF_NULL, OrefSet, receiver, RexxMemory::returnFlattenStack(), savetable, RexxBufferBase::setDataLength(), RexxInternalObject::setHasNoReferences(), and TheObjectClass.
Referenced by RoutineClass::save(), and RexxMethod::saveMethod().
void RexxEnvelope::puff | ( | RexxBuffer * | sourceBuffer, |
char * | startPointer, | ||
size_t | dataLength | ||
) |
Perform an in-place unflatten operation on an object in a buffer.
sourceBuffer | The buffer containing the flattened object. |
startPointer | The starting data location in the buffer. |
dataLength | The length of the data to unflatten |
Definition at line 242 of file RexxEnvelope.cpp.
References RexxInternalObject::behaviour, RexxBehaviour::getClassType(), RexxBuffer::getData(), RexxInternalObject::getObjectSize(), RexxInternalObject::isNonPrimitive(), RexxInternalObject::isObjectLive(), RexxObject::liveGeneral(), RexxMemory::markWord, memoryObject, OREF_NULL, OrefSet, receiver, rehash(), RexxBehaviour::resolveNonPrimitiveBehaviour(), RexxBehaviour::restoreSavedPrimitiveBehaviour(), RexxMemory::setEnvelope(), RexxInternalObject::setObjectLive(), RexxMemory::setObjectOffset(), RexxInternalObject::setObjectSize(), UNFLATTENINGOBJECT, and RexxMemory::virtualFunctionTable.
Referenced by RexxMethod::restore(), and RoutineClass::restore().
size_t RexxEnvelope::queryObj | ( | RexxObject * | obj | ) |
Definition at line 345 of file RexxEnvelope.cpp.
References duptable, and RexxIdentityTable::get().
Referenced by flattenReference().
void RexxEnvelope::rehash | ( | ) |
Definition at line 393 of file RexxEnvelope.cpp.
References RexxHashTableCollection::first(), RexxHashTableCollection::index(), OREF_NULL, RexxTable::reHash(), and rehashtable.
Referenced by puff().
|
protected |
Definition at line 86 of file RexxEnvelope.hpp.
Referenced by bufferStart(), copyBuffer(), getBuffer(), live(), liveGeneral(), and pack().
size_t RexxEnvelope::currentOffset |
Definition at line 79 of file RexxEnvelope.hpp.
Referenced by getCurrentOffset(), and pack().
|
protected |
Definition at line 84 of file RexxEnvelope.hpp.
Referenced by associateObject(), getDuptable(), live(), liveGeneral(), pack(), and queryObj().
|
protected |
Definition at line 88 of file RexxEnvelope.hpp.
Referenced by flattenReference(), and pack().
|
protected |
Definition at line 82 of file RexxEnvelope.hpp.
Referenced by live(), and liveGeneral().
|
protected |
Definition at line 83 of file RexxEnvelope.hpp.
Referenced by getReceiver(), live(), liveGeneral(), pack(), and puff().
|
protected |
Definition at line 87 of file RexxEnvelope.hpp.
Referenced by addTable(), getRehashtable(), live(), liveGeneral(), and rehash().
|
protected |
Definition at line 85 of file RexxEnvelope.hpp.
Referenced by flattenReference(), live(), liveGeneral(), and pack().