<html>
    <head>
      <base href="https://bugs.webkit.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Typed Arrays have no public facing API"
   href="https://bugs.webkit.org/show_bug.cgi?id=120112#c19">Comment # 19</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Typed Arrays have no public facing API"
   href="https://bugs.webkit.org/show_bug.cgi?id=120112">bug 120112</a>
              from <span class="vcard"><a class="email" href="mailto:ggaren&#64;apple.com" title="Geoffrey Garen &lt;ggaren&#64;apple.com&gt;"> <span class="fn">Geoffrey Garen</span></a>
</span></b>
        <pre><span class="quote">&gt; Referenced.  For example the &quot;keep&quot; argument could be interpreted as:
&gt; 
&gt; keep=true: we call the system free() on the original void* when we decide to
&gt; free the buffer.
&gt; 
&gt; keep=false: we don't free the original void* buffer when we free the array
&gt; buffer, and the only way that the client can be sure that we no longer want
&gt; the backing data is when they destroy the VM.</span >

These options don't seem very good to me in a general purpose API.

We can't assume that our client used malloc. They might have used new, mmap, objc_createInstance, or a custom allocator.

Requiring a valid pointer for the lifetime of the VM is a difficult model to program with. For example, we couldn't use that model in the browser, or in the audio processing context being discussed on webkit-dev.

<span class="quote">&gt; Having a free callback would be even better.</span >

This seems more reasonable to me.

It would be nice if we didn't have to reinvent a generic API for &quot;referenced counted data pointer&quot;. Perhaps we can write this API in terms of CFMutableDataRef and NSMutableData.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>