• Create Account

#ActualTzarls

Posted 11 December 2012 - 11:09 PM

I changed that to:

if( sysFunc->hostReturnInMemory )
{
int vv=1;
if ( !( descr->returnType.GetObjectType()->flags & COMPLEX_RETURN_MASK )  &&
( descr->returnType.GetObjectType()->flags & asOBJ_APP_CLASS_ALLFLOATS ) &&
descr->returnType.GetSizeInMemoryBytes() <= 8 )
vv--;

// The return is made in memory
callConv += vv;
}

And the call to operator+ is competed succesfully, using the armFuncR0 function. Then operator= is called, but not the one defined in the class´ definition - nevertheless the assertion passes. Now I´m getting an error in the ByValue(...) function. I´ll investigate a little to see what´s going on here. BTW, ByValue(...) is being called with the armFunc function.

#1Tzarls

Posted 11 December 2012 - 10:16 PM

I changed that to:

if( sysFunc->hostReturnInMemory )
{
if ( !descr->returnType.IsObject()		    ||
(    descr->returnType.IsObject()		   &&
( descr->returnType.GetObjectType()->flags & COMPLEX_RETURN_MASK )  &&
!( descr->returnType.GetObjectType()->flags & asOBJ_APP_CLASS_ALLFLOATS )&&
descr->returnType.GetSizeInMemoryBytes() > 8
)
)
{
// The return is made in memory
callConv++;
}
}

And the call to operator+ is competed succesfully, using the armFuncR0 function. Then operator= is called, but not the one defined in the class´ definition - nevertheless the assertion passes. Now I´m getting an error in the ByValue(...) function. I´ll investigate a little to see what´s going on here. BTW, ByValue(...) is being called with the armFunc function.

PARTNERS