71 #include "SystemInterpreter.hpp"
82 #define MAX_INSTRUCTIONS 100
161 void * RexxActivation::operator
new(
size_t size)
250 #ifdef VERBOSE_ACTIVATION
251 printf(
"activation for a method invocation: externalTraceDepth=%zx, externalTraceOption=%zx, externalTraceFlags=%zx\n", this->
settings.
externalTraceDepth, this->settings.externalTraceOption, this->settings.externalTraceFlags);
252 printf(
" : traceOption=%zx, flags=%zx\n", this->
settings.
traceOption, this->settings.flags);
254 const char *methodNameStr = methodName ? methodName->
getStringData() :
"<NULL>";
256 const char *scopeStr =
scope ?
scope->getStringData() :
"<NULL>";
257 printf(
" : method=%s, scope=%s\n", methodNameStr, scopeStr);
359 #ifdef VERBOSE_ACTIVATION
360 printf(
"activation for an internal level call: externalTraceDepth=%zx, externalTraceOption=%zx, externalTraceFlags=%zx\n", this->
settings.
externalTraceDepth, this->settings.externalTraceOption, this->settings.externalTraceFlags);
361 printf(
" : traceOption=%zx, flags=%zx\n", this->
settings.
traceOption, this->settings.flags);
453 #ifdef VERBOSE_ACTIVATION
454 printf(
"activation for a toplevel program or an external call: externalTraceDepth=%zx, externalTraceOption=%zx, externalTraceFlags=%zx\n", this->
settings.
externalTraceDepth, this->settings.externalTraceOption, this->settings.externalTraceFlags);
455 printf(
" : traceOption=%zx, flags=%zx\n", this->
settings.
traceOption, this->settings.flags);
529 size_t instructionCount;
535 bool traceEntryDone =
false;
541 if (!this->
code->
isOldSpace() && this->activity->isClauseExitUsed())
590 traceEntryDone =
true;
666 instructionCount = 0;
684 instructionCount = 0;
691 nextInst->
execute(
this, localStack);
699 nextInst = this->
next;
921 char traceOption = 0;
1234 this->
result = resultObj;
1262 this->
result = resultObj;
1411 for (
size_t i = 0; i < count; i++)
1428 for (
size_t i = 0; i < count; i++)
1430 variables[i]->
expose(
this, &
stack, object_variables);
1441 size_t _named_argcount,
1467 target->
messageSend(message, _arguments, _argcount, _named_argcount, r,
true,
false);
1472 target->
messageSend(message, _arguments, _argcount, _named_argcount, superClass, r,
true,
false);
1497 target->
messageSend(message, _arguments, _argcount, _named_argcount, r,
true,
false);
1502 target->
messageSend(message, _arguments, _argcount, _named_argcount, superClass, r,
true,
false);
1527 this->
result = resultObj;
1718 this->
raise(condition, rc, description, additional, resultObj, conditionobj);
1739 this->
parent->
raiseExit(condition, rc, description, additional, resultObj, conditionobj);
1762 condition = (
RexxString *)conditionobj->
at(OREF_CONDITION);
1768 resultObj = conditionobj->
at(OREF_RESULT);
1774 p_conditionobj = conditionobj;
1776 conditionobj->
put(condition, OREF_CONDITION);
1778 conditionobj->
put(OREF_NULLSTRING, OREF_DESCRIPTION);
1785 conditionobj->
put(rc, OREF_RC);
1789 conditionobj->
put(description, OREF_DESCRIPTION);
1793 conditionobj->
put(additional, OREF_ADDITIONAL);
1797 conditionobj->
put(resultObj, OREF_RESULT);
1825 bool trapped =
false;
1829 trapped = _sender->
trap(condition, conditionobj);
1833 if (!trapped && condition->
strCompare(CHAR_HALT))
1928 *fullName = qualifiedName;
1944 streamTable->
put(stream, qualifiedName);
1950 stream = streamClass->
sendMessage(OREF_NEW, name);
1955 streamTable->
put(stream, qualifiedName);
2017 this->
next = target;
2332 traphandler->
put(OREF_DELAY, 2);
2348 traphandler->
put(OREF_ON, 2);
2372 return activation->
trap(condition, exception_object);
2386 bool handled =
false;
2450 instruction = OREF_SIGNAL;
2453 exception_object->
put(instruction, OREF_INSTRUCTION);
2511 variable->
set(value);
2521 return defaultValue;
2534 if (source_condition_queue !=
OREF_NULL)
2547 size_t items = source_condition_queue->
getSize();
2717 else if (name->
strCompare(
"ADDWAITINGACTIVITYCOUNTER"))
2721 else if (name->
strCompare(
"RELINQUISHCOUNTER"))
2725 else if (name->
strCompare(
"REQUESTACCESSCOUNTER"))
2729 else if (name->
strCompare(
"GETAPIMANAGERCOUNTER"))
2846 unsigned short position;
2959 size_t _named_argcount,
3007 macroImage.
strptr = NULL;
3020 if (macroImage.
strptr != NULL)
3025 return macroRoutine;
3147 return newActivation->
run(
receiver, name,
OREF_NULL, _arguments, _argcount, _named_argcount, target, returnObject);
3279 #define DEFAULT_MIN 0
3280 #define DEFAULT_MAX 999
3281 #define MAX_DIFFERENCE 999999999
3307 for (
size_t i = 0; i < 13; i++)
3364 if (maximum < minimum)
3377 if (minimum != maximum)
3381 for (i = 0; i <
sizeof(
uint64_t) * 8; i++)
3420 #define TRACE_OVERHEAD 15
3424 #define INSTRUCTION_OVERHEAD 11
3425 #define LINENUMBER 6
3426 #define PREFIX_OFFSET (LINENUMBER + 1)
3427 #define PREFIX_LENGTH 3
3428 #define INDENT_SPACING 2
3430 #define QUOTES_OVERHEAD 2
3505 buffer->
putChar(outlength - 1,
'\"');
3545 outLength += tagPrefix == NULL ? 0 : strlen(tagPrefix);
3547 if (quoteValue ==
false) outLength -= 2;
3563 buffer->
putChar(dataOffset,
'\"');
3567 if (tagPrefix != NULL)
3570 buffer->
put(dataOffset, tagPrefix, prefixLength);
3571 dataOffset += prefixLength;
3575 buffer->
put(dataOffset, tag);
3581 buffer->
putChar(dataOffset,
'\"');
3586 buffer->
put(dataOffset, marker, strlen(marker));
3587 dataOffset += strlen(marker);
3592 buffer->
putChar(dataOffset,
'\"');
3597 buffer->
put(dataOffset, stringVal);
3603 buffer->
putChar(dataOffset,
'\"');
3655 buffer->
putChar(dataOffset,
'\"');
3659 buffer->
put(dataOffset, tag, strlen(tag));
3660 dataOffset += strlen(tag);
3663 buffer->
putChar(dataOffset,
'\"');
3671 buffer->
putChar(dataOffset,
'\"');
3675 buffer->
put(dataOffset, stringVal);
3679 buffer->
putChar(dataOffset,
'\"');
3741 if (quoteValue ==
false) outLength -= 2;
3757 buffer->
put(dataOffset, stemName);
3765 buffer->
put(dataOffset, marker, strlen(marker));
3766 dataOffset += strlen(marker);
3771 buffer->
putChar(dataOffset,
'\"');
3776 buffer->
put(dataOffset, stringVal);
3782 buffer->
putChar(dataOffset,
'\"');
3815 buffer->
putChar(outlength - 1,
'\"');
3931 const char *colon = strchr(option,
':');
3941 size_t depth = (colon == NULL) ?
SIZE_MAX : atoi(colon+1);
4073 if (currentInst != this->
next)
4132 bool instruction_traced;
4139 instruction_traced =
true;
4143 instruction_traced =
false;
4152 handler->
call(
activity,
this, address, commandString, commandResult, condition);
4166 bool failureCondition =
false;
4178 temp = conditionObj->
at(OREF_RESULT);
4181 conditionObj->
put(temp, OREF_RC);
4192 if (conditionName->
strCompare(CHAR_FAILURENAME))
4195 conditionObj->
put(temp, OREF_RC);
4198 failureCondition =
true;
4205 conditionObj->
put(temp, OREF_RC);
4232 instruction_traced =
true;
4237 if (instruction_traced && rc->
numberValue(rcValue) && rcValue != 0)
4261 if (failureCondition)
4264 conditionObj->
put(OREF_ERRORNAME, OREF_CONDITION);
4273 if (instruction_traced &&
inDebug())
4453 return novalue_handler->
sendMessage(OREF_NOVALUE, name);
4738 size_t count = positionalArguments->
size();
4741 size_t namedCount = 0;
void reportNovalue(RexxString *description)
void reportException(wholenumber_t error)
RexxArray * new_array(size_t s)
RexxDirectory * new_directory()
RexxInteger * new_integer(wholenumber_t v)
static ConcurrencyInfosCollectorInitializer initializer
static ActivationSettings activationSettingsTemplate
void GetConcurrencyInfos(ConcurrencyInfos &infos)
#define INSTRUCTION_OVERHEAD
static const char * trace_prefix_table[]
#define RETURN_STATUS_NORMAL
#define RETURN_STATUS_ERROR
#define RETURN_STATUS_FAILURE
uint64_t RANDOMIZE(uint64_t seed)
@ TRACE_PREFIX_INVOCATION
#define MAX_TRACEBACK_INDENT
#define TheFunctionsDirectory
#define Error_Incorrect_call_random
#define Error_Execution_reply
#define Error_Execution_reply_return
#define Message_Translations_sourceless_method_invocation
#define Message_Translations_debug_prompt
#define Message_Translations_sourceless_routine_invocation
#define Message_Translations_sourceless_program_invocation
#define Message_Translations_method_invocation
#define Error_Program_interrupted_condition
#define Error_Incorrect_call_random_range
#define Error_Invalid_leave_leavevar
#define Error_Invalid_trace_trace
#define Message_Translations_routine_invocation
#define Error_Unexpected_procedure_call
#define Error_Label_not_found_name
#define Error_Incorrect_call_nonnegative
#define Error_Invalid_leave_iteratevar
#define Error_Invalid_leave_iterate
#define Error_Routine_not_found_name
#define Error_Invalid_leave_leave
#define Error_Execution_reply_exit
#define Error_Invalid_trace_debug
#define Error_Invalid_leave_iterate_name
RexxReturnCode REXXENTRY RexxResolveMacroFunction(const char *, PRXSTRING)
#define memory_mark(oref)
RexxObject * new_object(size_t s)
#define memory_mark_general(oref)
const size_t TRACE_DEBUG_MASK
const size_t TRACE_RESULTS
#define FRAME_INTERNAL_CALL
RexxString * raw_string(stringsize_t l)
RexxString * new_string(const char *s, stringsize_t l)
#define KEYWORD_PROCEDURE
size_t externalTraceOption
RexxObject ** parent_arglist
RexxLocalVariables local_variables
size_t parent_named_argcount
NumericSettings numericSettings
RexxArray * parent_arguments
RexxString * alternate_env
RexxVariableDictionary * object_variables
bool propagateNumericSettings
SecurityManager * securityManager
RexxDirectory * conditionObj
size_t externalTraceDepth
size_t externalTraceFlags
RexxString * halt_description
static wholenumber_t addWaitingActivityCounter()
static RexxActivation * newActivation(RexxActivity *activity, RexxActivation *parent, RoutineClass *routine, RexxCode *code, RexxString *calltype, RexxString *environment, int context)
static wholenumber_t yieldCounter()
static RexxActivity *volatile currentActivity
static wholenumber_t relinquishCounter()
PackageClass * getPackage()
RexxSource * getSourceObject()
void call(RexxActivity *activity, RexxActivation *activation, RexxString *address, RexxString *command, ProtectedObject &rc, ProtectedObject &condition)
ConcurrencyInfosCollectorInitializer()
static bool hasTimeSliceElapsed()
void setupProgram(RexxActivation *activation)
RexxString * getDefaultEnvironment()
static LibraryPackage * getLibrary(RexxString *name)
RexxActivationBase * previous
virtual bool trap(RexxString *, RexxDirectory *)
virtual bool isRexxContext()
RexxObject * getExecutableObject()
BaseExecutable * executable
RexxActivationBase * getPreviousStackFrame()
BaseExecutable * getExecutable()
virtual bool isForwarded()
RexxQueue * handler_queue
RexxList * environmentList
RexxString * formatTrace(RexxInstruction *, RexxSource *)
RexxObject * externalCall(RexxString *, RexxObject **, size_t, size_t, RexxString *, ProtectedObject &)
RexxSource * getSourceObject()
RexxObject * internalCall(RexxString *, RexxInstruction *, RexxObject **, size_t, size_t, ProtectedObject &)
RexxObject * getLocalCompoundVariableRealValue(RexxString *localstem, size_t index, RexxObject **tail, size_t tailCount)
bool tracingFailures(void)
virtual bool isRexxContext()
bool isInternalLevelCall()
RexxArray * getStackFrames(bool skipFirst)
RexxActivation * external()
RexxString * getMessageName()
RexxCompoundElement * getLocalCompoundVariable(RexxString *stemName, size_t index, RexxObject **tail, size_t tailCount)
void iterate(RexxString *)
void traceClause(RexxInstruction *, int)
void setExternalTraceOn()
void exitFrom(RexxObject *)
RexxObject * getParentContextObject()
bool callExternalRexx(RexxString *, RexxObject **, size_t, size_t, RexxString *, ProtectedObject &)
RexxString * sourceString()
void traceCompoundAssignment(RexxString *stemVar, RexxObject **tails, size_t tailCount, RexxObject *value, bool quoteValue=true)
RexxSource * sourceObject
RexxArray * getArguments()
void signalTo(RexxInstruction *)
void traceCompoundName(RexxString *stemVar, RexxObject **tails, size_t tailCount, RexxCompoundTail *tail)
void traceTaggedValue(int prefix, const char *tagPrefix, bool quoteTag, RexxString *tag, const char *marker, RexxObject *value, bool quoteValue=true)
static const size_t trace_off
void debugSkip(wholenumber_t, bool)
void loadLibrary(RexxString *target, RexxInstruction *instruction)
static const size_t trace_all_flags
RexxQueue * condition_queue
void raise(RexxString *, RexxObject *, RexxString *, RexxObject *, RexxObject *, RexxDirectory *)
RexxStem * getLocalStem(RexxString *name, size_t index)
bool isElapsedTimerReset()
RexxObject * handleNovalueEvent(RexxString *name, RexxObject *defaultValue, RexxVariable *variable)
static const size_t trace_commands
RexxString * trapState(RexxString *)
RexxActivation * senderActivation()
RexxVariableDictionary * getObjectVariables()
static const size_t single_step_nested
static const size_t trace_debug
bool isObjectScopeLocked()
void assignLocalCompoundVariable(RexxString *stemName, size_t index, RexxObject **tail, size_t tailCount, RexxObject *value)
SecurityManager * getEffectiveSecurityManager()
bool tracingCommands(void)
static const size_t trace_intermediates
virtual RexxObject * getReceiver()
void pushEnvironment(RexxObject *)
RexxString * traceSetting()
void setReturnStatus(int status)
void trapOn(RexxString *, RexxInstructionCallBase *)
void dropLocalCompoundVariable(RexxString *stemName, size_t index, RexxObject **tail, size_t tailCount)
void setLocalVariable(RexxString *name, size_t index, RexxObject *value)
RexxClass * findClass(RexxString *name)
RexxString * formatSourcelessTraceLine(RexxString *packageName)
void interpret(RexxString *)
void clearTraceSettings()
void raiseExit(RexxString *, RexxObject *, RexxString *, RexxObject *, RexxObject *, RexxDirectory *)
void liveGeneral(int reason)
static const size_t trace_errors
void processClauseBoundary()
RexxObject * getLocalEnvironment(RexxString *name)
void leaveLoop(RexxString *)
static const size_t trace_suppress
void debugInterpret(RexxString *)
static const bool default_enable_macrospace
void setAddress(RexxString *)
RexxObject * evaluateLocalCompoundVariable(RexxString *stemName, size_t index, RexxObject **tail, size_t tailCount)
void setDefaultAddress(RexxString *)
void signalValue(RexxString *)
static const size_t trace_results
static const size_t set_trace_on
void procedureExpose(RexxVariableBase **variables, size_t count)
RexxObject * getContextLine()
static const size_t guarded_method
void setObjNotify(RexxMessage *)
static const size_t set_trace_off
void enableExternalTrace(const char *option)
void setExternalTraceOff()
RexxExpressionStack stack
RexxCompoundElement * exposeLocalCompoundVariable(RexxString *stemName, size_t index, RexxObject **tail, size_t tailCount)
static const size_t debug_bypass
void setTrace(size_t, size_t)
void traceOperatorValue(int prefix, const char *tag, RexxObject *value)
void trapDelay(RexxString *)
bool localCompoundVariableExists(RexxString *stemName, size_t index, RexxObject **tail, size_t tailCount)
RexxObject * resolveDotVariable(RexxString *name)
static const size_t trace_failures
RexxObject * getContextReturnStatus()
static const size_t forwarded
bool debugPause(RexxInstruction *instr=OREF_NULL)
static const size_t reply_issued
StackFrameClass * createStackFrame()
ActivationSettings settings
virtual RexxActivation * getRexxContext()
RexxDirectory * getThreadLocal()
RexxObject * getLocalCompoundVariableValue(RexxString *stemName, size_t index, RexxObject **tail, size_t tailCount)
RexxVariableDictionary * getVariableDictionary()
virtual RexxActivation * findRexxContext()
PackageClass * loadRequires(RexxString *, RexxInstruction *)
RexxObject * getContextObject()
void command(RexxString *, RexxString *)
void putSettings(ActivationSettings &s)
RexxObject * internalCallTrap(RexxString *, RexxInstruction *, RexxDirectory *, ProtectedObject &)
static const size_t trace_labels
void traceCompoundValue(int prefix, RexxString *stemName, RexxObject **tails, size_t tailCount, RexxCompoundTail *tail)
RexxObject * novalueHandler(RexxString *)
void addLocalRoutine(RexxString *name, RexxMethod *method)
static size_t processTraceSetting(size_t traceSetting)
void getSettings(ActivationSettings &s)
void traceCompound(RexxString *stemVar, RexxObject **tails, size_t tailCount, RexxObject *value)
void mergeTraps(RexxQueue *, RexxQueue *)
bool callMacroSpaceFunction(RexxString *, RexxObject **, size_t, size_t, RexxString *, int, ProtectedObject &)
static const size_t return_status_set
static RoutineClass * getMacroCode(RexxString *macroName)
RexxInstruction * current
uint64_t getRandomSeed(RexxInteger *)
static const size_t clause_exits
void unwindTrap(RexxActivation *)
void setElapsedTimerInvalid()
static const size_t default_trace_flags
void trapOff(RexxString *)
RexxDirectory * getLabels()
void setLocalCompoundVariable(RexxString *stemName, size_t index, RexxObject **tail, size_t tailCount, RexxObject *value)
RexxInteger * random(RexxInteger *, RexxInteger *, RexxInteger *)
static const size_t trace_all
static const size_t clause_boundary
static const size_t elapsed_reset
RexxObject * forward(RexxObject *, RexxString *, RexxObject *, RexxObject **, size_t, size_t, bool)
void setArguments(RexxArray *positionalArguments, RexxDirectory *namedArguments)
SecurityManager * getSecurityManager()
PackageClass * getPackage()
RexxDirectory * getPublicRoutines()
void trapUndelay(RexxString *)
RexxContext * contextObject
void returnFrom(RexxObject *result)
static const size_t halt_condition
RexxObject * rexxVariable(RexxString *)
bool tracingIntermediates()
static const size_t debug_prompt_issued
RexxString * resolveProgramName(RexxString *name)
void expose(RexxVariableBase **variables, size_t count)
static const size_t single_step
void setElapsedTimerValid()
bool trap(RexxString *, RexxDirectory *)
RexxString * getTraceBack()
static const size_t trace_results_flags
static const size_t trace_on
void setConditionObj(RexxDirectory *condition)
bool propagateNumericSettings()
RexxDirectory * getStreams()
size_t getContextLineNumber()
bool isProgramLevelCall()
static const size_t trace_intermediates_flags
static const size_t external_yield
RexxObject * popEnvironment()
void cleanupLocalVariables()
static const size_t traps_copied
RexxObject * run(RexxObject *_receiver, RexxString *msgname, RexxArray *_arguments, RexxObject **_arglist, size_t _argcount, size_t _named_argcount, RexxInstruction *start, ProtectedObject &resultObj)
static const size_t source_traced
void traceValue(RexxObject *, int)
RexxObject * resolveStream(RexxString *name, bool input, RexxString **fullName, bool *added)
static const bool default_enable_commands
static const size_t transfer_failed
RexxString * getProgramName()
static const size_t procedure_valid
static const size_t trace_flags
virtual NumericSettings * getNumericSettings()
bool callTraceTestExit(RexxActivation *, bool)
CommandHandler * resolveCommandHandler(RexxString *)
void pushStackFrame(RexxActivationBase *new_activation)
void releaseStackFrame(RexxObject **frame)
bool callScriptingExit(RexxActivation *, RexxString *, RexxObject *, ProtectedObject &, RexxObject **, size_t)
RexxDirectory * getThreadLocal()
void callTerminationExit(RexxActivation *)
static wholenumber_t requestAccessCounter()
bool callHaltTestExit(RexxActivation *)
RexxObject * displayDebug(RexxDirectory *)
bool callObjectFunctionExit(RexxActivation *, RexxString *, RexxObject *, ProtectedObject &, RexxObject **, size_t, size_t)
bool callNovalueExit(RexxActivation *, RexxString *, RexxObject *&)
void traceOutput(RexxActivation *, RexxString *)
void callInitializationExit(RexxActivation *)
RexxObject * getLocalEnvironment(RexxString *name)
bool callFunctionExit(RexxActivation *, RexxString *, RexxObject *, ProtectedObject &, RexxObject **, size_t)
void raiseException(wholenumber_t, RexxString *, RexxArray *, RexxObject *)
void allocateLocalVariableFrame(RexxLocalVariables *locals)
void popStackFrame(bool reply)
RexxActivity * spawnReply()
RexxString * buildMessage(wholenumber_t, RexxArray *)
void allocateStackFrame(RexxExpressionStack *stack, size_t entries)
void reraiseException(RexxDirectory *)
void unwindToFrame(RexxActivation *frame)
void setRandomSeed(uint64_t seed)
InterpreterInstance * getInstance()
SecurityManager * getInstanceSecurityManager()
void clearCurrentCondition()
RexxDirectory * createConditionObject(RexxString *, RexxObject *, RexxString *, RexxObject *, RexxObject *)
bool callHaltClearExit(RexxActivation *)
RexxObject ** allocateFrame(size_t entries)
bool callCommandExit(RexxActivation *, RexxString *, RexxString *, ProtectedObject &result, ProtectedObject &condition)
RexxArray * generateStackFrames(bool skipFirst)
bool raiseCondition(RexxString *, RexxObject *, RexxString *, RexxObject *, RexxObject *)
RexxActivation * getCurrentRexxFrame()
RexxString * traceInput(RexxActivation *)
void put(RexxObject *eref, size_t pos)
RexxObject * get(size_t pos)
virtual bool isLabel(RexxString *)
virtual void terminate(RexxActivation *, RexxDoBlock *)
RexxString * getProgramName()
void install(RexxActivation *activation)
RexxCode * interpret(RexxString *s, size_t n, RexxActivation *activation)
RexxDirectory * getLocalRoutines()
RexxDirectory * getRoutines()
RexxDirectory * getMethods()
RexxInstruction * getFirstInstruction()
RexxSource * getSourceObject()
RexxString * resolveProgramName(RexxActivity *activity, RexxString *name)
RexxDirectory * getPublicRoutines()
RoutineClass * findRoutine(RexxString *n)
void mergeRequired(RexxSource *s)
RexxDirectory * getLabels()
SecurityManager * getSecurityManager()
size_t getLocalVariableSize()
RexxString * createCompoundName(RexxString *)
RexxObject * at(RexxString *)
RexxObject * setEntry(RexxString *, RexxObject *)
RexxObject * put(RexxObject *, RexxString *)
size_t appendAllIndexesItemsTo(RexxArray *array, size_t from)
RexxObject * remove(RexxString *)
RexxBlockInstruction * getParent()
void push(RexxObject *value)
void liveGeneral(int reason)
void migrate(RexxActivity *)
HashLink next(HashLink pos)
RexxObject * index(HashLink pos)
const SourceLocation & getLocation()
virtual void execute(RexxActivation *, RexxExpressionStack *)
RexxInstruction * nextInstruction
RexxObject * getValue(RexxActivation *)
void setHasNoReferences()
virtual RexxObject * getValue(RexxActivation *)
RexxObject * removeFirst()
void addLast(RexxObject *value)
void addFirst(RexxObject *value)
void procedure(RexxActivation *activation)
void migrate(RexxActivity *)
void liveGeneral(int reason)
void init(RexxActivation *creator, size_t poolSize)
void error(RexxDirectory *)
RexxVariableDictionary * getObjectVariables(RexxObject *)
RexxObject * superScope(RexxObject *)
RexxString * stringValue()
void sendMessage(RexxString *, RexxArray *, RexxDirectory *, ProtectedObject &)
bool messageSend(RexxString *, RexxObject **, size_t, size_t, ProtectedObject &, bool processUnknown=true, bool dynamicTarget=true)
RexxString * requestString()
virtual bool numberValue(wholenumber_t &result, size_t precision)
bool isInstanceOf(RexxClass *)
static const size_t TRACE_COMMANDS
PackageClass * loadRequires(RexxActivity *activity, RexxString *target)
static const size_t TRACE_ERRORS
static const size_t TRACE_INTERMEDIATES
static const size_t TRACE_SETTING_MASK
RexxString * traceBack(RexxActivation *, SourceLocation &, size_t, bool)
RexxSource * parentSource
static const size_t TRACE_LABELS
SecurityManager * getSecurityManager()
static const size_t DEBUG_ON
static RexxString * formatTraceSetting(size_t source)
static const size_t TRACE_IGNORE
static const size_t DEBUG_OFF
static const size_t TRACE_NORMAL
void mergeRequired(RexxSource *)
void setLocalRoutines(RexxDirectory *r)
static const size_t TRACE_RESULTS
static const size_t TRACE_OFF
bool getEnableMacrospace()
RexxClass * findClass(RexxString *)
static const size_t DEBUG_IGNORE
static const size_t TRACE_ALL
static bool parseTraceSetting(RexxString *, size_t &, size_t &, char &)
static const size_t DEBUG_TOGGLE
static const size_t TRACE_FAILURES
RexxCompoundElement * getCompoundVariable(RexxCompoundTail *name)
RexxObject * getCompoundVariableValue(RexxCompoundTail *resolved_tail)
RexxCompoundElement * exposeCompoundVariable(RexxCompoundTail *name)
RexxObject * getCompoundVariableRealValue(RexxCompoundTail *resolved_tail)
void dropCompoundVariable(RexxCompoundTail *name)
void setCompoundVariable(RexxCompoundTail *name, RexxObject *value)
RexxObject * evaluateCompoundVariableValue(RexxActivation *context, RexxString *stemVariableName, RexxCompoundTail *resolved_tail)
bool compoundVariableExists(RexxCompoundTail *resolved_tail)
bool strCaselessCompare(const char *s)
const char * getStringData()
void set(size_t s, int c, size_t l)
RexxString * concatWithCstring(const char *)
char putChar(size_t p, char c)
RexxString * concatToCstring(const char *)
bool strCompare(const char *s)
void put(size_t s, const void *b, size_t l)
virtual void procedureExpose(RexxActivation *, RexxActivation *, RexxExpressionStack *)
virtual void expose(RexxActivation *, RexxExpressionStack *, RexxVariableDictionary *)
void reserve(RexxActivity *)
bool transfer(RexxActivity *)
void release(RexxActivity *)
void set(RexxObject *value)
void call(RexxActivity *, RexxString *, RexxObject **, size_t, size_t, RexxString *, RexxString *, int, ProtectedObject &)
static RoutineClass * restore(RexxBuffer *, char *, size_t length)
static RoutineClass * fromFile(RexxString *filename)
RexxObject * checkStreamAccess(RexxString *name)
static RexxString * qualifyFileSystemName(RexxString *name)
static void getCurrentTime(RexxDateTime *Date)
static bool invokeExternalFunction(RexxActivation *, RexxActivity *, RexxString *, RexxObject **, size_t, size_t, RexxString *, ProtectedObject &)
static RexxString * getSourceString(RexxString *callType, RexxString *programName)
static RexxString * getMessageText(wholenumber_t code)
static void releaseResultMemory(void *)
static void restoreEnvironment(void *CurrentEnv)
static void SetConcurrencyInfosCollector(ConcurrencyInfosCollector)
static wholenumber_t currentThreadId()
wholenumber_t REXXENTRY getAPIManagerCounter()
RexxReturnCode REXXENTRY RexxQueryMacro(CONSTANT_STRING, unsigned short *)
#define RXMACRO_SEARCH_AFTER
RexxVariableDictionary * variableDictionary
RexxActivation * activation
unsigned short reserveCount
unsigned __int64 uint64_t