[Vm-dev] [Cog] Strange inliner behavior

David T. Lewis lewis at mail.msen.com
Sun Jul 31 13:07:41 UTC 2011


On Sun, Jul 31, 2011 at 05:49:40AM +0200, Igor Stasenko wrote:
>  
> Here the slang code:
> 
> 	size := self sizeBitsOf: op1.
> 	size = (self sizeBitsOf: op2) ifFalse: [
> 		^ false ].
> 
> And here translated code:
> 
> 	/* begin sizeBitsOf: */
> 	header = longAt(op1);
> 	size = ((header & TypeMask) == HeaderTypeSizeAndClass
> 		? (longAt(op1 - (BytesPerWord * 2))) & LongSizeMask
> 		: header & SizeMask);
> 	if (!(size == (sizeBitsOf(op2)))) {
> 		return 0;
> 	}
> 
> as you can see it inlining first, but refuses to inline second one.
>

It looks like a bug, but it is not related to Cog. I get the same
results using VMMaker trunk.

Dave
 


More information about the Vm-dev mailing list