When passing a packed array element as a function argument, pass an element proxy instead. This allows proxy hoisting to operate on loops and make things *much* faster. The proxy is also much lighter-weight (GC wise) than an actual unpacked element.
When passing the result of a pointer dereference to a function, pass an element proxy instead. The pointer will cache a single reusable proxy instance, which reduces GC pressure and defers unpacking inside loops.
Update spidermonkey builds
Fix a spidermonkey bailout in StructPointer.getProxy
Unroll small memcpy loops in struct marshal/unmarshal functions
Make the element proxy optimizations optional and turn them off by default.