On Sep 16, 2011, at 5:14 AM, Andreas Rossberg wrote:
> ...

> Consider writing a server. If I cannot rely on tail call optimization
> then writing its message loop as a recursive function (e.g. actors
> style) would be incorrect. If I cannot rely on GC, then allocating an
> object for each received message would be incorrect.

But at the extreme you can't rely on GC.  Any allocation may be the one that 
exhausts actual available storage or triggers a interminable GC thrashing of 
virtual memory.  In the real world these are quality of implementation issues 
that developers must deal with via load testing on real implementations.

> If I cannot rely
> on weak maps, then, say, mapping every message object to a return IP
> would be incorrect.

A WeakMap reliably maintains a mapping from an object to a value.  If you have 
access to an object key then you can rely upon a WeakMap preserving any 
mappings it has for that key.  What you can not rely upon is the timely 
recycling of any resources that are used to represent inaccessible WeakMap 
mappings.  This is the exact situation that exists for any ECMAScript dynamic 
allocation.  There are no guarantees in the ES spec. that resources allocated 
with an inaccessible object  will be freed in a timely manner or ever.  Given 
the state of the art of memory management isn't clear how you could make such 
guarantees without unreasonably limiting implementors.

Allen
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to