Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.glorb.com!border3.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!news.iecc.com!.POSTED!nerds-end From: Ivan Godard Newsgroups: comp.compilers Subject: Re: Safe Pointers at the Intermediate Language or Hardware Level Date: Wed, 12 Feb 2014 14:19:03 -0800 Organization: A noiseless patient Spider Lines: 28 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <14-02-013@comp.compilers> References: <14-02-012@comp.compilers> NNTP-Posting-Host: news.iecc.com Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: miucha.iecc.com 1392269220 99709 64.57.183.58 (13 Feb 2014 05:27:00 GMT) X-Complaints-To: abuse@iecc.com NNTP-Posting-Date: Thu, 13 Feb 2014 05:27:00 +0000 (UTC) Keywords: design, debug Posted-Date: 13 Feb 2014 00:27:00 EST X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:1092 On 2/11/2014 1:05 AM, Seima Rao wrote: >> A safe pointer (cap) is more than 64 bits, and people would refuse >> to repeat the pain of the 32- to 64-bit migration. And most >> programs violate safety (and language standards, but that's another >> issue), and it's hard to make a sale when the customers keep saying >> "It worked on Intel!". > > I have a proposal of my own although, I am not sure about the cons > and hence would like to discuss on this forum. > > > i) All pointers have the same type called pointer_t. > > ii) A pointer_t contains the address of a struct whose contents are > the information relevant to what the pointer is pointing to including > the type of the element. > > There are a lot of questions but the one I am worried about currently > is whether it is possible to have direct HW support. > > Sincerely, Seima Rao. You can do pretty much anything in hardware. However, the indirection through the descriptor doubles the latency cost of the dereference and increases cache demand. Also, keeping track of the type (and if the type in the descriptor is to be useful then you would need to decorate every value throughout with type information) is costly, especially as the number of possible types is unbounded.