#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().