StackFrameClass Class Reference

#include <StackFrameClass.hpp>

Inheritance diagram for StackFrameClass:
[legend]

Public Member Functions

void * operator new (size_t)
 
void * operator new (size_t, ProtectedObject &)
 
void * operator new (size_t size, void *ptr)
 
 StackFrameClass (const char *type, RexxString *name, BaseExecutable *p, RexxObject *target, RexxArray *arguments, RexxString *t, size_t l)
 
 StackFrameClass (RESTORETYPE restoreType)
 
void live (size_t)
 
void liveGeneral (int reason)
 
void flatten (RexxEnvelope *)
 
RexxStringgetType ()
 
RexxStringgetName ()
 
RexxObjectgetExecutable ()
 
RexxObjectgetTarget ()
 
RexxObjectgetLine ()
 
RexxStringgetTraceLine ()
 
RexxArraygetArguments ()
 
RexxSourcegetSourceObject ()
 
virtual RexxStringmakeString ()
 
virtual RexxStringstringValue ()
 
RexxObjectnewRexx (RexxObject **args, size_t argc, size_t named_argc)
 
- Public Member Functions inherited from RexxObject
void * operator new (size_t, RexxClass *)
 
void * operator new (size_t, RexxClass *, RexxObject **, size_t, size_t)
 
void * operator new (size_t size, void *objectPtr)
 
void operator delete (void *, void *)
 
void operator delete (void *)
 
void operator delete (void *, RexxClass *)
 
void operator delete (void *, RexxClass *, RexxObject **, size_t)
 
RexxObjectnewRexx (RexxObject **arguments, size_t argCount, size_t named_argCount)
 
RexxObjectnewObject ()
 
 operator RexxInternalObject * ()
 
 RexxObject ()
 
 RexxObject (RESTORETYPE restoreType)
 
void initializeNewObject (size_t size, size_t mark, void *vft, RexxBehaviour *b)
 
void initializeNewObject (size_t mark, void *vft, RexxBehaviour *b)
 
virtual ~RexxObject ()
 
virtual RexxObjectdefMethod (RexxString *, RexxMethod *, RexxString *a=OREF_NULL)
 
virtual RexxStringdefaultName ()
 
virtual RexxObjectunknown (RexxString *msg, RexxArray *args, RexxDirectory *named_args)
 
virtual RexxIntegerhasMethod (RexxString *msg)
 
bool hasUninitMethod ()
 
RexxObjectinit ()
 
void uninit ()
 
RexxObjectcopy ()
 
HashCode hash ()
 
bool truthValue (int)
 
virtual bool logicalValue (logical_t &)
 
virtual bool numberValue (wholenumber_t &result, size_t precision)
 
virtual bool numberValue (wholenumber_t &result)
 
virtual bool unsignedNumberValue (stringsize_t &result, size_t precision)
 
virtual bool unsignedNumberValue (stringsize_t &result)
 
virtual bool doubleValue (double &result)
 
RexxNumberStringnumberString ()
 
RexxIntegerintegerValue (size_t)
 
RexxStringprimitiveMakeString ()
 
void copyIntoTail (RexxCompoundTail *buffer)
 
RexxArraymakeArray ()
 
RexxStringrequestString ()
 
RexxStringrequestStringNoNOSTRING ()
 
RexxIntegerrequestInteger (size_t)
 
bool requestNumber (wholenumber_t &, size_t)
 
bool requestUnsignedNumber (stringsize_t &, size_t)
 
RexxArrayrequestArray ()
 
RexxDirectoryrequestDirectory ()
 
RexxStringrequiredString (RexxString *kind, size_t)
 
RexxStringrequiredString (RexxString *kind, const char *)
 
RexxStringrequiredString ()
 
RexxIntegerrequiredInteger (RexxString *kind, size_t, size_t)
 
wholenumber_t requiredNumber (RexxString *kind, size_t position, size_t precision=Numerics::ARGUMENT_DIGITS)
 
stringsize_t requiredPositive (RexxString *kind, size_t position, size_t precision=Numerics::ARGUMENT_DIGITS)
 
stringsize_t requiredNonNegative (RexxString *kind, size_t position, size_t precision=Numerics::ARGUMENT_DIGITS)
 
bool isEqual (RexxObject *)
 
bool isInstanceOf (RexxClass *)
 
RexxObjectisInstanceOfRexx (RexxClass *)
 
RexxMethodinstanceMethod (RexxString *)
 
RexxSupplierinstanceMethods (RexxClass *)
 
RexxMethodinstanceMethodRexx (RexxString *)
 
RexxSupplierinstanceMethodsRexx (RexxClass *)
 
RexxStringobjectName ()
 
RexxObjectobjectNameEquals (RexxObject *)
 
RexxClassclassObject ()
 
RexxObjectsetMethod (RexxString *, RexxMethod *, RexxString *a=OREF_NULL)
 
RexxObjectunsetMethod (RexxString *)
 
RexxObjectrequestRexx (RexxString *)
 
RexxMessagestart (RexxObject **, size_t, size_t)
 
RexxMessagestartWith (RexxObject *, RexxArray *, RexxObject **, size_t)
 
RexxObjectsend (RexxObject **, size_t, size_t)
 
RexxObjectsendWith (RexxObject *, RexxArray *, RexxObject **, size_t)
 
RexxMessagestartCommon (RexxObject *message, RexxObject **arguments, size_t argCount, size_t named_argCount)
 
RexxStringoref ()
 
RexxObjectpmdict ()
 
RexxObjectrun (RexxObject **, size_t, size_t)
 
bool messageSend (RexxString *, RexxObject **, size_t, size_t, ProtectedObject &, bool processUnknown=true)
 
bool messageSend (RexxString *, RexxObject **, size_t, size_t, RexxObject *, ProtectedObject &, bool processUnknown=true)
 
RexxMethodcheckPrivate (RexxMethod *)
 
void processUnknown (RexxString *, RexxObject **, size_t, size_t, ProtectedObject &)
 
void processProtectedMethod (RexxString *, RexxMethod *, RexxObject **, size_t, size_t, ProtectedObject &)
 
void sendMessage (RexxString *, RexxArray *, RexxDirectory *, ProtectedObject &)
 
void sendMessage (RexxString *message, RexxObject **args, size_t argCount, size_t named_argCount, ProtectedObject &result)
 
void sendMessage (RexxString *message, ProtectedObject &result)
 
void sendMessage (RexxString *message, RexxObject *argument1, ProtectedObject &result)
 
void sendMessage (RexxString *, RexxObject *, RexxObject *, ProtectedObject &)
 
void sendMessage (RexxString *, RexxObject *, RexxObject *, RexxObject *, ProtectedObject &)
 
void sendMessage (RexxString *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, ProtectedObject &)
 
void sendMessage (RexxString *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, ProtectedObject &)
 
RexxObjectsendMessage (RexxString *, RexxArray *, RexxDirectory *=OREF_NULL)
 
RexxObjectsendMessage (RexxString *message, RexxObject **args, size_t argCount, size_t named_argCount)
 
RexxObjectsendMessage (RexxString *message)
 
RexxObjectsendMessage (RexxString *message, RexxObject *argument1)
 
RexxObjectsendMessage (RexxString *, RexxObject *, RexxObject *)
 
RexxObjectsendMessage (RexxString *, RexxObject *, RexxObject *, RexxObject *)
 
RexxObjectsendMessage (RexxString *, RexxObject *, RexxObject *, RexxObject *, RexxObject *)
 
RexxObjectsendMessage (RexxString *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *)
 
RexxObjectdefMethods (RexxDirectory *)
 
void setObjectVariable (RexxString *, RexxObject *, RexxObject *)
 
RexxObjectgetObjectVariable (RexxString *)
 
RexxObjectgetObjectVariable (RexxString *, RexxObject *)
 
void addObjectVariables (RexxVariableDictionary *)
 
void copyObjectVariables (RexxObject *newObject)
 
RexxObjectsuperScope (RexxObject *)
 
RexxMethodsuperMethod (RexxString *, RexxObject *)
 
RexxObjectmdict ()
 
RexxObjectsetMdict (RexxObject *)
 
RexxBehaviourbehaviourObject ()
 
const char * idString ()
 
RexxStringid ()
 
RexxMethodmethodLookup (RexxString *name)
 
RexxVariableDictionarygetObjectVariables (RexxObject *)
 
void guardOn (RexxActivity *activity, RexxObject *scope)
 
void guardOff (RexxActivity *activity, RexxObject *scope)
 
RexxObjectequal (RexxObject *)
 
RexxObjectnotEqual (RexxObject *other)
 
RexxObjectstrictEqual (RexxObject *)
 
RexxObjectstrictNotEqual (RexxObject *other)
 
RexxIntegeridentityHashRexx ()
 
RexxObjecthashCode ()
 
RexxStringstringRexx ()
 
RexxStringconcatRexx (RexxObject *)
 
RexxStringconcatBlank (RexxObject *)
 
RexxObjectmakeStringRexx ()
 
RexxObjectmakeArrayRexx ()
 
RexxStringdefaultNameRexx ()
 
RexxObjectcopyRexx ()
 
RexxObjectunknownRexx (RexxString *, RexxArray *, RexxObject **, size_t)
 
RexxObjecthasMethodRexx (RexxString *)
 
void * getCSelf ()
 
void * getCSelf (RexxObject *scope)
 
bool equalValue (RexxObject *other)
 
virtual wholenumber_t compareTo (RexxObject *)
 
 koper (operator_plus) koper(operator_minus) koper(operator_multiply) koper(operator_divide) koper(operator_integerDivide) koper(operator_remainder) koper(operator_power) koper(operator_abuttal) koper(operator_concat) koper(operator_concatBlank) koper(operator_equal) koper(operator_notEqual) koper(operator_isGreaterThan) koper(operator_isBackslashGreaterThan) koper(operator_isLessThan) koper(operator_isBackslashLessThan) koper(operator_isGreaterOrEqual) koper(operator_isLessOrEqual) koper(operator_strictEqual) koper(operator_strictNotEqual) koper(operator_strictGreaterThan) koper(operator_strictBackslashGreaterThan) koper(operator_strictLessThan) koper(operator_strictBackslashLessThan) koper(operator_strictGreaterOrEqual) koper(operator_strictLessOrEqual) koper(operator_lessThanGreaterThan) koper(operator_greaterThanLessThan) koper(operator_and) koper(operator_or) koper(operator_xor) koper(operator_not) RexxVariableDictionary *objectVariables
 
- Public Member Functions inherited from RexxInternalObject
void * operator new (size_t, RexxClass *)
 
void * operator new (size_t, RexxClass *, RexxObject **, size_t, size_t)
 
void * operator new (size_t size, void *ptr)
 
void operator delete (void *)
 
void operator delete (void *p, void *ptr)
 
 RexxInternalObject ()
 
 RexxInternalObject (RESTORETYPE restoreType)
 
virtual ~RexxInternalObject ()
 
 operator RexxObject * ()
 
size_t getObjectSize ()
 
void setObjectSize (size_t s)
 
size_t getObjectDataSize ()
 
void * getObjectDataSpace ()
 
void clearObject ()
 
void clearObject (size_t l)
 
void setVirtualFunctions (void *t)
 
void setInitHeader (size_t s, size_t markword)
 
void setInitHeader (size_t markword)
 
void setObjectLive (size_t markword)
 
void setHasReferences ()
 
void setHasNoReferences ()
 
bool hasReferences ()
 
bool hasNoReferences ()
 
void setPrimitive ()
 
void setNonPrimitive ()
 
bool isPrimitive ()
 
bool isNonPrimitive ()
 
bool isObjectMarked (size_t markword)
 
void setObjectMark (size_t markword)
 
void clearObjectMark ()
 
bool isObjectLive (size_t mark)
 
bool isObjectDead (size_t mark)
 
bool isOldSpace ()
 
bool isNewSpace ()
 
void setNewSpace ()
 
void setOldSpace ()
 
void makeProxiedObject ()
 
bool isProxyObject ()
 
bool isSubClassOrEnhanced ()
 
bool isBaseClass ()
 
size_t getObjectTypeNumber ()
 
RexxBehaviourgetObjectType ()
 
bool isObjectType (RexxBehaviour *b)
 
bool isObjectType (size_t t)
 
bool isSameType (RexxInternalObject *o)
 
void setBehaviour (RexxBehaviour *b)
 
virtual RexxObjectmakeProxy (RexxEnvelope *)
 
virtual RexxObjectevaluate (RexxActivation *, RexxExpressionStack *)
 
virtual RexxObjectgetValue (RexxActivation *)
 
virtual RexxObjectgetValue (RexxVariableDictionary *)
 
virtual RexxObjectgetRealValue (RexxActivation *)
 
virtual RexxObjectgetRealValue (RexxVariableDictionary *)
 
virtual HashCode getHashValue ()
 
HashCode identityHash ()
 
void hasUninit ()
 
void removedUninit ()
 
void printObject ()
 
RexxObjectclone ()
 
- Public Member Functions inherited from RexxVirtualBase
virtual RexxObjectunflatten (RexxEnvelope *)
 

Static Public Member Functions

static void createInstance ()
 
- Static Public Member Functions inherited from RexxObject
static void decodeMessageName (RexxObject *target, RexxObject *message, RexxString *&messageName, RexxObject *&startScope)
 
static void createInstance ()
 
- Static Public Member Functions inherited from RexxInternalObject
static size_t getObjectHeaderSize ()
 

Static Public Attributes

static RexxClassclassInstance = OREF_NULL
 
- Static Public Attributes inherited from RexxObject
static PCPPM operatorMethods []
 
static RexxClassclassInstance = OREF_NULL
 

Protected Attributes

const char * type
 
RexxStringname
 
BaseExecutableexecutable
 
RexxObjecttarget
 
RexxArrayarguments
 
size_t line
 
RexxStringtraceLine
 

Additional Inherited Members

- Public Attributes inherited from RexxInternalObject
ObjectHeader header
 
RexxBehaviourbehaviour
 
- Protected Member Functions inherited from RexxVirtualBase
virtual ~RexxVirtualBase ()
 
virtual void baseVirtual ()
 

Detailed Description

Definition at line 60 of file StackFrameClass.hpp.

Constructor & Destructor Documentation

◆ StackFrameClass() [1/2]

StackFrameClass::StackFrameClass ( const char *  ty,
RexxString n,
BaseExecutable e,
RexxObject tg,
RexxArray a,
RexxString t,
size_t  l 
)

Constructor for a StackFrame object.

Parameters
aThe activation we're attached to.

Definition at line 94 of file StackFrameClass.cpp.

References arguments, executable, line, name, OREF_NULL, target, traceLine, and type.

◆ StackFrameClass() [2/2]

StackFrameClass::StackFrameClass ( RESTORETYPE  restoreType)
inline

Definition at line 67 of file StackFrameClass.hpp.

Member Function Documentation

◆ createInstance()

void StackFrameClass::createInstance ( )
static

Create initial bootstrap objects

Definition at line 53 of file StackFrameClass.cpp.

References CLASS_CREATE.

Referenced by RexxMemory::createImage().

◆ flatten()

void StackFrameClass::flatten ( RexxEnvelope envelope)
virtual

Reimplemented from RexxObject.

Definition at line 156 of file StackFrameClass.cpp.

References cleanUpFlatten, OREF_NULL, and setUpFlatten.

◆ getArguments()

RexxArray * StackFrameClass::getArguments ( )

Return an array of arguments to the current activation.

Returns
An array of arguments. Returns an empty array if no arguments.

Definition at line 246 of file StackFrameClass.cpp.

References arguments, new_array(), and OREF_NULL.

Referenced by RexxMemory::createImage().

◆ getExecutable()

RexxObject * StackFrameClass::getExecutable ( )

Return the stack frame current line position.

Returns
The current line number of the context.

Definition at line 214 of file StackFrameClass.cpp.

References executable, OREF_NULL, and TheNilObject.

Referenced by RexxMemory::createImage().

◆ getLine()

RexxObject * StackFrameClass::getLine ( )

Return the execution context current line position.

Returns
The current line number of the context.

Definition at line 228 of file StackFrameClass.cpp.

References line, new_integer(), SIZE_MAX, and TheNilObject.

Referenced by RexxMemory::createImage(), and RexxActivity::generateProgramInformation().

◆ getName()

RexxString * StackFrameClass::getName ( )

Return the name used to invoke the executable

Returns
The message or routine name (or program name, for a top-level invocation

Definition at line 191 of file StackFrameClass.cpp.

References name.

Referenced by RexxMemory::createImage().

◆ getSourceObject()

RexxSource * StackFrameClass::getSourceObject ( )

Get the source object associated with the stack frame.

Returns
The Source object instance for the stack frame.

Definition at line 264 of file StackFrameClass.cpp.

References executable, BaseExecutable::getSourceObject(), and OREF_NULL.

◆ getTarget()

RexxObject * StackFrameClass::getTarget ( )

Get the message target if this is a method call.

Returns
The target object, or .nil if this stack frame is not for a method call.

Definition at line 280 of file StackFrameClass.cpp.

References OREF_NULL, target, and TheNilObject.

Referenced by RexxMemory::createImage().

◆ getTraceLine()

RexxString * StackFrameClass::getTraceLine ( )

Return a trace line for this stack frame

Returns
The message or routine name (or program name, for a top-level invocation

Definition at line 203 of file StackFrameClass.cpp.

References traceLine.

Referenced by RexxMemory::createImage(), RexxActivity::generateProgramInformation(), makeString(), and stringValue().

◆ getType()

RexxString * StackFrameClass::getType ( )

Return the frame type used to invoke the executable

Returns
The string name of the frame type.

Definition at line 179 of file StackFrameClass.cpp.

References new_string(), and type.

Referenced by RexxMemory::createImage().

◆ live()

void StackFrameClass::live ( size_t  liveMark)
virtual

Reimplemented from RexxObject.

Definition at line 130 of file StackFrameClass.cpp.

References arguments, executable, memory_mark, name, target, and traceLine.

◆ liveGeneral()

void StackFrameClass::liveGeneral ( int  reason)
virtual

Reimplemented from RexxObject.

Definition at line 143 of file StackFrameClass.cpp.

References arguments, executable, memory_mark_general, name, target, and traceLine.

◆ makeString()

RexxString * StackFrameClass::makeString ( )
virtual

Default makestring method override

Returns
The trace line

Reimplemented from RexxObject.

Definition at line 304 of file StackFrameClass.cpp.

References getTraceLine().

◆ newRexx()

RexxObject * StackFrameClass::newRexx ( RexxObject **  args,
size_t  argc,
size_t  named_argc 
)

The Rexx accessible class NEW method. This raises an error because StackFrame objects can only be created by the internal interpreter.

Parameters
argsThe NEW args
argcThe count of arguments
Returns
Never returns.

Definition at line 122 of file StackFrameClass.cpp.

References Error_Unsupported_new_method, reportException(), and TheNilObject.

Referenced by RexxMemory::createImage().

◆ operator new() [1/3]

void* StackFrameClass::operator new ( size_t  size,
void *  ptr 
)
inline

Definition at line 65 of file StackFrameClass.hpp.

◆ operator new() [2/3]

void * StackFrameClass::operator new ( size_t  size)

Allocate a new StackFrame object

Parameters
sizeThe size of the object.
Returns
The newly allocated object.

Definition at line 66 of file StackFrameClass.cpp.

References new_object(), and T_StackFrame.

◆ operator new() [3/3]

void * StackFrameClass::operator new ( size_t  size,
ProtectedObject p 
)

Allocate a new GC-protected StackFrame object

Parameters
sizeThe size of the object.
pThe protected object
Returns
The newly allocated object.

Definition at line 81 of file StackFrameClass.cpp.

References new_object(), and T_StackFrame.

◆ stringValue()

RexxString * StackFrameClass::stringValue ( )
virtual

Default string method override

Returns
The trace line

Reimplemented from RexxObject.

Definition at line 294 of file StackFrameClass.cpp.

References getTraceLine().

Member Data Documentation

◆ arguments

RexxArray* StackFrameClass::arguments
protected

Definition at line 94 of file StackFrameClass.hpp.

Referenced by getArguments(), live(), liveGeneral(), and StackFrameClass().

◆ classInstance

RexxClass * StackFrameClass::classInstance = OREF_NULL
static

Definition at line 74 of file StackFrameClass.hpp.

◆ executable

BaseExecutable* StackFrameClass::executable
protected

◆ line

size_t StackFrameClass::line
protected

Definition at line 95 of file StackFrameClass.hpp.

Referenced by getLine(), and StackFrameClass().

◆ name

RexxString* StackFrameClass::name
protected

Definition at line 91 of file StackFrameClass.hpp.

Referenced by getName(), live(), liveGeneral(), and StackFrameClass().

◆ target

RexxObject* StackFrameClass::target
protected

Definition at line 93 of file StackFrameClass.hpp.

Referenced by getTarget(), live(), liveGeneral(), and StackFrameClass().

◆ traceLine

RexxString* StackFrameClass::traceLine
protected

Definition at line 96 of file StackFrameClass.hpp.

Referenced by getTraceLine(), live(), liveGeneral(), and StackFrameClass().

◆ type

const char* StackFrameClass::type
protected

Definition at line 90 of file StackFrameClass.hpp.

Referenced by getType(), and StackFrameClass().


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