Jump to content

  • Log In with Google      Sign In   
  • Create Account

Awesome job so far everyone! Please give us your feedback on how our article efforts are going. We still need more finished articles for our May contest theme: Remake the Classics

#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