Hello,
I now got a emergency fix for the IBM XL C/C++ 9 compiler. With this fix
I can compiler ooRexx 4.0.0 on AIX. Unfortunately I need to fix several
things:
1. (RexxObject*) cast missing
I have inserted several casts (at the moment veeeeery quick fix, several
cast are not necessary ... but the compiler is happy )
diff -r -c ooRexx-4.0.0-TRUNK-ORIG/interpreter/classes/ArrayClass.cpp
ooRexx-4.0.0-TRUNK/interpreter/classes/ArrayClass.cpp
***
ooRexx-4.0.0-TRUNK-ORIG/interpreter/classes/ArrayClass.cpp<>2008-10-21
08:02:42.000000000 +0200
---
ooRexx-4.0.0-TRUNK/interpreter/classes/ArrayClass.cpp<----->2008-10-21
18:56:01.000000000 +0200
***************
*** 2418,2424 ****
{
ProtectedObject result;
comparator->sendMessage(OREF_COMPARE, left, right, result);
! if (result == OREF_NULL)
{
reportException(Error_No_result_object_message, OREF_COMPARE);
}
--- 2418,2424 ----
{
ProtectedObject result;
comparator->sendMessage(OREF_COMPARE, left, right, result);
! if ((RexxObject*)result == OREF_NULL)
{
reportException(Error_No_result_object_message, OREF_COMPARE);
}
... -> See patch file
2. Added a header for AIX (directely, not via the configure script for now)
diff -r -c
ooRexx-4.0.0-TRUNK-ORIG/rexxapi/common/platform/unix/SysCSStream.cpp
ooRexx-4.0.0-TRUNK/rexxapi/common/platform/unix/SysCSStream.cpp
***
ooRexx-4.0.0-TRUNK-ORIG/rexxapi/common/platform/unix/SysCSStream.cpp<------>2008-10-21
08:00:50.000000000 +0200
---
ooRexx-4.0.0-TRUNK/rexxapi/common/platform/unix/SysCSStream.cpp<--->2008-10-21
19:25:37.000000000 +0200
***************
*** 51,57 ****
--- 51,62 ----
#include <sys/ioctl.h>
#include <netdb.h>
#if !defined(__OpenBSD__)
+ #ifndef _AIX
#include <byteswap.h>
+ #endif
+ #ifdef _AIX
+ #include <strings.h>
+ #endif
#endif
#include <errno.h>
#include "SysCSStream.hpp"
..
3. commented out some pieces which have bot been updated in rexxutil.cpp
diff -r -c
ooRexx-4.0.0-TRUNK-ORIG/extensions/rexxutil/platform/unix/rexxutil.cpp
ooRexx-4.0.0-TRUNK/extensions/rexxutil/platform/unix/rexxutil.cpp
***
ooRexx-4.0.0-TRUNK-ORIG/extensions/rexxutil/platform/unix/rexxutil.cpp<---->2008-10-21
08:01:34.000000000 +0200
---
ooRexx-4.0.0-TRUNK/extensions/rexxutil/platform/unix/rexxutil.cpp<->2008-10-21
19:39:06.000000000 +0200
***************
*** 1151,1157 ****
if (options&NAME_ONLY) /* name only? */
strcpy(ldp->Temp, ldp->truefile); /* just copy it over */
else {
! #ifdef AIX
timestamp = localtime_r(&(finfo->st_mtime),&stTimestamp); /* get
the time info */
#else
timestamp = localtime(&(finfo->st_mtime));/* get the time info */
--- 1151,1157 ----
if (options&NAME_ONLY) /* name only? */
strcpy(ldp->Temp, ldp->truefile); /* just copy it over */
else {
! #ifdef TAMMER_AIX
timestamp = localtime_r(&(finfo->st_mtime),&stTimestamp); /* get
the time info */
#else
timestamp = localtime(&(finfo->st_mtime));/* get the time info */
***************
*** 3603,3609 ****
}
..
..
! #ifdef AIX
/*************************************************************************
* Function: SysAddFuncPkg *
* *
--- 3603,3609 ----
}
..
..
! #ifdef TAMEMR_AIX
/*************************************************************************
* Function: SysAddFuncPkg *
* *
***************
*** 5183,5189 ****
REXX_CLASSIC_ROUTINE(SysClearRexxMacroSpace, SysClearRexxMacroSpace),
REXX_CLASSIC_ROUTINE(SysLoadRexxMacroSpace, SysLoadRexxMacroSpace),
REXX_CLASSIC_ROUTINE(SysSaveRexxMacroSpace, SysSaveRexxMacroSpace),
! #if defined(AIX)
REXX_CLASSIC_ROUTINE(SysAddFuncPkg, SysAddFuncPkg),
REXX_CLASSIC_ROUTINE(SysAddCmdPkg, SysAddCmdPkg),
REXX_CLASSIC_ROUTINE(SysDropFuncPkg, SysDropFuncPkg),
--- 5183,5189 ----
REXX_CLASSIC_ROUTINE(SysClearRexxMacroSpace, SysClearRexxMacroSpace),
REXX_CLASSIC_ROUTINE(SysLoadRexxMacroSpace, SysLoadRexxMacroSpace),
REXX_CLASSIC_ROUTINE(SysSaveRexxMacroSpace, SysSaveRexxMacroSpace),
! #if defined(TAMMER_AIX)
REXX_CLASSIC_ROUTINE(SysAddFuncPkg, SysAddFuncPkg),
REXX_CLASSIC_ROUTINE(SysAddCmdPkg, SysAddCmdPkg),
REXX_CLASSIC_ROUTINE(SysDropFuncPkg, SysDropFuncPkg),
Are this utility functions no longer needed ??
What is the replacement for this functions ??
With this fixes applied I can start rxapi and the image can be build,
but rexx -v core dumps after the first line.
This works:
# ./rexx
Syntax is "rexx [-v] filename [arguments]"
or "rexx [-e] program_string [arguments]".
This fails:
# ./rexx -v
Open Object Rexx
--> core dump
# dbx .libs/lt-rexx
Type 'help' for help.
[using memory image in core]
reading symbolic information ...
Segmentation fault in colval._getcolval [/usr/lib/threads/libc.a] at
0xd035b680 ($t1)
0xd035b680 (_getcolval+0x268) 89030000 lbz r8,0x0(r3)
(dbx) where
colval._getcolval() at 0xd035b680
doprnt._doprnt(??, ??, ??) at 0xd036860c
printf.fprintf(0xf027fee0, 0x20252fc8, 0x36b6003a, 0x7f7f7f7f, 0x3,
0x746d6c00, 0x74, 0x2ff208e0) at 0xd0366570
main(argc = 2, argv = 0x2ff22a30), line 113 in "rexx.cpp"
Any ideas ??
Bye
Rainer Tammer
diff -r -c
ooRexx-4.0.0-TRUNK-ORIG/extensions/rexxutil/platform/unix/rexxutil.cpp
ooRexx-4.0.0-TRUNK/extensions/rexxutil/platform/unix/rexxutil.cpp
*** ooRexx-4.0.0-TRUNK-ORIG/extensions/rexxutil/platform/unix/rexxutil.cpp
2008-10-21 08:01:34.000000000 +0200
--- ooRexx-4.0.0-TRUNK/extensions/rexxutil/platform/unix/rexxutil.cpp
2008-10-21 19:39:06.000000000 +0200
***************
*** 1151,1157 ****
if (options&NAME_ONLY) /* name only? */
strcpy(ldp->Temp, ldp->truefile); /* just copy it over */
else {
! #ifdef AIX
timestamp = localtime_r(&(finfo->st_mtime),&stTimestamp); /* get the time
info */
#else
timestamp = localtime(&(finfo->st_mtime));/* get the time info */
--- 1151,1157 ----
if (options&NAME_ONLY) /* name only? */
strcpy(ldp->Temp, ldp->truefile); /* just copy it over */
else {
! #ifdef TAMMER_AIX
timestamp = localtime_r(&(finfo->st_mtime),&stTimestamp); /* get the time
info */
#else
timestamp = localtime(&(finfo->st_mtime));/* get the time info */
***************
*** 3603,3609 ****
}
! #ifdef AIX
/*************************************************************************
* Function: SysAddFuncPkg *
* *
--- 3603,3609 ----
}
! #ifdef TAMEMR_AIX
/*************************************************************************
* Function: SysAddFuncPkg *
* *
***************
*** 5183,5189 ****
REXX_CLASSIC_ROUTINE(SysClearRexxMacroSpace, SysClearRexxMacroSpace),
REXX_CLASSIC_ROUTINE(SysLoadRexxMacroSpace, SysLoadRexxMacroSpace),
REXX_CLASSIC_ROUTINE(SysSaveRexxMacroSpace, SysSaveRexxMacroSpace),
! #if defined(AIX)
REXX_CLASSIC_ROUTINE(SysAddFuncPkg, SysAddFuncPkg),
REXX_CLASSIC_ROUTINE(SysAddCmdPkg, SysAddCmdPkg),
REXX_CLASSIC_ROUTINE(SysDropFuncPkg, SysDropFuncPkg),
--- 5183,5189 ----
REXX_CLASSIC_ROUTINE(SysClearRexxMacroSpace, SysClearRexxMacroSpace),
REXX_CLASSIC_ROUTINE(SysLoadRexxMacroSpace, SysLoadRexxMacroSpace),
REXX_CLASSIC_ROUTINE(SysSaveRexxMacroSpace, SysSaveRexxMacroSpace),
! #if defined(TAMMER_AIX)
REXX_CLASSIC_ROUTINE(SysAddFuncPkg, SysAddFuncPkg),
REXX_CLASSIC_ROUTINE(SysAddCmdPkg, SysAddCmdPkg),
REXX_CLASSIC_ROUTINE(SysDropFuncPkg, SysDropFuncPkg),
diff -r -c ooRexx-4.0.0-TRUNK-ORIG/interpreter/classes/ArrayClass.cpp
ooRexx-4.0.0-TRUNK/interpreter/classes/ArrayClass.cpp
*** ooRexx-4.0.0-TRUNK-ORIG/interpreter/classes/ArrayClass.cpp 2008-10-21
08:02:42.000000000 +0200
--- ooRexx-4.0.0-TRUNK/interpreter/classes/ArrayClass.cpp 2008-10-21
18:56:01.000000000 +0200
***************
*** 2418,2424 ****
{
ProtectedObject result;
comparator->sendMessage(OREF_COMPARE, left, right, result);
! if (result == OREF_NULL)
{
reportException(Error_No_result_object_message, OREF_COMPARE);
}
--- 2418,2424 ----
{
ProtectedObject result;
comparator->sendMessage(OREF_COMPARE, left, right, result);
! if ((RexxObject*)result == OREF_NULL)
{
reportException(Error_No_result_object_message, OREF_COMPARE);
}
diff -r -c ooRexx-4.0.0-TRUNK-ORIG/interpreter/classes/ObjectClass.cpp
ooRexx-4.0.0-TRUNK/interpreter/classes/ObjectClass.cpp
*** ooRexx-4.0.0-TRUNK-ORIG/interpreter/classes/ObjectClass.cpp 2008-10-21
08:02:46.000000000 +0200
--- ooRexx-4.0.0-TRUNK/interpreter/classes/ObjectClass.cpp 2008-10-21
19:16:43.000000000 +0200
***************
*** 188,194 ****
ProtectedObject result;
sendMessage(OREF_COMPARETO, other, result);
! if (result == OREF_NULL)
{
reportException(Error_No_result_object_message, OREF_COMPARETO);
}
--- 188,194 ----
ProtectedObject result;
sendMessage(OREF_COMPARETO, other, result);
! if ((RexxObject*)result == OREF_NULL)
{
reportException(Error_No_result_object_message, OREF_COMPARETO);
}
***************
*** 273,279 ****
// retrieve the method from the dictionary
RexxMethod *method_object = (RexxMethod
*)this->behaviour->getMethodDictionary()->stringGet(method_name);
// this is an error if it doesn't exist
! if (method_object == OREF_NULL)
{
reportException(Error_No_method_name, this, method_name);
}
--- 273,279 ----
// retrieve the method from the dictionary
RexxMethod *method_object = (RexxMethod
*)this->behaviour->getMethodDictionary()->stringGet(method_name);
// this is an error if it doesn't exist
! if ((RexxObject *)method_object == OREF_NULL)
{
reportException(Error_No_method_name, this, method_name);
}
***************
*** 548,554 ****
/* clear out the existing object variable pointer */
newObj->objectVariables = OREF_NULL;
! while (dictionary != OREF_NULL)
{
/* copy the dictionary */
RexxVariableDictionary *newDictionary = (RexxVariableDictionary
*)dictionary->copy();
--- 548,554 ----
/* clear out the existing object variable pointer */
newObj->objectVariables = OREF_NULL;
! while ((RexxObject *)dictionary != OREF_NULL)
{
/* copy the dictionary */
RexxVariableDictionary *newDictionary = (RexxVariableDictionary
*)dictionary->copy();
***************
*** 571,577 ****
/* get the top activation */
RexxActivationBase *activation =
ActivityManager::currentActivity->getTopStackFrame();
/* have an activation? */
! if (activation != OREF_NULL)
{
RexxObject *sender = activation->getReceiver();/* get the receiving
object */
if (sender == (RexxObject *)this) /* the same receiver?
*/
--- 571,577 ----
/* get the top activation */
RexxActivationBase *activation =
ActivityManager::currentActivity->getTopStackFrame();
/* have an activation? */
! if ((RexxObject *)activation != OREF_NULL)
{
RexxObject *sender = activation->getReceiver();/* get the receiving
object */
if (sender == (RexxObject *)this) /* the same receiver?
*/
***************
*** 748,754 ****
/* grab the method from this level */
RexxMethod *method_save = this->behaviour->methodLookup(msgname);
/* method exists...special processing*/
! if (method_save != OREF_NULL && method_save->isSpecial())
{
if (method_save->isPrivate()) /* actually private method?
*/
{
--- 748,754 ----
/* grab the method from this level */
RexxMethod *method_save = this->behaviour->methodLookup(msgname);
/* method exists...special processing*/
! if ((RexxObject *)method_save != OREF_NULL && method_save->isSpecial())
{
if (method_save->isPrivate()) /* actually private method?
*/
{
***************
*** 756,762 ****
method_save = this->checkPrivate(method_save);
}
/* now process protected methods */
! if (method_save != OREF_NULL && method_save->isProtected())
{
/* really a protected method */
this->processProtectedMethod(msgname, method_save, arguments,
count, result);
--- 756,762 ----
method_save = this->checkPrivate(method_save);
}
/* now process protected methods */
! if ((RexxObject *)method_save != OREF_NULL &&
method_save->isProtected())
{
/* really a protected method */
this->processProtectedMethod(msgname, method_save, arguments,
count, result);
***************
*** 764,770 ****
}
}
/* have a method */
! if (method_save != OREF_NULL)
{
method_save->run(ActivityManager::currentActivity, this, msgname,
arguments, count, result);
}
--- 764,770 ----
}
}
/* have a method */
! if ((RexxObject *)method_save != OREF_NULL)
{
method_save->run(ActivityManager::currentActivity, this, msgname,
arguments, count, result);
}
***************
*** 789,795 ****
ActivityManager::currentActivity->checkStackSpace(); /* have enough
stack space? */
/* go to the higher level */
RexxMethod *method_save = this->superMethod(msgname, startscope);
! if (method_save != OREF_NULL && method_save->isProtected())
{
if (method_save->isPrivate()) /* actually private method?
*/
{
--- 789,795 ----
ActivityManager::currentActivity->checkStackSpace(); /* have enough
stack space? */
/* go to the higher level */
RexxMethod *method_save = this->superMethod(msgname, startscope);
! if ((RexxObject *)method_save != OREF_NULL && method_save->isProtected())
{
if (method_save->isPrivate()) /* actually private method?
*/
{
***************
*** 803,809 ****
}
}
/* have a method */
! if (method_save != OREF_NULL)
{
/* run the method */
method_save->run(ActivityManager::currentActivity, this, msgname,
arguments, count, result);
--- 803,809 ----
}
}
/* have a method */
! if ((RexxObject *)method_save != OREF_NULL)
{
/* run the method */
method_save->run(ActivityManager::currentActivity, this, msgname,
arguments, count, result);
***************
*** 850,856 ****
/* no method for this msgname */
/* find the unknown method */
RexxMethod *method_save = this->behaviour->methodLookup(OREF_UNKNOWN);
! if (method_save == OREF_NULL) /* "unknown" method exists?
*/
/* no unknown method - try to raise */
/* a NOMETHOD condition, and if that */
{
--- 850,856 ----
/* no method for this msgname */
/* find the unknown method */
RexxMethod *method_save = this->behaviour->methodLookup(OREF_UNKNOWN);
! if ((RexxObject *)method_save == OREF_NULL) /* "unknown" method
exists? */
/* no unknown method - try to raise */
/* a NOMETHOD condition, and if that */
{
***************
*** 1440,1446 ****
RexxObject *scope = lastMethod()->getScope(); /* get the method's
scope */
/* get the object name variable
*/
string_value = (RexxString *)this->getObjectVariable(OREF_NAME, scope);
! if (string_value == OREF_NULL)
{ /* no name? */
if (this->isBaseClass()) /* primitive object?
*/
{
--- 1440,1446 ----
RexxObject *scope = lastMethod()->getScope(); /* get the method's
scope */
/* get the object name variable
*/
string_value = (RexxString *)this->getObjectVariable(OREF_NAME, scope);
! if ((RexxObject*)string_value == OREF_NULL)
{ /* no name? */
if (this->isBaseClass()) /* primitive object?
*/
{
***************
*** 1555,1561 ****
}
}
! if (methobj == OREF_NULL) /* we weren't passed a method,
*/
{
/* add a dummy method */
methobj = (RexxMethod *)TheNilObject;
--- 1555,1561 ----
}
}
! if ((RexxObject *)methobj == OREF_NULL) /* we weren't passed a
method, */
{
/* add a dummy method */
methobj = (RexxMethod *)TheNilObject;
***************
*** 1602,1608 ****
/* find the MAKExxxx method */
RexxMethod *method = this->behaviour->methodLookup(make_method);
/* have this method? */
! if (method != OREF_NULL)
{
/* Return its results */
return this->sendMessage(make_method);
--- 1602,1608 ----
/* find the MAKExxxx method */
RexxMethod *method = this->behaviour->methodLookup(make_method);
/* have this method? */
! if ((RexxObject *)method != OREF_NULL)
{
/* Return its results */
return this->sendMessage(make_method);
***************
*** 1632,1638 ****
/* Get the message name. */
RexxObject *message = arguments[0]; /* get the message .
*/
/* Did we receive a message name
*/
! if (message == OREF_NULL)
{
missingArgument(ARG_ONE); /* Yes, this is an error.
*/
}
--- 1632,1638 ----
/* Get the message name. */
RexxObject *message = arguments[0]; /* get the message .
*/
/* Did we receive a message name
*/
! if ((RexxObject *)message == OREF_NULL)
{
missingArgument(ARG_ONE); /* Yes, this is an error.
*/
}
***************
*** 1665,1671 ****
}
}
}
! if (messageArray != OREF_NULL) /* is message specified as an array?
*/
{
/* didn't get two arguments? */
if (messageArray->getDimension() != 1 || messageArray->size() != 2)
--- 1665,1671 ----
}
}
}
! if ((RexxObject *)messageArray != OREF_NULL) /* is message
specified as an array? */
{
/* didn't get two arguments? */
if (messageArray->getDimension() != 1 || messageArray->size() != 2)
***************
*** 1684,1690 ****
/* get the top activation */
RexxActivationBase *activation =
ActivityManager::currentActivity->getTopStackFrame();
/* have an activation? */
! if (activation != OREF_NULL)
{
/* get the receiving object */
RexxObject *sender = activation->getReceiver();
--- 1684,1690 ----
/* get the top activation */
RexxActivationBase *activation =
ActivityManager::currentActivity->getTopStackFrame();
/* have an activation? */
! if ((RexxObject *)activation != OREF_NULL)
{
/* get the receiving object */
RexxObject *sender = activation->getReceiver();
***************
*** 1937,1943 ****
RexxObject *RexxObject::getObjectVariable(RexxString *name)
{
RexxVariableDictionary *dictionary = objectVariables;
! while (dictionary != OREF_NULL)
{
// see if this dictionary has the variable
RexxObject *val = dictionary->realValue(name);
--- 1937,1943 ----
RexxObject *RexxObject::getObjectVariable(RexxString *name)
{
RexxVariableDictionary *dictionary = objectVariables;
! while ((RexxObject *)dictionary != OREF_NULL)
{
// see if this dictionary has the variable
RexxObject *val = dictionary->realValue(name);
***************
*** 2028,2034 ****
/******************************************************************************/
{
RexxVariableDictionary *dictionary = objectVariables; /* get the
head of the chain */
! while (dictionary != OREF_NULL)
{ /* search for a scope match */
/* if we've found a match, return it */
if (dictionary->isScope(scope))
--- 2028,2034 ----
/******************************************************************************/
{
RexxVariableDictionary *dictionary = objectVariables; /* get the
head of the chain */
! while ((RexxObject *)dictionary != OREF_NULL)
{ /* search for a scope match */
/* if we've found a match, return it */
if (dictionary->isScope(scope))
***************
*** 2054,2060 ****
/******************************************************************************/
{
RexxString *classId = this->id(); /* get the id string
*/
! if (classId == OREF_NULL) /* internal class?
*/
{
return "unknown Class"; /* return an unknown identifier
*/
}
--- 2054,2060 ----
/******************************************************************************/
{
RexxString *classId = this->id(); /* get the id string
*/
! if ((RexxObject *)classId == OREF_NULL) /* internal class?
*/
{
return "unknown Class"; /* return an unknown identifier
*/
}
***************
*** 2071,2077 ****
{
/* get the class */
RexxClass *createClass = this->behaviourObject()->getOwningClass();
! if (createClass == OREF_NULL) /* no class object?
*/
{
return OREF_NULL; /* return nothing
*/
}
--- 2071,2077 ----
{
/* get the class */
RexxClass *createClass = this->behaviourObject()->getOwningClass();
! if ((RexxObject *)createClass == OREF_NULL) /* no class object?
*/
{
return OREF_NULL; /* return nothing
*/
}
***************
*** 2162,2168 ****
ProtectedObject result; /* returned result
*/\
/* do a real message send
*/\
this->messageSend(OREF_##message, &operand, 1, result);
\
! if (result == OREF_NULL) /* in an expression and need a
result*/ \
/* need to raise an exception
*/ \
reportException(Error_No_result_object_message, OREF_##message); \
return (RexxObject *)result; /* return the final result
*/ \
--- 2162,2168 ----
ProtectedObject result; /* returned result
*/\
/* do a real message send
*/\
this->messageSend(OREF_##message, &operand, 1, result);
\
! if ((RexxObject *)result == OREF_NULL) /* in an expression and
need a result*/ \
/* need to raise an exception
*/ \
reportException(Error_No_result_object_message, OREF_##message); \
return (RexxObject *)result; /* return the final result
*/ \
***************
*** 2175,2181 ****
ProtectedObject result; /* returned result
*/\
/* do a real message send
*/\
this->messageSend(OREF_##message, &operand, operand == OREF_NULL ? 0 : 1,
result); \
! if (result == OREF_NULL) /* in an expression and need a
result*/ \
/* need to raise an exception
*/ \
reportException(Error_No_result_object_message, OREF_##message); \
return (RexxObject *)result; /* return the final result
*/ \
--- 2175,2181 ----
ProtectedObject result; /* returned result
*/\
/* do a real message send
*/\
this->messageSend(OREF_##message, &operand, operand == OREF_NULL ? 0 : 1,
result); \
! if ((RexxObject *)result == OREF_NULL) /* in an expression and
need a result*/ \
/* need to raise an exception
*/ \
reportException(Error_No_result_object_message, OREF_##message); \
return (RexxObject *)result; /* return the final result
*/ \
***************
*** 2379,2385 ****
// try for the variable value
RexxObject *C_self = getObjectVariable(OREF_CSELF);
// if we found one, validate for unwrappering
! if (C_self != OREF_NULL)
{
// if this is a pointer, then unwrapper the value
if (C_self->isInstanceOf(ThePointerClass))
--- 2379,2385 ----
// try for the variable value
RexxObject *C_self = getObjectVariable(OREF_CSELF);
// if we found one, validate for unwrappering
! if ((RexxObject *)C_self != OREF_NULL)
{
// if this is a pointer, then unwrapper the value
if (C_self->isInstanceOf(ThePointerClass))
diff -r -c
ooRexx-4.0.0-TRUNK-ORIG/interpreter/concurrency/RexxStartDispatcher.cpp
ooRexx-4.0.0-TRUNK/interpreter/concurrency/RexxStartDispatcher.cpp
*** ooRexx-4.0.0-TRUNK-ORIG/interpreter/concurrency/RexxStartDispatcher.cpp
2008-10-21 08:02:25.000000000 +0200
--- ooRexx-4.0.0-TRUNK/interpreter/concurrency/RexxStartDispatcher.cpp
2008-10-21 19:18:08.000000000 +0200
***************
*** 139,145 ****
if (result != NULL) /* if return provided for */
{
/* actually have a result to return? */
! if (program_result != OREF_NULL)
{
/* force to a string value */
program_result = ((RexxObject
*)program_result)->stringValue();
--- 139,145 ----
if (result != NULL) /* if return provided for */
{
/* actually have a result to return? */
! if ((RexxObject*)program_result != OREF_NULL)
{
/* force to a string value */
program_result = ((RexxObject
*)program_result)->stringValue();
***************
*** 152,158 ****
}
}
/* If there is a return val...
*/
! if (program_result != OREF_NULL)
{
wholenumber_t return_code;
--- 152,158 ----
}
}
/* If there is a return val...
*/
! if ((RexxObject*)program_result != OREF_NULL)
{
wholenumber_t return_code;
***************
*** 191,197 ****
*/
void CallRoutineDispatcher::run()
{
! if (arguments != OREF_NULL)
{
// we use a null string for the name when things are called directly
routine->call(activity, OREF_NULLSTRING, arguments->data(),
arguments->size(), result);
--- 191,197 ----
*/
void CallRoutineDispatcher::run()
{
! if ((RexxObject*)arguments != OREF_NULL)
{
// we use a null string for the name when things are called directly
routine->call(activity, OREF_NULLSTRING, arguments->data(),
arguments->size(), result);
***************
*** 217,223 ****
ProtectedObject p(routine);
! if (arguments != OREF_NULL)
{
// use the provided name for the call name
routine->runProgram(activity, arguments->data(), arguments->size(),
result);
--- 217,223 ----
ProtectedObject p(routine);
! if ((RexxObject*)arguments != OREF_NULL)
{
// use the provided name for the call name
routine->runProgram(activity, arguments->data(), arguments->size(),
result);
diff -r -c
ooRexx-4.0.0-TRUNK-ORIG/interpreter/expression/ExpressionFunction.cpp
ooRexx-4.0.0-TRUNK/interpreter/expression/ExpressionFunction.cpp
*** ooRexx-4.0.0-TRUNK-ORIG/interpreter/expression/ExpressionFunction.cpp
2008-10-21 08:02:50.000000000 +0200
--- ooRexx-4.0.0-TRUNK/interpreter/expression/ExpressionFunction.cpp
2008-10-21 19:19:03.000000000 +0200
***************
*** 96,102 ****
/* internal routines allowed? */
if (!(this->flags&function_nointernal))
{
! if (labels != OREF_NULL) /* have a labels table?
*/
{
/* check the label table
*/
OrefSet(this, this->target, (RexxInstruction
*)labels->at(this->functionName));
--- 96,102 ----
/* internal routines allowed? */
if (!(this->flags&function_nointernal))
{
! if ((RexxObject*)labels != OREF_NULL) /* have a labels
table? */
{
/* check the label table
*/
OrefSet(this, this->target, (RexxInstruction
*)labels->at(this->functionName));
***************
*** 223,229 ****
context->externalCall(this->functionName, argcount, stack,
OREF_FUNCTIONNAME, result);
break;
}
! if (result == OREF_NULL) /* result returned?
*/
{
/* raise an error */
if (this->functionName)
--- 223,229 ----
context->externalCall(this->functionName, argcount, stack,
OREF_FUNCTIONNAME, result);
break;
}
! if ((RexxObject*)result == OREF_NULL) /* result returned?
*/
{
/* raise an error */
if (this->functionName)
diff -r -c ooRexx-4.0.0-TRUNK-ORIG/interpreter/expression/ExpressionMessage.cpp
ooRexx-4.0.0-TRUNK/interpreter/expression/ExpressionMessage.cpp
*** ooRexx-4.0.0-TRUNK-ORIG/interpreter/expression/ExpressionMessage.cpp
2008-10-21 08:02:50.000000000 +0200
--- ooRexx-4.0.0-TRUNK/interpreter/expression/ExpressionMessage.cpp
2008-10-21 19:19:48.000000000 +0200
***************
*** 132,138 ****
context->traceIntermediate(OREF_NULLSTRING,
TRACE_PREFIX_ARGUMENT);
}
}
! if (_super == OREF_NULL) /* no super class override?
*/
{
/* issue the fast message
*/
stack->send(this->messageName, argcount, result);
--- 132,138 ----
context->traceIntermediate(OREF_NULLSTRING,
TRACE_PREFIX_ARGUMENT);
}
}
! if ((RexxObject*)_super == OREF_NULL) /* no super class
override? */
{
/* issue the fast message
*/
stack->send(this->messageName, argcount, result);
***************
*** 152,158 ****
stack->prefixResult(result); /* replace top element on stack
*/
}
! if (result == OREF_NULL) /* in an expression and need a
result*/
{
/* need to raise an exception
*/
reportException(Error_No_result_object_message, this->messageName);
--- 152,158 ----
stack->prefixResult(result); /* replace top element on stack
*/
}
! if ((RexxObject*)result == OREF_NULL) /* in an expression and
need a result*/
{
/* need to raise an exception
*/
reportException(Error_No_result_object_message, this->messageName);
***************
*** 277,283 ****
ProtectedObject result;
// now send the message the appropriate way
! if (_super == OREF_NULL)
{
// normal message send
stack->send(this->messageName, argcount + 1, result);
--- 277,283 ----
ProtectedObject result;
// now send the message the appropriate way
! if ((RexxObject*)_super == OREF_NULL)
{
// normal message send
stack->send(this->messageName, argcount + 1, result);
diff -r -c ooRexx-4.0.0-TRUNK-ORIG/interpreter/instructions/CallInstruction.cpp
ooRexx-4.0.0-TRUNK/interpreter/instructions/CallInstruction.cpp
*** ooRexx-4.0.0-TRUNK-ORIG/interpreter/instructions/CallInstruction.cpp
2008-10-21 08:03:06.000000000 +0200
--- ooRexx-4.0.0-TRUNK/interpreter/instructions/CallInstruction.cpp
2008-10-21 19:20:44.000000000 +0200
***************
*** 147,153 ****
return; //
}
if (!(instructionFlags&call_nointernal)) { /* internal routines allowed?
*/
! if (labels != OREF_NULL) /* have a labels table? */
/* check the label table */
OrefSet(this, this->target, (RexxInstruction *)labels->at((RexxString
*)this->name));
instructionFlags |= call_internal; /* this is an internal call
*/
--- 147,153 ----
return; //
}
if (!(instructionFlags&call_nointernal)) { /* internal routines allowed?
*/
! if ((RexxObject*)labels != OREF_NULL) /* have a labels table?
*/
/* check the label table */
OrefSet(this, this->target, (RexxInstruction *)labels->at((RexxString
*)this->name));
instructionFlags |= call_internal; /* this is an internal call
*/
***************
*** 208,220 ****
builtin_index = RexxSource::resolveBuiltin(_name);
_target = OREF_NULL; /* clear out the target
*/
labels = context->getLabels(); /* get the labels table
*/
! if (labels != OREF_NULL) /* have labels in the program?
*/
{
/* look up label and go to
normal */
/* signal processing
*/
_target = (RexxInstruction *)(labels->at(_name));
}
! if (_target != OREF_NULL) /* found one?
*/
{
type = call_internal; /* have an internal call
*/
}
--- 208,220 ----
builtin_index = RexxSource::resolveBuiltin(_name);
_target = OREF_NULL; /* clear out the target
*/
labels = context->getLabels(); /* get the labels table
*/
! if ((RexxObject*)labels != OREF_NULL) /* have labels in
the program? */
{
/* look up label and go to
normal */
/* signal processing
*/
_target = (RexxInstruction *)(labels->at(_name));
}
! if ((RexxObject*)_target != OREF_NULL) /* found one?
*/
{
type = call_internal; /* have an internal call
*/
}
***************
*** 274,280 ****
context->externalCall(_name, argcount, stack,
OREF_ROUTINENAME, result);
break;
}
! if (result != OREF_NULL) /* result returned?
*/
{
/* set the RESULT variable to the */
/* message return value */
--- 274,280 ----
context->externalCall(_name, argcount, stack,
OREF_ROUTINENAME, result);
break;
}
! if ((RexxObject*)result != OREF_NULL) /* result returned?
*/
{
/* set the RESULT variable to the */
/* message return value */
diff -r -c
ooRexx-4.0.0-TRUNK-ORIG/interpreter/instructions/MessageInstruction.cpp
ooRexx-4.0.0-TRUNK/interpreter/instructions/MessageInstruction.cpp
*** ooRexx-4.0.0-TRUNK-ORIG/interpreter/instructions/MessageInstruction.cpp
2008-10-21 08:03:05.000000000 +0200
--- ooRexx-4.0.0-TRUNK/interpreter/instructions/MessageInstruction.cpp
2008-10-21 19:21:36.000000000 +0200
***************
*** 221,227 ****
context->traceIntermediate(OREF_NULLSTRING,
TRACE_PREFIX_ARGUMENT);
}
}
! if (super == OREF_NULL) /* no super class override?
*/
{
/* issue the fast message
*/
stack->send(this->name, argcount, result);
--- 221,227 ----
context->traceIntermediate(OREF_NULLSTRING,
TRACE_PREFIX_ARGUMENT);
}
}
! if ((RexxObject*)super == OREF_NULL) /* no super class
override? */
{
/* issue the fast message
*/
stack->send(this->name, argcount, result);
***************
*** 236,242 ****
{
result = _target; /* get the target element
*/
}
! if (result != OREF_NULL) /* result returned? */
{
context->traceResult((RexxObject *)result); /* trace if necessary
*/
/* set the RESULT variable to the */
--- 236,242 ----
{
result = _target; /* get the target element
*/
}
! if ((RexxObject*)result != OREF_NULL) /* result returned?
*/
{
context->traceResult((RexxObject *)result); /* trace if necessary
*/
/* set the RESULT variable to the */
diff -r -c ooRexx-4.0.0-TRUNK-ORIG/rexxapi/common/platform/unix/SysCSStream.cpp
ooRexx-4.0.0-TRUNK/rexxapi/common/platform/unix/SysCSStream.cpp
*** ooRexx-4.0.0-TRUNK-ORIG/rexxapi/common/platform/unix/SysCSStream.cpp
2008-10-21 08:00:50.000000000 +0200
--- ooRexx-4.0.0-TRUNK/rexxapi/common/platform/unix/SysCSStream.cpp
2008-10-21 19:25:37.000000000 +0200
***************
*** 51,57 ****
--- 51,62 ----
#include <sys/ioctl.h>
#include <netdb.h>
#if !defined(__OpenBSD__)
+ #ifndef _AIX
#include <byteswap.h>
+ #endif
+ #ifdef _AIX
+ #include <strings.h>
+ #endif
#endif
#include <errno.h>
#include "SysCSStream.hpp"
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Oorexx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-devel