<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Glad to hear it. &nbsp;That's the direction I was hoping for.<div><br></div><div>-F</div><div><br></div><div><br><div><div>On Aug 14, 2013, at 12:34 AM, Dmitry Lomov &lt;<a href="mailto:dslomov@chromium.org">dslomov@chromium.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div dir="ltr">For in the upcoming ES6 standard a decision has been made that Uint8ClampedArray will not inherit from Uint8Array.<div>Latest Khronos spec reflects that as well.</div><div><br></div><div>In Chrome M30 we have updated this, so our implementation matches the spec and what Firefox did.</div><div><br></div><div>Regards,</div><div>Dmitry</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Aug 14, 2013 at 9:31 AM, Jochen Eisinger<span class="Apple-converted-space">&nbsp;</span><span dir="ltr">&lt;<a href="mailto:jochen@chromium.org" target="_blank">jochen@chromium.org</a>&gt;</span><span class="Apple-converted-space">&nbsp;</span>wrote:<br><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div dir="ltr">Adding Dmitry who recently updated the V8/blink implementation.<div><br></div><div>-jochen</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Aug 14, 2013 at 9:19 AM, Filip Pizlo<span class="Apple-converted-space">&nbsp;</span><span dir="ltr">&lt;<a href="mailto:fpizlo@apple.com" target="_blank">fpizlo@apple.com</a>&gt;</span><span class="Apple-converted-space">&nbsp;</span>wrote:<br><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div style="word-wrap: break-word;"><div>What WebKit previously did: Uint8ClampedArray is a subtype of Uint8Array, i.e. Uint8ClampedArray.prototype.__proto__ === Uint8Array.prototype.</div><div><br></div><div>I believe that Chrome still does what WebKit does.</div><div><br></div><div>What Firefox does: Uint8ClampedArray is not a subtype of Uint8Array, i.e. Uint8ClampedArray.prototype.__proto__ === Object.prototype.</div><div><br></div><div>What&nbsp;<a href="http://www.khronos.org/registry/typedarray/specs/latest/" target="_blank">http://www.khronos.org/registry/typedarray/specs/latest/</a><span class="Apple-converted-space">&nbsp;</span>says: Uint8ClampedArray implements ArrayBufferView; but that says nothing about its subtype relationship, or lack thereof, with Uint8Array.</div><div><br></div><div>I prefer the Firefox semantics. &nbsp;Any objections?</div><div><br></div><div>-Filip</div><div><br></div><br><div><div>On Aug 13, 2013, at 11:19 AM, Filip Pizlo &lt;<a href="mailto:fpizlo@apple.com" target="_blank">fpizlo@apple.com</a>&gt; wrote:</div><br><blockquote type="cite"><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; word-wrap: break-word;"><div>Hi everyone!</div><div><br></div>For the past week or so I've been working on making typed arrays faster, use less memory, and GC better. &nbsp;It involves moving typed arrays entirely into JSC, and rewriting them so that they benefit from JSC object model optimizations.<br><br>Link:&nbsp;<a href="https://bugs.webkit.org/show_bug.cgi?id=119064" target="_blank">https://bugs.webkit.org/show_bug.cgi?id=119064</a><br><br>The short story is, if you're not on the Mac port, then I'll try to do my best to make things work but I'm probably going to make some mistakes. &nbsp;I'm probably about 48 hours away from landing this and I'll try to make myself available to fix any fall-out. &nbsp;The things I'm most likely to get wrong are: ensuring that the various code generators work on all build systems; ensuring that the ~20-some files I've added and the ~20-sime files I've deleted, are actually added/deleted correctly on all builds; and making sure that some of the crazy template hacks that I've used work on all compilers.<br><br>Why this is all worth it:<br><br>It makes typed arrays faster: you can now allocate typed arrays up to 8x faster if they're small, and up to 6x faster if they're big. &nbsp;Neutering no longer requires walking all worlds. Wrapping and unwrapping an array buffer no longer requires hash look-ups for the normal world. &nbsp;And some other stuff, too.<br><br>It makes typed arrays use less memory: previously a typed array could use as many as 7 objects for each allocation; at best you'd get 5 (JS array buffer view wrapper, native array buffer view wrapper, weak handle to link the two, native array buffer, native array buffer contents). &nbsp;Now, it takes just 2 objects in the common case (JS array buffer view and a copy-space backing store) and 3 in the case of large ones (JS array buffer view, weak handle for a finalizer, and a malloc'd backing store). &nbsp;You'll still get all of the crazy objects - at most 6 of them - if you use the full power of typed array APIs. &nbsp;With all of this in place, a typed array carries only 32 bytes of overhead on 64-bit systems and 20 bytes of overhead on 32-bit systems. &nbsp;It was *a lot* more than that before.<br><br>It makes typed arrays manage memory properly: previously the GC didn't know that typed arrays use memory. &nbsp;So, although the GC could free the memory that typed arrays used, it wouldn't kick in properly in some cases. &nbsp;See&nbsp;<a href="https://bugs.webkit.org/show_bug.cgi?id=119049" target="_blank">https://bugs.webkit.org/show_bug.cgi?id=119049</a>&nbsp;and&nbsp;<a href="https://bugs.webkit.org/show_bug.cgi?id=114824" target="_blank">https://bugs.webkit.org/show_bug.cgi?id=114824</a>. &nbsp;This patch fixes these issues comprehensively.<br><br>It makes the code more hackable: previously any attempt to optimize any typed array hack required grappling with binding code generation, layering violations that exposed the typed arrays to JSC JITs despite not being defined in JSC, and a grab-back of helper code that the bindings magically invoked. &nbsp;There was a lot of duplicated code to deal with the various types of typed arrays. &nbsp;Now, typed arrays are all templatized; you usually only write a piece of code once thanks to the wonders of template polymorphism.<br><br>This also fixes a bunch of semantics issues, with how typed array fields work in JS and when/where exceptions ought to be thrown. &nbsp;In this regard, I'm basically attempting to match Firefox behavior since that's where the standards appear to be going.<br><br>I hope that I get all of this to work on all platforms on the first try. &nbsp;If I don't, I apologize in advance, and I'll try to be around to help the fall-out.<br><br>-Filip_______________________________________________<br>webkit-dev mailing list<br><a href="mailto:webkit-dev@lists.webkit.org" target="_blank">webkit-dev@lists.webkit.org</a><br><a href="https://lists.webkit.org/mailman/listinfo/webkit-dev" target="_blank">https://lists.webkit.org/mailman/listinfo/webkit-dev</a></div></blockquote></div><br></div><br>_______________________________________________<br>webkit-dev mailing list<br><a href="mailto:webkit-dev@lists.webkit.org" target="_blank">webkit-dev@lists.webkit.org</a><br><a href="https://lists.webkit.org/mailman/listinfo/webkit-dev" target="_blank">https://lists.webkit.org/mailman/listinfo/webkit-dev</a></blockquote></div></div></blockquote></div></div></div></blockquote></div><br></div></body></html>