null allowing @safe code to do unsafe stuff.

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sun Mar 18 10:00:58 PDT 2012


On 3/18/12 11:18 AM, Michel Fortin wrote:
> On 2012-03-18 15:53:42 +0000, deadalnix <deadalnix at gmail.com> said:
>
>> Le 18/03/2012 16:30, Andrei Alexandrescu a écrit :
>>> On 3/18/12 10:19 AM, Timon Gehr wrote:
>>>> No null checks are necessary as long as there is no class that would
>>>> create such a very large object.
>>>
>>> Yah, we need to insert a rule that prevents creating class objects
>>> larger than 64KB. Java has the same.
>>>
>>> Andrei
>>
>> This is another solution. In this case, we have to ensure that the
>> first 64kb of the system are page protected to detect null pointer
>> deference in druntime.
>
> On Mac OS X, the protected area is much smaller. 4 Kb I think on Snow
> Leopard 32-bit.

I realized I was mistaken. Just looked at 
http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html#88659 
and it seems the number of fields added by a class is limited to 64K, 
but that's fields not bytes and does not count the fields of the base class.

In order to be safe, a D implementation must figure what is the 
protected area size and insert null checks for all fields accesses that 
go beyond that.


Andrei


More information about the Digitalmars-d mailing list