<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Sep 10, 2013 at 1:19 PM, David Chisnall <span dir="ltr"><<a href="mailto:David.Chisnall@cl.cam.ac.uk" target="_blank">David.Chisnall@cl.cam.ac.uk</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On 10 Sep 2013, at 10:13, Kostya Serebryany <<a href="mailto:kcc@google.com">kcc@google.com</a>> wrote:<br>

<br>
> How did you come with 320 bits?<br>
> 320=64*4+64, which is the size of the metadata table entry plus pointer size,<br></div></blockquote><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class="im">
<br>
</div>Sorry, that should have been 192.  The specification allows the metadata to be stored either in look-aside tables or explicitly managed.  </blockquote><div><br></div><div>Is it? Which specification are you referring to? </div>
<div><a href="http://download-software.intel.com/sites/default/files/319433-015.pdf">http://download-software.intel.com/sites/default/files/319433-015.pdf</a> (chapter 9) doesn't say anything like this. (Or does it?)</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">The tables impose a very large storage space penalty, so are most likely to be used with C or similar language where it is difficult to modify the data layout.  For languages where there is no requirement to maintain an ABI that interoperates with non-MPX code, the metadata can be stored inline when running in bounds-checked mode.  I forgot that when using it in this mode you needed to store less metadata than when using the bound tables.<br>

<div class="im"><br>
> but why do you call this a fat pointer?<br>
<br>
</div>Because that's what it is: a pointer + metadata<br>
<div class="im"><br>
> In MPX, the fat pointer never exists as a single entity.<br>
<br>
</div>The pointer and metadata exist in separate registers, but single instructions (loads and stores) operate on the pointer + metadata.<br></blockquote><div>Which MPX instructions do you mean here?  </div><div><br></div>
<div>--kcc </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<span class=""><font color="#888888"><br>
David<br>
<br>
</font></span></blockquote></div><br></div></div>