<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>How about this:<div><br></div><div>To check for a closure:</div><div> 1 Clear the lower bit of the address. Or maybe the lower 2 bits.</div><div> 2 Check for a 4 byte -1. Not necessarily a full INTEGER.</div><div><br></div><div><br></div><div>Marker always consumes an INTEGER's worth of space, but only ever check 4 bytes.</div><div>Clearing the lower bit is strictly to accommodate Thumb -- does it take alignment faults?</div><div><span style="font-size: 12pt;">The conditional branch in the current code, at least for 64bit non-amd64 platforms would be gone.</span></div><div>All targets would be the same.</div><div><br></div><div><br></div><div><div>Clearing the lower two bits would make the address always aligned.</div></div><div>The assumption is that if is a closure, it is already aligned and this is value preserving.</div><div>If it is not a closure, this still yields a valid accessible address, just not the one to call.</div><div><br></div><div><br></div><div>Or too risky in terms of portability? Better to check for alignment, assume unaligned is not a closure, and just check for a full INTEGER -1?</div><div><br></div><div><br></div><div>Thank you,</div><div> - Jay</div><div><br></div> </div></body>
</html>