ArrayArrays
Edward Kmett
ekmett at gmail.com
Thu Aug 27 18:36:57 UTC 2015
On Thu, Aug 27, 2015 at 1:24 PM, Edward Z. Yang <ezyang at mit.edu> wrote:
> It seems to me that we should take a page from OCaml's playbook
> and add support for native mutable fields in objects, because
> this is essentially what a mix of words and pointers is.
>
That actually doesn't work as well as one might hope.
We currently treat data constructor closures as so much tissue paper around
a present. We tear them open, rip out all their contents, scatter them
throughout our code and then we build a whole new data constructor closure
when we're done, or we just leave them suspended in closures awaiting
someone to demand we finally make a new data constructor.
Half the time we don't even give back the data constructor closure and push
it into update g frames and we just give back the items on the stack.
With the machinery I mentioned above I get a world where every time I
access an object I can know it is evaluated for real, so this means I'm not
stuck 'entering an unknown closure', and getting it to give me back a slab
of memory that we know is a real data constructor that i can bang away on
mutable entries in.
In a world where things in * could hold mutable pointers we have to care a
lot more about object identity in deeply uncomfortable ways.
With what I've implemented I only care about object identity between things
in # that are gcptrs. The garbage collector may move them around, but it
doesn't put in thunks anywhere.
-Edward
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20150827/36c243b5/attachment.html>
More information about the ghc-devs
mailing list