Bug 119064

Summary: Typed arrays should be rewritten
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: alecflett, amit, ararunprasad, arurajku, barraclough, benjamin, buildbot, cdumez, cmarcelo, commit-queue, dino, dominic.szablewski, eflews.bot, eric.carlson, esprehn+autocc, ggaren, glenn, gtk-ews, gyuyoung.kim, jer.noble, jsbell, kondapallykalyan, landry, mark.lam, mhahnenberg, msaboff, nick.diego, oliver, philn, rakuco, rego+ews, rgabor, rniwa, sam, syoichi, webkit-ews, webkit, xan.lopez, zan
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Bug Depends on: 119065, 119422, 119470, 119471, 119489, 119770    
Bug Blocks:    
Attachments:
Description Flags
it begins
none
more
none
slowly but surely...
none
more!
none
ugh so much code
none
more
none
slowly...
none
more!
none
finished the adaptors
none
more
none
more!!
none
more
none
omg
none
more!!
none
lol so much code
none
constructors are done
none
prototypes are done
none
prototypes are really done
none
global object glue is done
none
rebased
none
started the jit crazy
none
almost done
none
getting there
none
starting to build
none
jsc debug builds
none
starting to pass tests
none
jsc works
none
WebCore is starting to build
none
getting close
none
WebCore almost links
none
i can build WebKit debug on Mac
none
builds on mac
none
starting to pass layouttests
none
and now, passing more tests than ever!
oliver: review+, webkit-ews: commit-queue-
Required changes for the Automake build
none
I think all tests pass, started to work on other build systems
none
almost patch for landing
none
basically patch for landing
none
rebased
webkit-ews: commit-queue-
another rebase and more qt fixes webkit-ews: commit-queue-

Description Filip Pizlo 2013-07-24 14:50:33 PDT
Goals:

- Most of them should be GC-allocated

- GC should know about how much memory they use.

- They should use as little memory as possible.

- Most manipulations to them should be fast.

- It should be easy for the DFG profiling to figure out which ones you're using and how to type-check them.
Comment 1 Filip Pizlo 2013-07-24 14:55:47 PDT
*** Bug 119049 has been marked as a duplicate of this bug. ***
Comment 2 Filip Pizlo 2013-07-24 14:55:52 PDT
*** Bug 114824 has been marked as a duplicate of this bug. ***
Comment 3 Filip Pizlo 2013-07-24 14:59:28 PDT
Created attachment 207415 [details]
it begins

This just mostly has comments for now, but it describes the general direction that I want to go.
Comment 4 Filip Pizlo 2013-07-25 16:35:17 PDT
Created attachment 207493 [details]
more

The design of the view is starting to crystalize.
Comment 5 Filip Pizlo 2013-08-01 20:17:41 PDT
Created attachment 207977 [details]
slowly but surely...
Comment 6 Filip Pizlo 2013-08-02 11:43:56 PDT
Created attachment 208037 [details]
more!
Comment 7 Amit Kapadia 2013-08-02 11:56:02 PDT
Nice! Thanks for working on this.  Out of curiosity, WTF namespace?
Comment 8 Filip Pizlo 2013-08-02 12:57:00 PDT
(In reply to comment #7)
> Nice! Thanks for working on this.  Out of curiosity, WTF namespace?

What about it?
Comment 9 Filip Pizlo 2013-08-02 15:21:49 PDT
Created attachment 208049 [details]
ugh so much code
Comment 10 Oliver Hunt 2013-08-02 16:40:49 PDT
Comment on attachment 208049 [details]
ugh so much code

I wonder if it's worth moving the implementations from WTF to JSC in advance just to cut down on the patch size?  Also wonder if it's worth bring DeferrableRefCounted and GCIncomingRefCounted in early as well
Comment 11 Filip Pizlo 2013-08-02 23:16:34 PDT
(In reply to comment #10)
> (From update of attachment 208049 [details])
> I wonder if it's worth moving the implementations from WTF to JSC in advance just to cut down on the patch size?  Also wonder if it's worth bring DeferrableRefCounted and GCIncomingRefCounted in early as well

Want to do me a solid and move the array stuff into JSC/runtime? :-)

Then I'll just rebase against that.  I have my hands *so full* with just writing this stuffs.
Comment 12 Filip Pizlo 2013-08-02 23:17:42 PDT
Created attachment 208056 [details]
more
Comment 13 Filip Pizlo 2013-08-03 11:27:35 PDT
Created attachment 208067 [details]
slowly...

The *WORST* part of this is that the typed array spec doesn't appear to be precise enough about what happens on things like DefineOwnProperty and friends.  So, my current goal is to match Firefox.  I don't want to match what Chrome does or what WebKit used to do, because I'm pretty sure what we had in our IDL and the like was devised by something resembling a random walk through the semantics universe.
Comment 14 Filip Pizlo 2013-08-03 23:35:22 PDT
Created attachment 208078 [details]
more!
Comment 15 Filip Pizlo 2013-08-04 12:06:16 PDT
Created attachment 208097 [details]
finished the adaptors
Comment 16 Filip Pizlo 2013-08-04 21:11:59 PDT
Created attachment 208108 [details]
more

I think I'm going to go all-out with template specialization on this.
Comment 17 Filip Pizlo 2013-08-05 14:21:53 PDT
Created attachment 208145 [details]
more!!
Comment 18 Filip Pizlo 2013-08-06 15:38:59 PDT
Created attachment 208221 [details]
more
Comment 19 Filip Pizlo 2013-08-06 20:32:01 PDT
Created attachment 208234 [details]
omg
Comment 20 Filip Pizlo 2013-08-07 10:34:52 PDT
Created attachment 208281 [details]
more!!

- Got the native DataView in place.  Note that nobody in JSC or WebCore ever talks to native DataViews other than using them as a placeholder subclass of ArrayBufferView if you ask a JSArrayBufferView for its impl, so our native DataView can be super simple and all of the actual DataView functionality will ultimately be in JSDataViewPrototype.

- Started to get prototypes and constructors in place.  This is all boilerplate, but I think it'll be valuable to *not* use code generators for most of it.  It's simple stuff, but only after you actually read the code; hence, being able to read the code is super important.
Comment 21 Filip Pizlo 2013-08-08 12:12:07 PDT
Created attachment 208361 [details]
lol so much code
Comment 22 Filip Pizlo 2013-08-08 17:38:29 PDT
Created attachment 208383 [details]
constructors are done
Comment 23 Filip Pizlo 2013-08-09 12:05:51 PDT
Created attachment 208446 [details]
prototypes are done

I think that all of the prototypes are implemented.

Here's what's left:

- Glue it all together on the JSC side, i.e. have JSGlobalObject actually create and install all constructors and prototypes.
- Modify JITs to use OBJECT_OFFSETOF instead of the descriptors.
- Switch WebCore to using the new things.  Most of this should be easy, except for implementing the WebCoreTypedArrayController.
- Delete all of the old implementations.
Comment 24 Filip Pizlo 2013-08-09 13:19:49 PDT
Created attachment 208450 [details]
prototypes are really done

Forgot about JSArrayBufferPrototype/Constructor.
Comment 25 Oliver Hunt 2013-08-09 13:45:16 PDT
Comment on attachment 208450 [details]
prototypes are really done

View in context: https://bugs.webkit.org/attachment.cgi?id=208450&action=review

I'm a little worried about the various unchecked arithmetic leading to buffer offsets and sizes

> Source/JavaScriptCore/runtime/ArrayBufferView.h:2
> +/*
> + * Copyright (C) 2009, 2013 Apple Inc. All rights reserved.

Can you remove ArrayBufferView, etc as they're in JSC/runtime already, and are inflating the patch size

> Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h:55
> +    memcpy(result->data(), array, length * sizeof(Adaptor::Type));

overflow?

> Source/JavaScriptCore/runtime/JSArrayBufferView.cpp:45
> +        size_t size = sizeOf(length, elementSize);

overflow

> Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h:65
> +    if (JSArrayBuffer* jsBuffer = jsDynamicCast<JSArrayBuffer*>(exec->argument(0))jsBuffer) {

tyop?

> Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h:81
> +        return JSValue::encode(ViewClass::create(exec->vm(), structure, buffer, offset, length));

check if offset and offset+length are in 0..byteLength? and offset+length > offset.  I'd actually just recommend making offset and length Checked<unsigned> as that means you won't have to worry about overflows

> Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h:101
> +        if (!result->set(exec, object, offset, length))

and again
Comment 26 Filip Pizlo 2013-08-09 14:30:08 PDT
Created attachment 208454 [details]
global object glue is done

Also got rid of ArrayBufferViewConstructor/Prototype because it turns out that Firefox has no such things.
Comment 27 Filip Pizlo 2013-08-09 14:37:35 PDT
(In reply to comment #25)
> (From update of attachment 208450 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=208450&action=review
> 
> I'm a little worried about the various unchecked arithmetic leading to buffer offsets and sizes

I'm not sure we have overflow problems; comments below.

> 
> > Source/JavaScriptCore/runtime/ArrayBufferView.h:2
> > +/*
> > + * Copyright (C) 2009, 2013 Apple Inc. All rights reserved.
> 
> Can you remove ArrayBufferView, etc as they're in JSC/runtime already, and are inflating the patch size

I will, once I get a chance to rebase.

> 
> > Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h:55
> > +    memcpy(result->data(), array, length * sizeof(Adaptor::Type));
> 
> overflow?

Nope.  sizeof() returns size_t, and length is unsigned. Hence:

On 32-bit: if length was so big that length * sizeof(type) would overflow, then the allocation would fail.  All user-visible allocation paths have checks for this.

On 64-bit: you can't overflow a 64-bit multiplication 'a * b' if a is at most 2^32 and b is at most 8.

> 
> > Source/JavaScriptCore/runtime/JSArrayBufferView.cpp:45
> > +        size_t size = sizeOf(length, elementSize);
> 
> overflow

Nope.  sizeOf() correctly casts up to size_t.

> 
> > Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h:65
> > +    if (JSArrayBuffer* jsBuffer = jsDynamicCast<JSArrayBuffer*>(exec->argument(0))jsBuffer) {
> 
> tyop?

Fixed.

> 
> > Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h:81
> > +        return JSValue::encode(ViewClass::create(exec->vm(), structure, buffer, offset, length));
> 
> check if offset and offset+length are in 0..byteLength? and offset+length > offset.  I'd actually just recommend making offset and length Checked<unsigned> as that means you won't have to worry about overflows

Why?  ViewClass::create() does verifySubRange() and will throw the appropriate exceptions.

> 
> > Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h:101
> > +        if (!result->set(exec, object, offset, length))
> 
> and again

Why?  ViewClass::set() does validateSet() and will throw the appropriate exceptions.

Bottom line, I'm strongly opposed to adding code noise everywhere to do redundant overflow checks that are already being performed, or that are totally unnecessary.
Comment 28 Filip Pizlo 2013-08-09 22:41:59 PDT
Created attachment 208473 [details]
rebased
Comment 29 Filip Pizlo 2013-08-09 22:58:34 PDT
Created attachment 208474 [details]
started the jit crazy
Comment 30 Filip Pizlo 2013-08-10 10:57:08 PDT
Created attachment 208477 [details]
almost done

JIT crazy is done.  Xcode build system files are almost set up.
Comment 31 Filip Pizlo 2013-08-10 11:06:42 PDT
Created attachment 208478 [details]
getting there
Comment 32 Filip Pizlo 2013-08-10 14:45:34 PDT
Created attachment 208482 [details]
starting to build
Comment 33 Filip Pizlo 2013-08-10 16:59:57 PDT
Created attachment 208483 [details]
jsc debug builds
Comment 34 Filip Pizlo 2013-08-10 17:21:07 PDT
Created attachment 208484 [details]
starting to pass tests
Comment 35 Filip Pizlo 2013-08-10 17:21:59 PDT
Note, there is still a lot of WebCore carnage that will need to happen.  This currently just works in a JSC-only build.

I'll get the the WebCore side once I feel more confident that this actually works at all.
Comment 36 Filip Pizlo 2013-08-10 18:52:18 PDT
Created attachment 208485 [details]
jsc works

Wrote a bunch of tests for various typed array thingies.  It appears to all work like a charm.

Now starting work on WebCore.
Comment 37 Filip Pizlo 2013-08-12 13:42:33 PDT
Created attachment 208557 [details]
WebCore is starting to build
Comment 38 Filip Pizlo 2013-08-12 17:46:33 PDT
Created attachment 208577 [details]
getting close

Made a bunch of WebCore changes to get it to build.  Not yet building though.  Still more to do.
Comment 39 Oliver Hunt 2013-08-12 18:07:02 PDT
Comment on attachment 208577 [details]
getting close

View in context: https://bugs.webkit.org/attachment.cgi?id=208577&action=review

This is looking really good.  I do prefer the get<> logic

> Source/JavaScriptCore/ChangeLog:44
> +          wak handle (a cell and a malloc'd storage vector, plus a finalizer for the

wak? weak? wack?

> Source/JavaScriptCore/ChangeLog:50
> +        - Typed arrays require just 4 words of overhead: Structure*, Butterfly*,
> +          mode/length, void* vector. Before it was a lot more than that - remember,
> +          there were five additional objects that did absolutely nothing for anybody.

nice
Comment 40 Filip Pizlo 2013-08-12 21:44:56 PDT
Created attachment 208592 [details]
WebCore almost links
Comment 41 Filip Pizlo 2013-08-12 22:56:31 PDT
Created attachment 208594 [details]
i can build WebKit debug on Mac
Comment 42 Filip Pizlo 2013-08-12 23:25:38 PDT
Created attachment 208596 [details]
builds on mac

Release now builds, too.
Comment 43 WebKit Commit Bot 2013-08-12 23:27:53 PDT
Attachment 208596 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/DerivedSources.make', u'Source/JavaScriptCore/JSCTypedArrayStubs.h', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/bytecode/ByValInfo.h', u'Source/JavaScriptCore/bytecode/SpeculatedType.cpp', u'Source/JavaScriptCore/dfg/DFGArrayMode.cpp', u'Source/JavaScriptCore/dfg/DFGArrayMode.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp', u'Source/JavaScriptCore/heap/CopyToken.h', u'Source/JavaScriptCore/heap/DeferGC.h', u'Source/JavaScriptCore/heap/GCIncomingRefCounted.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedInlines.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedSet.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedSetInlines.h', u'Source/JavaScriptCore/heap/Heap.cpp', u'Source/JavaScriptCore/heap/Heap.h', u'Source/JavaScriptCore/interpreter/CallFrame.h', u'Source/JavaScriptCore/jit/JIT.h', u'Source/JavaScriptCore/jit/JITPropertyAccess.cpp', u'Source/JavaScriptCore/jsc.cpp', u'Source/JavaScriptCore/runtime/ArrayBuffer.cpp', u'Source/JavaScriptCore/runtime/ArrayBuffer.h', u'Source/JavaScriptCore/runtime/ArrayBufferView.cpp', u'Source/JavaScriptCore/runtime/ArrayBufferView.h', u'Source/JavaScriptCore/runtime/ClassInfo.h', u'Source/JavaScriptCore/runtime/CommonIdentifiers.h', u'Source/JavaScriptCore/runtime/DataView.cpp', u'Source/JavaScriptCore/runtime/DataView.h', u'Source/JavaScriptCore/runtime/Float32Array.h', u'Source/JavaScriptCore/runtime/Float64Array.h', u'Source/JavaScriptCore/runtime/GenericTypedArrayView.h', u'Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h', u'Source/JavaScriptCore/runtime/IndexingHeader.h', u'Source/JavaScriptCore/runtime/Int16Array.h', u'Source/JavaScriptCore/runtime/Int32Array.h', u'Source/JavaScriptCore/runtime/Int8Array.h', u'Source/JavaScriptCore/runtime/JSArrayBuffer.cpp', u'Source/JavaScriptCore/runtime/JSArrayBuffer.h', u'Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferConstructor.h', u'Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferPrototype.h', u'Source/JavaScriptCore/runtime/JSArrayBufferView.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferView.h', u'Source/JavaScriptCore/runtime/JSArrayBufferViewInlines.h', u'Source/JavaScriptCore/runtime/JSCell.cpp', u'Source/JavaScriptCore/runtime/JSCell.h', u'Source/JavaScriptCore/runtime/JSDataView.cpp', u'Source/JavaScriptCore/runtime/JSDataView.h', u'Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp', u'Source/JavaScriptCore/runtime/JSDataViewPrototype.h', u'Source/JavaScriptCore/runtime/JSFloat32Array.h', u'Source/JavaScriptCore/runtime/JSFloat64Array.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructor.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototype.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h', u'Source/JavaScriptCore/runtime/JSGlobalObject.cpp', u'Source/JavaScriptCore/runtime/JSGlobalObject.h', u'Source/JavaScriptCore/runtime/JSInt16Array.h', u'Source/JavaScriptCore/runtime/JSInt32Array.h', u'Source/JavaScriptCore/runtime/JSInt8Array.h', u'Source/JavaScriptCore/runtime/JSTypedArrayConstructors.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrayConstructors.h', u'Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.h', u'Source/JavaScriptCore/runtime/JSTypedArrays.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrays.h', u'Source/JavaScriptCore/runtime/JSUint16Array.h', u'Source/JavaScriptCore/runtime/JSUint32Array.h', u'Source/JavaScriptCore/runtime/JSUint8Array.h', u'Source/JavaScriptCore/runtime/JSUint8ClampedArray.h', u'Source/JavaScriptCore/runtime/Operations.h', u'Source/JavaScriptCore/runtime/SimpleTypedArrayController.cpp', u'Source/JavaScriptCore/runtime/SimpleTypedArrayController.h', u'Source/JavaScriptCore/runtime/Structure.h', u'Source/JavaScriptCore/runtime/StructureInlines.h', u'Source/JavaScriptCore/runtime/TypedArrayAdaptors.h', u'Source/JavaScriptCore/runtime/TypedArrayController.cpp', u'Source/JavaScriptCore/runtime/TypedArrayController.h', u'Source/JavaScriptCore/runtime/TypedArrayDescriptor.h', u'Source/JavaScriptCore/runtime/TypedArrayInlines.h', u'Source/JavaScriptCore/runtime/TypedArrayType.cpp', u'Source/JavaScriptCore/runtime/TypedArrayType.h', u'Source/JavaScriptCore/runtime/TypedArrays.h', u'Source/JavaScriptCore/runtime/Uint16Array.h', u'Source/JavaScriptCore/runtime/Uint32Array.h', u'Source/JavaScriptCore/runtime/Uint8Array.h', u'Source/JavaScriptCore/runtime/Uint8ClampedArray.h', u'Source/JavaScriptCore/runtime/VM.cpp', u'Source/JavaScriptCore/runtime/VM.h', u'Source/WTF/ChangeLog', u'Source/WTF/WTF.xcodeproj/project.pbxproj', u'Source/WTF/wtf/DeferrableRefCounted.h', u'Source/WTF/wtf/FlipBytes.h', u'Source/WebCore/ChangeLog', u'Source/WebCore/DerivedSources.make', u'Source/WebCore/ForwardingHeaders/runtime/DataView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSArrayBuffer.h', u'Source/WebCore/ForwardingHeaders/runtime/JSArrayBufferView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSDataView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSTypedArrays.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrayController.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrayInlines.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrays.h', u'Source/WebCore/Modules/webaudio/RealtimeAnalyser.h', u'Source/WebCore/WebCore.exp.in', u'Source/WebCore/WebCore.xcodeproj/project.pbxproj', u'Source/WebCore/bindings/js/DOMWrapperWorld.h', u'Source/WebCore/bindings/js/JSArrayBufferCustom.cpp', u'Source/WebCore/bindings/js/JSArrayBufferViewHelper.h', u'Source/WebCore/bindings/js/JSAudioContextCustom.cpp', u'Source/WebCore/bindings/js/JSBlobCustom.cpp', u'Source/WebCore/bindings/js/JSCSSRuleCustom.cpp', u'Source/WebCore/bindings/js/JSCSSValueCustom.cpp', u'Source/WebCore/bindings/js/JSCryptoCustom.cpp', u'Source/WebCore/bindings/js/JSDOMBinding.h', u'Source/WebCore/bindings/js/JSDataViewCustom.cpp', u'Source/WebCore/bindings/js/JSDictionary.cpp', u'Source/WebCore/bindings/js/JSDictionary.h', u'Source/WebCore/bindings/js/JSDocumentCustom.cpp', u'Source/WebCore/bindings/js/JSEventCustom.cpp', u'Source/WebCore/bindings/js/JSFileReaderCustom.cpp', u'Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp', u'Source/WebCore/bindings/js/JSImageDataCustom.cpp', u'Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp', u'Source/WebCore/bindings/js/JSMessageEventCustom.cpp', u'Source/WebCore/bindings/js/JSMessagePortCustom.cpp', u'Source/WebCore/bindings/js/JSSVGPathSegCustom.cpp', u'Source/WebCore/bindings/js/JSStyleSheetCustom.cpp', u'Source/WebCore/bindings/js/JSTrackCustom.cpp', u'Source/WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp', u'Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp', u'Source/WebCore/bindings/js/SerializedScriptValue.cpp', u'Source/WebCore/bindings/js/WebCoreJSClientData.h', u'Source/WebCore/bindings/js/WebCoreTypedArrayController.cpp', u'Source/WebCore/bindings/js/WebCoreTypedArrayController.h', u'Source/WebCore/bindings/scripts/CodeGenerator.pm', u'Source/WebCore/bindings/scripts/CodeGeneratorJS.pm', u'Source/WebCore/fileapi/WebKitBlobBuilder.cpp', u'Source/WebCore/fileapi/WebKitBlobBuilder.h', u'Source/WebCore/html/canvas/ArrayBuffer.idl', u'Source/WebCore/html/canvas/ArrayBufferView.idl', u'Source/WebCore/html/canvas/DataView.cpp', u'Source/WebCore/html/canvas/DataView.h', u'Source/WebCore/html/canvas/DataView.idl', u'Source/WebCore/html/canvas/Float32Array.idl', u'Source/WebCore/html/canvas/Float64Array.idl', u'Source/WebCore/html/canvas/Int16Array.idl', u'Source/WebCore/html/canvas/Int32Array.idl', u'Source/WebCore/html/canvas/Int8Array.idl', u'Source/WebCore/html/canvas/Uint16Array.idl', u'Source/WebCore/html/canvas/Uint32Array.idl', u'Source/WebCore/html/canvas/Uint8Array.idl', u'Source/WebCore/html/canvas/Uint8ClampedArray.idl', u'Source/WebCore/html/canvas/WebGLRenderingContext.cpp', u'Source/WebCore/page/Crypto.cpp', u'Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm', u'Source/WebCore/platform/graphics/filters/FECustomFilter.h', u'Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp', u'Source/WebCore/platform/graphics/filters/FilterEffect.cpp', u'Source/WebCore/testing/MockCDM.cpp', u'Source/WebKit2/ChangeLog', u'Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp']" exit_code: 1
Source/JavaScriptCore/runtime/TypedArrayType.h:91:  The parameter name "type" adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h:195:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/TypedArrayType.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/TypedArrayController.h:43:  The parameter name "exec" adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/WebCoreTypedArrayController.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/Structure.h:237:  The parameter name "cell" adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSTypedArrays.cpp:38:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/ArrayBufferView.h:44:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/runtime/ArrayBufferView.h:84:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/runtime/ArrayBufferView.h:85:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/runtime/ArrayBufferView.h:101:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/runtime/ArrayBufferView.h:111:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/runtime/ArrayBufferView.h:117:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/runtime/ArrayBufferView.h:118:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/runtime/ArrayBufferView.h:119:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/runtime/ArrayBufferView.h:139:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/runtime/ArrayBufferView.h:187:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/runtime/JSTypedArrayConstructors.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSGlobalObject.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/GenericTypedArrayView.h:37:  The parameter name "buffer" adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp:251:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/heap/Heap.h:186:  The parameter name "cell" adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/heap/Heap.h:186:  The parameter name "buffer" adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSGlobalObject.cpp:69:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/DataView.h:37:  The parameter name "buffer" adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/js/JSAudioContextCustom.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 147 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 44 Early Warning System Bot 2013-08-12 23:35:46 PDT
Comment on attachment 208596 [details]
builds on mac

Attachment 208596 [details] did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1452346
Comment 45 Early Warning System Bot 2013-08-12 23:36:17 PDT
Comment on attachment 208596 [details]
builds on mac

Attachment 208596 [details] did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1447513
Comment 46 kov's GTK+ EWS bot 2013-08-12 23:38:03 PDT
Comment on attachment 208596 [details]
builds on mac

Attachment 208596 [details] did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1452347
Comment 47 EFL EWS Bot 2013-08-12 23:38:30 PDT
Comment on attachment 208596 [details]
builds on mac

Attachment 208596 [details] did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1447515
Comment 48 EFL EWS Bot 2013-08-12 23:52:45 PDT
Comment on attachment 208596 [details]
builds on mac

Attachment 208596 [details] did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1447514
Comment 49 Build Bot 2013-08-12 23:56:51 PDT
Comment on attachment 208596 [details]
builds on mac

Attachment 208596 [details] did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1451361
Comment 50 Filip Pizlo 2013-08-13 00:00:08 PDT
(In reply to comment #49)
> (From update of attachment 208596 [details])
> Attachment 208596 [details] did not pass mac-wk2-ews (mac-wk2):
> Output: http://webkit-queues.appspot.com/results/1451361

These failures look like the bot failed at dependency tracking.  An rm -rf WebKitBuild ought to do the trick. :-/
Comment 51 Filip Pizlo 2013-08-13 00:01:41 PDT
(In reply to comment #39)
> (From update of attachment 208577 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=208577&action=review
> 
> This is looking really good.  I do prefer the get<> logic
> 
> > Source/JavaScriptCore/ChangeLog:44
> > +          wak handle (a cell and a malloc'd storage vector, plus a finalizer for the
> 
> wak? weak? wack?

fixed this and a bunch of other typos.

> 
> > Source/JavaScriptCore/ChangeLog:50
> > +        - Typed arrays require just 4 words of overhead: Structure*, Butterfly*,
> > +          mode/length, void* vector. Before it was a lot more than that - remember,
> > +          there were five additional objects that did absolutely nothing for anybody.
> 
> nice
Comment 52 Build Bot 2013-08-13 14:23:15 PDT
Comment on attachment 208596 [details]
builds on mac

Attachment 208596 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1456555
Comment 53 Filip Pizlo 2013-08-13 23:05:41 PDT
Created attachment 208700 [details]
starting to pass layouttests
Comment 54 Filip Pizlo 2013-08-13 23:06:22 PDT
Comment on attachment 208700 [details]
starting to pass layouttests

Not ready for review.
Comment 55 WebKit Commit Bot 2013-08-13 23:08:50 PDT
Attachment 208700 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/fast/canvas/webgl/script-tests/arraybuffer-transfer-of-control.js', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/DerivedSources.make', u'Source/JavaScriptCore/JSCTypedArrayStubs.h', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/bytecode/ByValInfo.h', u'Source/JavaScriptCore/bytecode/SpeculatedType.cpp', u'Source/JavaScriptCore/dfg/DFGArrayMode.cpp', u'Source/JavaScriptCore/dfg/DFGArrayMode.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp', u'Source/JavaScriptCore/heap/CopyToken.h', u'Source/JavaScriptCore/heap/DeferGC.h', u'Source/JavaScriptCore/heap/GCIncomingRefCounted.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedInlines.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedSet.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedSetInlines.h', u'Source/JavaScriptCore/heap/Heap.cpp', u'Source/JavaScriptCore/heap/Heap.h', u'Source/JavaScriptCore/interpreter/CallFrame.h', u'Source/JavaScriptCore/jit/JIT.h', u'Source/JavaScriptCore/jit/JITPropertyAccess.cpp', u'Source/JavaScriptCore/jsc.cpp', u'Source/JavaScriptCore/runtime/ArrayBuffer.cpp', u'Source/JavaScriptCore/runtime/ArrayBuffer.h', u'Source/JavaScriptCore/runtime/ArrayBufferView.cpp', u'Source/JavaScriptCore/runtime/ArrayBufferView.h', u'Source/JavaScriptCore/runtime/ClassInfo.h', u'Source/JavaScriptCore/runtime/CommonIdentifiers.h', u'Source/JavaScriptCore/runtime/DataView.cpp', u'Source/JavaScriptCore/runtime/DataView.h', u'Source/JavaScriptCore/runtime/Float32Array.h', u'Source/JavaScriptCore/runtime/Float64Array.h', u'Source/JavaScriptCore/runtime/GenericTypedArrayView.h', u'Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h', u'Source/JavaScriptCore/runtime/IndexingHeader.h', u'Source/JavaScriptCore/runtime/Int16Array.h', u'Source/JavaScriptCore/runtime/Int32Array.h', u'Source/JavaScriptCore/runtime/Int8Array.h', u'Source/JavaScriptCore/runtime/JSArrayBuffer.cpp', u'Source/JavaScriptCore/runtime/JSArrayBuffer.h', u'Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferConstructor.h', u'Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferPrototype.h', u'Source/JavaScriptCore/runtime/JSArrayBufferView.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferView.h', u'Source/JavaScriptCore/runtime/JSArrayBufferViewInlines.h', u'Source/JavaScriptCore/runtime/JSCell.cpp', u'Source/JavaScriptCore/runtime/JSCell.h', u'Source/JavaScriptCore/runtime/JSDataView.cpp', u'Source/JavaScriptCore/runtime/JSDataView.h', u'Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp', u'Source/JavaScriptCore/runtime/JSDataViewPrototype.h', u'Source/JavaScriptCore/runtime/JSFloat32Array.h', u'Source/JavaScriptCore/runtime/JSFloat64Array.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructor.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototype.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h', u'Source/JavaScriptCore/runtime/JSGlobalObject.cpp', u'Source/JavaScriptCore/runtime/JSGlobalObject.h', u'Source/JavaScriptCore/runtime/JSInt16Array.h', u'Source/JavaScriptCore/runtime/JSInt32Array.h', u'Source/JavaScriptCore/runtime/JSInt8Array.h', u'Source/JavaScriptCore/runtime/JSTypedArrayConstructors.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrayConstructors.h', u'Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.h', u'Source/JavaScriptCore/runtime/JSTypedArrays.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrays.h', u'Source/JavaScriptCore/runtime/JSUint16Array.h', u'Source/JavaScriptCore/runtime/JSUint32Array.h', u'Source/JavaScriptCore/runtime/JSUint8Array.h', u'Source/JavaScriptCore/runtime/JSUint8ClampedArray.h', u'Source/JavaScriptCore/runtime/Operations.h', u'Source/JavaScriptCore/runtime/SimpleTypedArrayController.cpp', u'Source/JavaScriptCore/runtime/SimpleTypedArrayController.h', u'Source/JavaScriptCore/runtime/Structure.h', u'Source/JavaScriptCore/runtime/StructureInlines.h', u'Source/JavaScriptCore/runtime/TypedArrayAdaptors.h', u'Source/JavaScriptCore/runtime/TypedArrayController.cpp', u'Source/JavaScriptCore/runtime/TypedArrayController.h', u'Source/JavaScriptCore/runtime/TypedArrayDescriptor.h', u'Source/JavaScriptCore/runtime/TypedArrayInlines.h', u'Source/JavaScriptCore/runtime/TypedArrayType.cpp', u'Source/JavaScriptCore/runtime/TypedArrayType.h', u'Source/JavaScriptCore/runtime/TypedArrays.h', u'Source/JavaScriptCore/runtime/Uint16Array.h', u'Source/JavaScriptCore/runtime/Uint32Array.h', u'Source/JavaScriptCore/runtime/Uint8Array.h', u'Source/JavaScriptCore/runtime/Uint8ClampedArray.h', u'Source/JavaScriptCore/runtime/VM.cpp', u'Source/JavaScriptCore/runtime/VM.h', u'Source/WTF/ChangeLog', u'Source/WTF/WTF.xcodeproj/project.pbxproj', u'Source/WTF/wtf/DeferrableRefCounted.h', u'Source/WTF/wtf/FlipBytes.h', u'Source/WebCore/ChangeLog', u'Source/WebCore/DerivedSources.make', u'Source/WebCore/ForwardingHeaders/runtime/DataView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSArrayBuffer.h', u'Source/WebCore/ForwardingHeaders/runtime/JSArrayBufferView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSDataView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSTypedArrays.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrayController.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrayInlines.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrays.h', u'Source/WebCore/Modules/webaudio/RealtimeAnalyser.h', u'Source/WebCore/WebCore.exp.in', u'Source/WebCore/WebCore.xcodeproj/project.pbxproj', u'Source/WebCore/bindings/js/DOMWrapperWorld.h', u'Source/WebCore/bindings/js/JSArrayBufferCustom.cpp', u'Source/WebCore/bindings/js/JSArrayBufferViewHelper.h', u'Source/WebCore/bindings/js/JSAudioContextCustom.cpp', u'Source/WebCore/bindings/js/JSBlobCustom.cpp', u'Source/WebCore/bindings/js/JSCSSRuleCustom.cpp', u'Source/WebCore/bindings/js/JSCSSValueCustom.cpp', u'Source/WebCore/bindings/js/JSCryptoCustom.cpp', u'Source/WebCore/bindings/js/JSDOMBinding.h', u'Source/WebCore/bindings/js/JSDataViewCustom.cpp', u'Source/WebCore/bindings/js/JSDictionary.cpp', u'Source/WebCore/bindings/js/JSDictionary.h', u'Source/WebCore/bindings/js/JSDocumentCustom.cpp', u'Source/WebCore/bindings/js/JSEventCustom.cpp', u'Source/WebCore/bindings/js/JSFileReaderCustom.cpp', u'Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp', u'Source/WebCore/bindings/js/JSImageDataCustom.cpp', u'Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp', u'Source/WebCore/bindings/js/JSMessageEventCustom.cpp', u'Source/WebCore/bindings/js/JSMessagePortCustom.cpp', u'Source/WebCore/bindings/js/JSSVGPathSegCustom.cpp', u'Source/WebCore/bindings/js/JSStyleSheetCustom.cpp', u'Source/WebCore/bindings/js/JSTrackCustom.cpp', u'Source/WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp', u'Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp', u'Source/WebCore/bindings/js/SerializedScriptValue.cpp', u'Source/WebCore/bindings/js/WebCoreJSClientData.h', u'Source/WebCore/bindings/js/WebCoreTypedArrayController.cpp', u'Source/WebCore/bindings/js/WebCoreTypedArrayController.h', u'Source/WebCore/bindings/scripts/CodeGenerator.pm', u'Source/WebCore/bindings/scripts/CodeGeneratorJS.pm', u'Source/WebCore/fileapi/WebKitBlobBuilder.cpp', u'Source/WebCore/fileapi/WebKitBlobBuilder.h', u'Source/WebCore/html/canvas/ArrayBuffer.idl', u'Source/WebCore/html/canvas/ArrayBufferView.idl', u'Source/WebCore/html/canvas/DataView.cpp', u'Source/WebCore/html/canvas/DataView.h', u'Source/WebCore/html/canvas/DataView.idl', u'Source/WebCore/html/canvas/Float32Array.idl', u'Source/WebCore/html/canvas/Float64Array.idl', u'Source/WebCore/html/canvas/Int16Array.idl', u'Source/WebCore/html/canvas/Int32Array.idl', u'Source/WebCore/html/canvas/Int8Array.idl', u'Source/WebCore/html/canvas/Uint16Array.idl', u'Source/WebCore/html/canvas/Uint32Array.idl', u'Source/WebCore/html/canvas/Uint8Array.idl', u'Source/WebCore/html/canvas/Uint8ClampedArray.idl', u'Source/WebCore/html/canvas/WebGLRenderingContext.cpp', u'Source/WebCore/page/Crypto.cpp', u'Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm', u'Source/WebCore/platform/graphics/filters/FECustomFilter.h', u'Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp', u'Source/WebCore/platform/graphics/filters/FilterEffect.cpp', u'Source/WebCore/testing/MockCDM.cpp', u'Source/WebKit2/ChangeLog', u'Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp']" exit_code: 1
Source/JavaScriptCore/runtime/JSTypedArrays.cpp:38:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSGlobalObject.h:28:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp:251:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 148 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 56 Early Warning System Bot 2013-08-13 23:15:08 PDT
Comment on attachment 208700 [details]
starting to pass layouttests

Attachment 208700 [details] did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1455688
Comment 57 Early Warning System Bot 2013-08-13 23:17:38 PDT
Comment on attachment 208700 [details]
starting to pass layouttests

Attachment 208700 [details] did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1457737
Comment 58 kov's GTK+ EWS bot 2013-08-13 23:20:17 PDT
Comment on attachment 208700 [details]
starting to pass layouttests

Attachment 208700 [details] did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1458622
Comment 59 EFL EWS Bot 2013-08-13 23:22:38 PDT
Comment on attachment 208700 [details]
starting to pass layouttests

Attachment 208700 [details] did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1457740
Comment 60 Build Bot 2013-08-13 23:35:45 PDT
Comment on attachment 208700 [details]
starting to pass layouttests

Attachment 208700 [details] did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1447913
Comment 61 EFL EWS Bot 2013-08-13 23:41:16 PDT
Comment on attachment 208700 [details]
starting to pass layouttests

Attachment 208700 [details] did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1448817
Comment 62 Build Bot 2013-08-13 23:52:49 PDT
Comment on attachment 208700 [details]
starting to pass layouttests

Attachment 208700 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1437320
Comment 63 Filip Pizlo 2013-08-14 00:31:17 PDT
Created attachment 208703 [details]
and now, passing more tests than ever!
Comment 64 WebKit Commit Bot 2013-08-14 00:34:21 PDT
Attachment 208703 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/fast/canvas/webgl/script-tests/arraybuffer-transfer-of-control.js', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/DerivedSources.make', u'Source/JavaScriptCore/JSCTypedArrayStubs.h', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/bytecode/ByValInfo.h', u'Source/JavaScriptCore/bytecode/SpeculatedType.cpp', u'Source/JavaScriptCore/dfg/DFGArrayMode.cpp', u'Source/JavaScriptCore/dfg/DFGArrayMode.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp', u'Source/JavaScriptCore/heap/CopyToken.h', u'Source/JavaScriptCore/heap/DeferGC.h', u'Source/JavaScriptCore/heap/GCIncomingRefCounted.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedInlines.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedSet.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedSetInlines.h', u'Source/JavaScriptCore/heap/Heap.cpp', u'Source/JavaScriptCore/heap/Heap.h', u'Source/JavaScriptCore/interpreter/CallFrame.h', u'Source/JavaScriptCore/jit/JIT.h', u'Source/JavaScriptCore/jit/JITPropertyAccess.cpp', u'Source/JavaScriptCore/jsc.cpp', u'Source/JavaScriptCore/runtime/ArrayBuffer.cpp', u'Source/JavaScriptCore/runtime/ArrayBuffer.h', u'Source/JavaScriptCore/runtime/ArrayBufferView.cpp', u'Source/JavaScriptCore/runtime/ArrayBufferView.h', u'Source/JavaScriptCore/runtime/ClassInfo.h', u'Source/JavaScriptCore/runtime/CommonIdentifiers.h', u'Source/JavaScriptCore/runtime/DataView.cpp', u'Source/JavaScriptCore/runtime/DataView.h', u'Source/JavaScriptCore/runtime/Float32Array.h', u'Source/JavaScriptCore/runtime/Float64Array.h', u'Source/JavaScriptCore/runtime/GenericTypedArrayView.h', u'Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h', u'Source/JavaScriptCore/runtime/IndexingHeader.h', u'Source/JavaScriptCore/runtime/Int16Array.h', u'Source/JavaScriptCore/runtime/Int32Array.h', u'Source/JavaScriptCore/runtime/Int8Array.h', u'Source/JavaScriptCore/runtime/JSArrayBuffer.cpp', u'Source/JavaScriptCore/runtime/JSArrayBuffer.h', u'Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferConstructor.h', u'Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferPrototype.h', u'Source/JavaScriptCore/runtime/JSArrayBufferView.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferView.h', u'Source/JavaScriptCore/runtime/JSArrayBufferViewInlines.h', u'Source/JavaScriptCore/runtime/JSCell.cpp', u'Source/JavaScriptCore/runtime/JSCell.h', u'Source/JavaScriptCore/runtime/JSDataView.cpp', u'Source/JavaScriptCore/runtime/JSDataView.h', u'Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp', u'Source/JavaScriptCore/runtime/JSDataViewPrototype.h', u'Source/JavaScriptCore/runtime/JSFloat32Array.h', u'Source/JavaScriptCore/runtime/JSFloat64Array.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructor.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototype.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h', u'Source/JavaScriptCore/runtime/JSGlobalObject.cpp', u'Source/JavaScriptCore/runtime/JSGlobalObject.h', u'Source/JavaScriptCore/runtime/JSInt16Array.h', u'Source/JavaScriptCore/runtime/JSInt32Array.h', u'Source/JavaScriptCore/runtime/JSInt8Array.h', u'Source/JavaScriptCore/runtime/JSTypedArrayConstructors.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrayConstructors.h', u'Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.h', u'Source/JavaScriptCore/runtime/JSTypedArrays.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrays.h', u'Source/JavaScriptCore/runtime/JSUint16Array.h', u'Source/JavaScriptCore/runtime/JSUint32Array.h', u'Source/JavaScriptCore/runtime/JSUint8Array.h', u'Source/JavaScriptCore/runtime/JSUint8ClampedArray.h', u'Source/JavaScriptCore/runtime/Operations.h', u'Source/JavaScriptCore/runtime/SimpleTypedArrayController.cpp', u'Source/JavaScriptCore/runtime/SimpleTypedArrayController.h', u'Source/JavaScriptCore/runtime/Structure.h', u'Source/JavaScriptCore/runtime/StructureInlines.h', u'Source/JavaScriptCore/runtime/TypedArrayAdaptors.h', u'Source/JavaScriptCore/runtime/TypedArrayController.cpp', u'Source/JavaScriptCore/runtime/TypedArrayController.h', u'Source/JavaScriptCore/runtime/TypedArrayDescriptor.h', u'Source/JavaScriptCore/runtime/TypedArrayInlines.h', u'Source/JavaScriptCore/runtime/TypedArrayType.cpp', u'Source/JavaScriptCore/runtime/TypedArrayType.h', u'Source/JavaScriptCore/runtime/TypedArrays.h', u'Source/JavaScriptCore/runtime/Uint16Array.h', u'Source/JavaScriptCore/runtime/Uint32Array.h', u'Source/JavaScriptCore/runtime/Uint8Array.h', u'Source/JavaScriptCore/runtime/Uint8ClampedArray.h', u'Source/JavaScriptCore/runtime/VM.cpp', u'Source/JavaScriptCore/runtime/VM.h', u'Source/WTF/ChangeLog', u'Source/WTF/WTF.xcodeproj/project.pbxproj', u'Source/WTF/wtf/DeferrableRefCounted.h', u'Source/WTF/wtf/FlipBytes.h', u'Source/WebCore/ChangeLog', u'Source/WebCore/DerivedSources.make', u'Source/WebCore/ForwardingHeaders/runtime/DataView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSArrayBuffer.h', u'Source/WebCore/ForwardingHeaders/runtime/JSArrayBufferView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSDataView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSTypedArrays.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrayController.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrayInlines.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrays.h', u'Source/WebCore/Modules/webaudio/RealtimeAnalyser.h', u'Source/WebCore/WebCore.exp.in', u'Source/WebCore/WebCore.xcodeproj/project.pbxproj', u'Source/WebCore/bindings/js/DOMWrapperWorld.h', u'Source/WebCore/bindings/js/JSArrayBufferCustom.cpp', u'Source/WebCore/bindings/js/JSArrayBufferViewHelper.h', u'Source/WebCore/bindings/js/JSAudioContextCustom.cpp', u'Source/WebCore/bindings/js/JSBlobCustom.cpp', u'Source/WebCore/bindings/js/JSCSSRuleCustom.cpp', u'Source/WebCore/bindings/js/JSCSSValueCustom.cpp', u'Source/WebCore/bindings/js/JSCryptoCustom.cpp', u'Source/WebCore/bindings/js/JSDOMBinding.h', u'Source/WebCore/bindings/js/JSDataViewCustom.cpp', u'Source/WebCore/bindings/js/JSDictionary.cpp', u'Source/WebCore/bindings/js/JSDictionary.h', u'Source/WebCore/bindings/js/JSDocumentCustom.cpp', u'Source/WebCore/bindings/js/JSEventCustom.cpp', u'Source/WebCore/bindings/js/JSFileReaderCustom.cpp', u'Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp', u'Source/WebCore/bindings/js/JSImageDataCustom.cpp', u'Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp', u'Source/WebCore/bindings/js/JSMessageEventCustom.cpp', u'Source/WebCore/bindings/js/JSMessagePortCustom.cpp', u'Source/WebCore/bindings/js/JSSVGPathSegCustom.cpp', u'Source/WebCore/bindings/js/JSStyleSheetCustom.cpp', u'Source/WebCore/bindings/js/JSTrackCustom.cpp', u'Source/WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp', u'Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp', u'Source/WebCore/bindings/js/SerializedScriptValue.cpp', u'Source/WebCore/bindings/js/WebCoreJSClientData.h', u'Source/WebCore/bindings/js/WebCoreTypedArrayController.cpp', u'Source/WebCore/bindings/js/WebCoreTypedArrayController.h', u'Source/WebCore/bindings/scripts/CodeGenerator.pm', u'Source/WebCore/bindings/scripts/CodeGeneratorJS.pm', u'Source/WebCore/fileapi/WebKitBlobBuilder.cpp', u'Source/WebCore/fileapi/WebKitBlobBuilder.h', u'Source/WebCore/html/canvas/ArrayBuffer.idl', u'Source/WebCore/html/canvas/ArrayBufferView.idl', u'Source/WebCore/html/canvas/DataView.cpp', u'Source/WebCore/html/canvas/DataView.h', u'Source/WebCore/html/canvas/DataView.idl', u'Source/WebCore/html/canvas/Float32Array.idl', u'Source/WebCore/html/canvas/Float64Array.idl', u'Source/WebCore/html/canvas/Int16Array.idl', u'Source/WebCore/html/canvas/Int32Array.idl', u'Source/WebCore/html/canvas/Int8Array.idl', u'Source/WebCore/html/canvas/Uint16Array.idl', u'Source/WebCore/html/canvas/Uint32Array.idl', u'Source/WebCore/html/canvas/Uint8Array.idl', u'Source/WebCore/html/canvas/Uint8ClampedArray.idl', u'Source/WebCore/html/canvas/WebGLRenderingContext.cpp', u'Source/WebCore/page/Crypto.cpp', u'Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm', u'Source/WebCore/platform/graphics/filters/FECustomFilter.h', u'Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp', u'Source/WebCore/platform/graphics/filters/FilterEffect.cpp', u'Source/WebCore/testing/MockCDM.cpp', u'Source/WebKit2/ChangeLog', u'Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp']" exit_code: 1
Source/JavaScriptCore/runtime/JSTypedArrays.cpp:38:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSGlobalObject.h:28:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp:251:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 148 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 65 Early Warning System Bot 2013-08-14 00:41:05 PDT
Comment on attachment 208703 [details]
and now, passing more tests than ever!

Attachment 208703 [details] did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1461249
Comment 66 Early Warning System Bot 2013-08-14 00:42:31 PDT
Comment on attachment 208703 [details]
and now, passing more tests than ever!

Attachment 208703 [details] did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1370998
Comment 67 EFL EWS Bot 2013-08-14 00:42:52 PDT
Comment on attachment 208703 [details]
and now, passing more tests than ever!

Attachment 208703 [details] did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1462028
Comment 68 kov's GTK+ EWS bot 2013-08-14 00:45:24 PDT
Comment on attachment 208703 [details]
and now, passing more tests than ever!

Attachment 208703 [details] did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1372464
Comment 69 EFL EWS Bot 2013-08-14 00:58:28 PDT
Comment on attachment 208703 [details]
and now, passing more tests than ever!

Attachment 208703 [details] did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1437323
Comment 70 Build Bot 2013-08-14 01:18:42 PDT
Comment on attachment 208703 [details]
and now, passing more tests than ever!

Attachment 208703 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1462029
Comment 71 Build Bot 2013-08-14 03:02:31 PDT
Comment on attachment 208703 [details]
and now, passing more tests than ever!

Attachment 208703 [details] did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1458663
Comment 72 Zan Dobersek 2013-08-14 05:40:07 PDT
Created attachment 208718 [details]
Required changes for the Automake build

Here are all the changes that are required to get the GTK port building with this patch (tested with a clean build).

Most of the changes are just adding new files to the Automake build, a couple of non-trivial changes I'll point out later.

There's no need to include these changes in the main patch if you don't feel like it, as long as you can pinpoint the time of landing the patch and that time not being during the CEST night. A clean build will most likely be required on the GTK builders, so someone will have to be around either way.
Comment 73 Zan Dobersek 2013-08-14 05:46:50 PDT
Comment on attachment 208718 [details]
Required changes for the Automake build

View in context: https://bugs.webkit.org/attachment.cgi?id=208718&action=review

> Source/WebCore/bindings/js/JSHTMLTemplateElementCustom.cpp:53
> -    JSDOMWrapper* wrapper = getCachedWrapper(currentWorld(exec), content);
> +    JSObject* wrapper = getCachedWrapper(currentWorld(exec), content);

The mac port doesn't seem to enable TEMPLATE_ELEMENT, so this got overlooked.

> Source/WebCore/html/canvas/WebGLRenderingContext.cpp:77
> +#include <runtime/JSCJSValueInlines.h>

Required for inlining JSValue::asCell and JSValue::decode methods. Without this, the related symbols are left undefined, causing linking failures.

> Source/WebCore/platform/graphics/filters/FilterEffect.cpp:31
> +#include <runtime/JSCJSValueInlines.h>

Ditto.
Comment 74 Filip Pizlo 2013-08-14 12:45:06 PDT
(In reply to comment #73)
> (From update of attachment 208718 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=208718&action=review
> 
> > Source/WebCore/bindings/js/JSHTMLTemplateElementCustom.cpp:53
> > -    JSDOMWrapper* wrapper = getCachedWrapper(currentWorld(exec), content);
> > +    JSObject* wrapper = getCachedWrapper(currentWorld(exec), content);
> 
> The mac port doesn't seem to enable TEMPLATE_ELEMENT, so this got overlooked.
> 
> > Source/WebCore/html/canvas/WebGLRenderingContext.cpp:77
> > +#include <runtime/JSCJSValueInlines.h>
> 
> Required for inlining JSValue::asCell and JSValue::decode methods. Without this, the related symbols are left undefined, causing linking failures.
> 
> > Source/WebCore/platform/graphics/filters/FilterEffect.cpp:31
> > +#include <runtime/JSCJSValueInlines.h>
> 
> Ditto.

Thanks for working on this!
Comment 75 Filip Pizlo 2013-08-14 12:45:44 PDT
(In reply to comment #73)
> (From update of attachment 208718 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=208718&action=review
> 
> > Source/WebCore/bindings/js/JSHTMLTemplateElementCustom.cpp:53
> > -    JSDOMWrapper* wrapper = getCachedWrapper(currentWorld(exec), content);
> > +    JSObject* wrapper = getCachedWrapper(currentWorld(exec), content);
> 
> The mac port doesn't seem to enable TEMPLATE_ELEMENT, so this got overlooked.
> 
> > Source/WebCore/html/canvas/WebGLRenderingContext.cpp:77
> > +#include <runtime/JSCJSValueInlines.h>

By the way, the canonical thing we've been doing is #include <runtime/Operations.h>, which pulls in a bunch of critical JSC Inlines.h files.

> 
> Required for inlining JSValue::asCell and JSValue::decode methods. Without this, the related symbols are left undefined, causing linking failures.
> 
> > Source/WebCore/platform/graphics/filters/FilterEffect.cpp:31
> > +#include <runtime/JSCJSValueInlines.h>
> 
> Ditto.
Comment 76 Oliver Hunt 2013-08-14 12:52:02 PDT
Comment on attachment 208703 [details]
and now, passing more tests than ever!

View in context: https://bugs.webkit.org/attachment.cgi?id=208703&action=review

r+ with gtk fix merged in

> Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h:124
> +        if (!result)
> +            return JSValue::encode(jsUndefined());

Can we assert that there's an exception in flight here?

> Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h:346
> +    if (!thisObject->canSetIndexQuickly(propertyName)) {
> +        // Yes, really. Firefox returns without throwing anything if you store beyond
> +        // the bounds.

I believe this is actually spec behavior - a lot of the indexable dom types have this sort of thing
Comment 77 Filip Pizlo 2013-08-14 13:08:32 PDT
(In reply to comment #76)
> (From update of attachment 208703 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=208703&action=review
> 
> r+ with gtk fix merged in
> 
> > Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h:124
> > +        if (!result)
> > +            return JSValue::encode(jsUndefined());
> 
> Can we assert that there's an exception in flight here?

Sure, I added it.

> 
> > Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h:346
> > +    if (!thisObject->canSetIndexQuickly(propertyName)) {
> > +        // Yes, really. Firefox returns without throwing anything if you store beyond
> > +        // the bounds.
> 
> I believe this is actually spec behavior - a lot of the indexable dom types have this sort of thing

It's DOM spec, but it's not in Mozilla's JS typed array documentation.  Do you know if it's also proposed ES spec?
Comment 78 Filip Pizlo 2013-08-14 13:52:41 PDT
Created attachment 208758 [details]
I think all tests pass, started to work on other build systems

This patch is still r=oliver, though I still need to change the Reviewed By thingies.
Comment 79 WebKit Commit Bot 2013-08-14 16:01:39 PDT
Attachment 208758 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'ChangeLog', u'LayoutTests/ChangeLog', u'LayoutTests/fast/canvas/webgl/array-set-invalid-arguments-expected.txt', u'LayoutTests/fast/canvas/webgl/array-set-out-of-bounds-expected.txt', u'LayoutTests/fast/canvas/webgl/array-unit-tests-expected.txt', u'LayoutTests/fast/canvas/webgl/array-unit-tests.html', u'LayoutTests/fast/canvas/webgl/data-view-crash-expected.txt', u'LayoutTests/fast/canvas/webgl/script-tests/arraybuffer-transfer-of-control.js', u'LayoutTests/fast/dom/call-a-constructor-as-a-function-expected.txt', u'LayoutTests/fast/dom/call-a-constructor-as-a-function.html', u'LayoutTests/fast/js/constructor-length.html', u'LayoutTests/fast/js/global-constructors-attributes-dedicated-worker-expected.txt', u'LayoutTests/fast/js/global-constructors-attributes-expected.txt', u'LayoutTests/fast/js/global-constructors-attributes-shared-worker-expected.txt', u'LayoutTests/webgl/resources/webgl_test_files/conformance/typedarrays/array-unit-tests.html', u'LayoutTests/webgl/resources/webgl_test_files/conformance/typedarrays/data-view-test.html', u'Source/JavaScriptCore/CMakeLists.txt', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/DerivedSources.make', u'Source/JavaScriptCore/GNUmakefile.list.am', u'Source/JavaScriptCore/JSCTypedArrayStubs.h', u'Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/bytecode/ByValInfo.h', u'Source/JavaScriptCore/bytecode/SpeculatedType.cpp', u'Source/JavaScriptCore/dfg/DFGArrayMode.cpp', u'Source/JavaScriptCore/dfg/DFGArrayMode.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp', u'Source/JavaScriptCore/heap/CopyToken.h', u'Source/JavaScriptCore/heap/DeferGC.h', u'Source/JavaScriptCore/heap/GCIncomingRefCounted.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedInlines.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedSet.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedSetInlines.h', u'Source/JavaScriptCore/heap/Heap.cpp', u'Source/JavaScriptCore/heap/Heap.h', u'Source/JavaScriptCore/interpreter/CallFrame.h', u'Source/JavaScriptCore/jit/JIT.h', u'Source/JavaScriptCore/jit/JITPropertyAccess.cpp', u'Source/JavaScriptCore/jsc.cpp', u'Source/JavaScriptCore/runtime/ArrayBuffer.cpp', u'Source/JavaScriptCore/runtime/ArrayBuffer.h', u'Source/JavaScriptCore/runtime/ArrayBufferView.cpp', u'Source/JavaScriptCore/runtime/ArrayBufferView.h', u'Source/JavaScriptCore/runtime/ClassInfo.h', u'Source/JavaScriptCore/runtime/CommonIdentifiers.h', u'Source/JavaScriptCore/runtime/DataView.cpp', u'Source/JavaScriptCore/runtime/DataView.h', u'Source/JavaScriptCore/runtime/Float32Array.h', u'Source/JavaScriptCore/runtime/Float64Array.h', u'Source/JavaScriptCore/runtime/GenericTypedArrayView.h', u'Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h', u'Source/JavaScriptCore/runtime/IndexingHeader.h', u'Source/JavaScriptCore/runtime/Int16Array.h', u'Source/JavaScriptCore/runtime/Int32Array.h', u'Source/JavaScriptCore/runtime/Int8Array.h', u'Source/JavaScriptCore/runtime/JSArrayBuffer.cpp', u'Source/JavaScriptCore/runtime/JSArrayBuffer.h', u'Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferConstructor.h', u'Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferPrototype.h', u'Source/JavaScriptCore/runtime/JSArrayBufferView.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferView.h', u'Source/JavaScriptCore/runtime/JSArrayBufferViewInlines.h', u'Source/JavaScriptCore/runtime/JSCell.cpp', u'Source/JavaScriptCore/runtime/JSCell.h', u'Source/JavaScriptCore/runtime/JSDataView.cpp', u'Source/JavaScriptCore/runtime/JSDataView.h', u'Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp', u'Source/JavaScriptCore/runtime/JSDataViewPrototype.h', u'Source/JavaScriptCore/runtime/JSFloat32Array.h', u'Source/JavaScriptCore/runtime/JSFloat64Array.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructor.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototype.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h', u'Source/JavaScriptCore/runtime/JSGlobalObject.cpp', u'Source/JavaScriptCore/runtime/JSGlobalObject.h', u'Source/JavaScriptCore/runtime/JSInt16Array.h', u'Source/JavaScriptCore/runtime/JSInt32Array.h', u'Source/JavaScriptCore/runtime/JSInt8Array.h', u'Source/JavaScriptCore/runtime/JSTypedArrayConstructors.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrayConstructors.h', u'Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.h', u'Source/JavaScriptCore/runtime/JSTypedArrays.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrays.h', u'Source/JavaScriptCore/runtime/JSUint16Array.h', u'Source/JavaScriptCore/runtime/JSUint32Array.h', u'Source/JavaScriptCore/runtime/JSUint8Array.h', u'Source/JavaScriptCore/runtime/JSUint8ClampedArray.h', u'Source/JavaScriptCore/runtime/Operations.h', u'Source/JavaScriptCore/runtime/SimpleTypedArrayController.cpp', u'Source/JavaScriptCore/runtime/SimpleTypedArrayController.h', u'Source/JavaScriptCore/runtime/Structure.h', u'Source/JavaScriptCore/runtime/StructureInlines.h', u'Source/JavaScriptCore/runtime/TypedArrayAdaptors.h', u'Source/JavaScriptCore/runtime/TypedArrayController.cpp', u'Source/JavaScriptCore/runtime/TypedArrayController.h', u'Source/JavaScriptCore/runtime/TypedArrayDescriptor.h', u'Source/JavaScriptCore/runtime/TypedArrayInlines.h', u'Source/JavaScriptCore/runtime/TypedArrayType.cpp', u'Source/JavaScriptCore/runtime/TypedArrayType.h', u'Source/JavaScriptCore/runtime/TypedArrays.h', u'Source/JavaScriptCore/runtime/Uint16Array.h', u'Source/JavaScriptCore/runtime/Uint32Array.h', u'Source/JavaScriptCore/runtime/Uint8Array.h', u'Source/JavaScriptCore/runtime/Uint8ClampedArray.h', u'Source/JavaScriptCore/runtime/VM.cpp', u'Source/JavaScriptCore/runtime/VM.h', u'Source/WTF/ChangeLog', u'Source/WTF/GNUmakefile.list.am', u'Source/WTF/WTF.vcxproj/WTF.vcxproj', u'Source/WTF/WTF.xcodeproj/project.pbxproj', u'Source/WTF/wtf/CMakeLists.txt', u'Source/WTF/wtf/DeferrableRefCounted.h', u'Source/WTF/wtf/FlipBytes.h', u'Source/WebCore/CMakeLists.txt', u'Source/WebCore/ChangeLog', u'Source/WebCore/DerivedSources.make', u'Source/WebCore/ForwardingHeaders/runtime/DataView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSArrayBuffer.h', u'Source/WebCore/ForwardingHeaders/runtime/JSArrayBufferView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSDataView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSTypedArrays.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrayController.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrayInlines.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrays.h', u'Source/WebCore/GNUmakefile.list.am', u'Source/WebCore/Modules/webaudio/RealtimeAnalyser.h', u'Source/WebCore/UseJSC.cmake', u'Source/WebCore/WebCore.exp.in', u'Source/WebCore/WebCore.vcxproj/WebCore.vcxproj', u'Source/WebCore/WebCore.xcodeproj/project.pbxproj', u'Source/WebCore/bindings/js/DOMWrapperWorld.h', u'Source/WebCore/bindings/js/JSArrayBufferCustom.cpp', u'Source/WebCore/bindings/js/JSArrayBufferViewHelper.h', u'Source/WebCore/bindings/js/JSAudioContextCustom.cpp', u'Source/WebCore/bindings/js/JSBindingsAllInOne.cpp', u'Source/WebCore/bindings/js/JSBlobCustom.cpp', u'Source/WebCore/bindings/js/JSCSSRuleCustom.cpp', u'Source/WebCore/bindings/js/JSCSSValueCustom.cpp', u'Source/WebCore/bindings/js/JSCryptoCustom.cpp', u'Source/WebCore/bindings/js/JSDOMBinding.h', u'Source/WebCore/bindings/js/JSDataViewCustom.cpp', u'Source/WebCore/bindings/js/JSDictionary.cpp', u'Source/WebCore/bindings/js/JSDictionary.h', u'Source/WebCore/bindings/js/JSDocumentCustom.cpp', u'Source/WebCore/bindings/js/JSEventCustom.cpp', u'Source/WebCore/bindings/js/JSFileReaderCustom.cpp', u'Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp', u'Source/WebCore/bindings/js/JSHTMLTemplateElementCustom.cpp', u'Source/WebCore/bindings/js/JSImageDataCustom.cpp', u'Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp', u'Source/WebCore/bindings/js/JSMessageEventCustom.cpp', u'Source/WebCore/bindings/js/JSMessagePortCustom.cpp', u'Source/WebCore/bindings/js/JSSVGPathSegCustom.cpp', u'Source/WebCore/bindings/js/JSStyleSheetCustom.cpp', u'Source/WebCore/bindings/js/JSTrackCustom.cpp', u'Source/WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp', u'Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp', u'Source/WebCore/bindings/js/SerializedScriptValue.cpp', u'Source/WebCore/bindings/js/WebCoreJSClientData.h', u'Source/WebCore/bindings/js/WebCoreTypedArrayController.cpp', u'Source/WebCore/bindings/js/WebCoreTypedArrayController.h', u'Source/WebCore/bindings/scripts/CodeGenerator.pm', u'Source/WebCore/bindings/scripts/CodeGeneratorJS.pm', u'Source/WebCore/fileapi/WebKitBlobBuilder.cpp', u'Source/WebCore/fileapi/WebKitBlobBuilder.h', u'Source/WebCore/html/canvas/ArrayBuffer.idl', u'Source/WebCore/html/canvas/ArrayBufferView.idl', u'Source/WebCore/html/canvas/DataView.cpp', u'Source/WebCore/html/canvas/DataView.h', u'Source/WebCore/html/canvas/DataView.idl', u'Source/WebCore/html/canvas/Float32Array.idl', u'Source/WebCore/html/canvas/Float64Array.idl', u'Source/WebCore/html/canvas/Int16Array.idl', u'Source/WebCore/html/canvas/Int32Array.idl', u'Source/WebCore/html/canvas/Int8Array.idl', u'Source/WebCore/html/canvas/Uint16Array.idl', u'Source/WebCore/html/canvas/Uint32Array.idl', u'Source/WebCore/html/canvas/Uint8Array.idl', u'Source/WebCore/html/canvas/Uint8ClampedArray.idl', u'Source/WebCore/html/canvas/WebGLRenderingContext.cpp', u'Source/WebCore/page/Crypto.cpp', u'Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm', u'Source/WebCore/platform/graphics/filters/FECustomFilter.h', u'Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp', u'Source/WebCore/platform/graphics/filters/FilterEffect.cpp', u'Source/WebCore/testing/MockCDM.cpp', u'Source/WebKit2/ChangeLog', u'Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp', u'Source/autotools/symbols.filter']" exit_code: 1
Source/JavaScriptCore/runtime/JSTypedArrays.cpp:38:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSGlobalObject.h:28:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp:255:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 170 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 80 Early Warning System Bot 2013-08-14 16:06:21 PDT
Comment on attachment 208758 [details]
I think all tests pass, started to work on other build systems

Attachment 208758 [details] did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1461495
Comment 81 EFL EWS Bot 2013-08-14 16:11:57 PDT
Comment on attachment 208758 [details]
I think all tests pass, started to work on other build systems

Attachment 208758 [details] did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1464222
Comment 82 Early Warning System Bot 2013-08-14 16:20:17 PDT
Comment on attachment 208758 [details]
I think all tests pass, started to work on other build systems

Attachment 208758 [details] did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1452954
Comment 83 EFL EWS Bot 2013-08-14 16:23:58 PDT
Comment on attachment 208758 [details]
I think all tests pass, started to work on other build systems

Attachment 208758 [details] did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1459935
Comment 84 Build Bot 2013-08-14 16:46:32 PDT
Comment on attachment 208758 [details]
I think all tests pass, started to work on other build systems

Attachment 208758 [details] did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1453997
Comment 85 Filip Pizlo 2013-08-14 19:36:14 PDT
Created attachment 208784 [details]
almost patch for landing
Comment 86 Filip Pizlo 2013-08-14 20:06:25 PDT
Created attachment 208787 [details]
basically patch for landing
Comment 87 Mark Hahnenberg 2013-08-14 20:08:05 PDT
(In reply to comment #86)
> Created an attachment (id=208787) [details]
> basically patch for landing

Any benchmark results yet?
Comment 88 Filip Pizlo 2013-08-14 20:19:37 PDT
(In reply to comment #87)
> (In reply to comment #86)
> > Created an attachment (id=208787) [details] [details]
> > basically patch for landing
> 
> Any benchmark results yet?

Haven't run all of the benchmarks yet because I'm still writing JSRegress tests.  Here are the results of JSRegress:


Benchmark report for JSRegress on bigmac (MacPro5,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/DumpRenderTree (r154064)
"TypedArrays" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (r154064)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                       TipOfTree                TypedArrays                                    

adapt-to-double-divide                              18.6207+-0.0485     ?     18.6217+-0.0540        ?
aliased-arguments-getbyval                           0.8169+-0.0293            0.7954+-0.0198          might be 1.0270x faster
allocate-big-object                                  3.3608+-1.1360            3.3428+-1.1262        
arity-mismatch-inlining                              0.7309+-0.0222            0.7173+-0.0136          might be 1.0190x faster
array-access-polymorphic-structure                   7.4662+-1.7097            6.9955+-1.6366          might be 1.0673x faster
array-nonarray-polymorhpic-access                   54.4988+-17.4486    ?     70.4646+-27.3017       ? might be 1.2930x slower
array-with-double-add                                4.8595+-0.0131     ^      4.4604+-0.0307        ^ definitely 1.0895x faster
array-with-double-increment                          3.4526+-0.0278     ?      3.4841+-0.0837        ?
array-with-double-mul-add                            6.3111+-0.0613            6.0658+-0.2215          might be 1.0404x faster
array-with-double-sum                                6.4951+-0.0201     ?      6.5159+-0.0369        ?
array-with-int32-add-sub                             8.7282+-0.0662     ^      7.7251+-0.0256        ^ definitely 1.1298x faster
array-with-int32-or-double-sum                       6.5748+-0.0311            6.5727+-0.0271        
ArrayBuffer-Int8Array-alloc-huge-long-lived        213.9001+-1.3898     ^    185.5920+-1.6105        ^ definitely 1.1525x faster
ArrayBuffer-Int8Array-alloc-large-long-lived       167.1645+-2.0905     ^    112.5971+-1.0925        ^ definitely 1.4846x faster
ArrayBuffer-Int8Array-alloc-long-lived-buffer      123.8969+-5.2077     ^     69.6711+-8.9834        ^ definitely 1.7783x faster
ArrayBuffer-Int8Array-alloc-long-lived              86.6391+-4.7214     ^     35.9230+-3.3515        ^ definitely 2.4118x faster
ArrayBuffer-Int8Array-alloc                         82.6284+-4.5231     ^     32.2971+-3.3759        ^ definitely 2.5584x faster
big-int-mul                                          3.9310+-0.0291            3.9086+-0.0234        
boolean-test                                         3.6109+-0.0304            3.5808+-0.0148        
branch-fold                                          3.9313+-0.0400            3.8880+-0.0187          might be 1.0111x faster
cast-int-to-double                                  11.7287+-0.0459           11.7000+-0.0619        
cell-argument                                       12.1147+-0.1945     ?     12.2797+-0.2198        ? might be 1.0136x slower
cfg-simplify                                         3.1320+-0.0328            3.1282+-0.0247        
cmpeq-obj-to-obj-other                              10.7285+-0.1109           10.5279+-0.1552          might be 1.0190x faster
constant-test                                        7.1215+-0.0663            7.0692+-0.0558        
delay-tear-off-arguments-strictmode                  2.6659+-0.0315     ?      2.6805+-0.0300        ?
direct-arguments-getbyval                            0.6839+-0.0233            0.6549+-0.0065          might be 1.0444x faster
double-pollution-getbyval                            8.8932+-0.0387     ?      8.9555+-0.0363        ?
double-pollution-putbyoffset                         5.4031+-0.4915     ?      5.4265+-0.5217        ?
empty-string-plus-int                               11.5085+-0.2067     ?     11.5151+-0.2381        ?
external-arguments-getbyval                          1.9239+-0.1340     ?      1.9321+-0.1360        ?
external-arguments-putbyval                          3.0468+-0.2406     ?      3.0628+-0.2588        ?
Float32Array-matrix-mult                            12.7405+-0.6335     ^      5.9165+-0.1776        ^ definitely 2.1534x faster
fold-double-to-int                                  20.8748+-0.0785     ?     21.0941+-0.3167        ? might be 1.0105x slower
function-dot-apply                                   2.5081+-0.0320     ?      2.5162+-0.0239        ?
function-test                                        4.0868+-0.0503            3.9933+-0.0657          might be 1.0234x faster
get-by-id-chain-from-try-block                       5.5896+-0.1098     ?      5.5971+-0.1122        ?
get-by-id-proto-or-self                             19.0509+-0.3221           19.0373+-0.3309        
get-by-id-self-or-proto                             19.1106+-0.3219     ?     19.2181+-0.2988        ?
HashMap-put-get-iterate-keys                        36.6813+-0.5588           36.5520+-0.5118        
HashMap-put-get-iterate                             45.2546+-0.8527           44.4569+-0.8553          might be 1.0179x faster
HashMap-string-put-get-iterate                      51.9022+-1.0700           50.6803+-0.3332          might be 1.0241x faster
imul-double-only                                    14.7113+-0.5999           14.7053+-0.5902        
imul-int-only                                       12.2366+-0.1532     ?     12.2997+-0.1628        ?
imul-mixed                                          18.1586+-0.0197     ?     18.4642+-0.5929        ? might be 1.0168x slower
in-four-cases                                       21.5439+-0.0192     ?     21.5622+-0.0313        ?
in-one-case-false                                   10.0769+-0.0161           10.0690+-0.0157        
in-one-case-true                                    10.0631+-0.0126           10.0621+-0.0124        
in-two-cases                                        10.3830+-0.0178     ?     10.4458+-0.0613        ?
indexed-properties-in-objects                        3.4485+-0.0208     ?      3.4860+-0.0636        ? might be 1.0109x slower
inline-arguments-access                              1.1808+-0.0159     ?      1.1914+-0.0191        ?
inline-arguments-local-escape                       21.5799+-0.1127     ?     22.1931+-1.5457        ? might be 1.0284x slower
inline-get-scoped-var                                5.5548+-0.0625     ?      5.6020+-0.0481        ?
inlined-put-by-id-transition                        12.6774+-0.2444     ?     12.7698+-0.2437        ?
int-or-other-abs-then-get-by-val                     7.6149+-0.1028     ?      7.6263+-0.1118        ?
int-or-other-abs-zero-then-get-by-val               29.9733+-0.1294     !     30.6477+-0.2960        ! definitely 1.0225x slower
int-or-other-add-then-get-by-val                     8.5776+-0.1821     ?      8.6139+-0.1842        ?
int-or-other-add                                     8.7137+-0.0382            8.6823+-0.0426        
int-or-other-div-then-get-by-val                     5.1189+-0.0099     ?      5.1388+-0.0279        ?
int-or-other-max-then-get-by-val                     5.8247+-0.0145     ?      5.8375+-0.0231        ?
int-or-other-min-then-get-by-val                     5.8764+-0.0166     ?      5.9024+-0.0362        ?
int-or-other-mod-then-get-by-val                     5.1258+-0.2819            5.1160+-0.2926        
int-or-other-mul-then-get-by-val                     5.3807+-0.0666     ?      5.3832+-0.0683        ?
int-or-other-neg-then-get-by-val                     6.7551+-0.1551            6.7207+-0.1703        
int-or-other-neg-zero-then-get-by-val               29.8813+-0.1200     !     30.7214+-0.2695        ! definitely 1.0281x slower
int-or-other-sub-then-get-by-val                     8.6125+-0.1856            8.5884+-0.1675        
int-or-other-sub                                     6.7468+-0.0319     ?      6.7731+-0.0376        ?
int-overflow-local                                   9.7688+-0.0574            9.7248+-0.0328        
Int16Array-bubble-sort                              82.4311+-1.1673     ^     39.6341+-0.0537        ^ definitely 2.0798x faster
Int16Array-load-int-mul                              1.6623+-0.0275            1.6620+-0.0226        
Int32Array-alloc-huge-long-lived                   757.4855+-5.2911     ^    639.8586+-13.3216       ^ definitely 1.1838x faster
Int32Array-alloc-huge                              697.2204+-4.6194     ^    661.1345+-7.0446        ^ definitely 1.0546x faster
Int32Array-alloc-large-long-lived                 1943.0547+-17.8922    ^    872.3223+-6.3777        ^ definitely 2.2275x faster
Int32Array-alloc-large                              42.5805+-0.9357     ^     39.6919+-0.6536        ^ definitely 1.0728x faster
Int32Array-alloc-long-lived                       1734.8021+-11.2321    ^    156.6020+-1.4759        ^ definitely 11.0778x faster
Int32Array-alloc                                   146.3680+-5.5937     ^     14.1430+-2.4187        ^ definitely 10.3492x faster
Int32Array-Int8Array-view-alloc                     45.4261+-2.1609     ^     20.9682+-1.6990        ^ definitely 2.1664x faster
Int8Array-load                                       5.6516+-0.0095     ^      3.9993+-0.0345        ^ definitely 1.4131x faster
integer-divide                                      12.6468+-0.0203     ?     12.6543+-0.0174        ?
integer-modulo                                       1.5729+-0.0248     ?      1.5751+-0.0158        ?
make-indexed-storage                                 3.9005+-0.4760     ?      3.9572+-0.5036        ? might be 1.0146x slower
make-rope-cse                                       14.3240+-2.3263           13.9001+-2.5814          might be 1.0305x faster
marsaglia                                          431.0035+-0.3600     ?    431.3984+-0.5997        ?
method-on-number                                    20.4147+-0.2598     ?     20.7468+-0.6967        ? might be 1.0163x slower
negative-zero-divide                                 0.2756+-0.0108            0.2755+-0.0069        
negative-zero-modulo                                 0.2667+-0.0117            0.2662+-0.0094        
negative-zero-negate                                 0.2532+-0.0128     ?      0.2552+-0.0104        ?
nested-function-parsing-random                     330.0756+-10.2378    ?    344.3963+-10.1378       ? might be 1.0434x slower
nested-function-parsing                             48.0258+-3.1809     ?     48.1729+-3.1465        ?
new-array-buffer-dead                                3.2005+-0.0791     ?      3.2685+-0.0990        ? might be 1.0213x slower
new-array-buffer-push                               12.4981+-2.0215           12.4667+-1.9960        
new-array-dead                                      23.4881+-0.1057           23.4483+-0.0344        
new-array-push                                      10.4484+-1.7883           10.3062+-1.7511          might be 1.0138x faster
number-test                                          3.5279+-0.0174     ?      3.5295+-0.0215        ?
object-closure-call                                  8.2809+-1.3401            7.4378+-0.8786          might be 1.1134x faster
object-test                                          3.9752+-0.0544     ^      3.7677+-0.0212        ^ definitely 1.0551x faster
poly-stricteq                                       75.0332+-0.1438     !     76.3957+-1.1700        ! definitely 1.0182x slower
polymorphic-structure                               17.5335+-0.4360           17.4594+-0.0883        
polyvariant-monomorphic-get-by-id                   10.3139+-0.0201           10.3133+-0.0129        
put-by-val-large-index-blank-indexing-type          13.5361+-2.6712           13.5187+-2.6086        
rare-osr-exit-on-local                              16.6915+-0.1198           16.5888+-0.0272        
register-pressure-from-osr                          25.9460+-0.0547           25.9277+-0.0193        
simple-activation-demo                              28.6525+-0.2228           28.6214+-0.1854        
slow-array-profile-convergence                       3.8457+-0.2141     ?      3.9242+-0.1590        ? might be 1.0204x slower
slow-convergence                                     2.9434+-0.0224     ?      2.9569+-0.0174        ?
sparse-conditional                                   1.0682+-0.0155     ?      1.0836+-0.0221        ? might be 1.0144x slower
splice-to-remove                                    40.3405+-0.1705     ^     39.3793+-0.1029        ^ definitely 1.0244x faster
string-concat-object                                 4.3391+-1.1594            4.2052+-1.2092          might be 1.0318x faster
string-concat-pair-object                            4.2576+-1.1830            4.1789+-1.2264          might be 1.0188x faster
string-concat-pair-simple                           17.1096+-0.7523           17.0714+-0.5794        
string-concat-simple                                17.0518+-0.7672     ?     17.0632+-0.4804        ?
string-cons-repeat                                  14.1581+-1.0026           12.8138+-0.9174          might be 1.1049x faster
string-cons-tower                                   14.5581+-0.8413           13.0936+-0.9127          might be 1.1118x faster
string-equality                                     35.9899+-0.0358     ?     36.1712+-0.2742        ?
string-get-by-val-big-char                          14.1794+-0.1814     !     14.6283+-0.1413        ! definitely 1.0317x slower
string-get-by-val-out-of-bounds-insane               4.4204+-0.0853     ^      4.2301+-0.0997        ^ definitely 1.0450x faster
string-get-by-val-out-of-bounds                      3.8174+-0.0137            3.8099+-0.0136        
string-get-by-val                                    3.3236+-0.0364     ?      3.3614+-0.0401        ? might be 1.0114x slower
string-hash                                          2.1732+-0.0362            2.1635+-0.0275        
string-long-ident-equality                          31.7176+-0.3897           31.6703+-0.3787        
string-repeat-arith                                 42.5467+-1.6037     ^     39.5945+-0.2429        ^ definitely 1.0746x faster
string-sub                                          81.6218+-2.6221           79.1164+-0.5086          might be 1.0317x faster
string-test                                          3.5134+-0.0254            3.4926+-0.0217        
string-var-equality                                 59.5890+-0.5972           59.2934+-0.0593        
structure-hoist-over-transitions                     3.2614+-0.5337            3.2458+-0.5189        
switch-char-constant                                 2.7506+-0.0086     ?      2.7629+-0.0350        ?
switch-char                                          6.6288+-0.0650            6.5698+-0.0087        
switch-constant                                     11.1570+-2.2347     ?     11.1966+-2.2764        ?
switch-string-basic-big-var                         23.0633+-1.1740           21.8061+-1.4759          might be 1.0577x faster
switch-string-basic-big                             19.6221+-1.2529     ?     21.5853+-1.3551        ? might be 1.1001x slower
switch-string-basic-var                             17.9945+-0.2592           17.9882+-0.2618        
switch-string-basic                                 18.7130+-1.4782           17.5558+-0.4710          might be 1.0659x faster
switch-string-big-length-tower-var                  24.9517+-0.5256           24.3747+-0.0541          might be 1.0237x faster
switch-string-length-tower-var                      18.8031+-0.0628     ?     18.8127+-0.0858        ?
switch-string-length-tower                          14.5849+-0.0578     ?     14.6524+-0.1530        ?
switch-string-short                                 14.4762+-0.0130     ?     14.5384+-0.0562        ?
switch                                              16.8100+-2.3355           16.4160+-2.4434          might be 1.0240x faster
tear-off-arguments-simple                            1.8968+-0.0580            1.8651+-0.0293          might be 1.0170x faster
tear-off-arguments                                   2.8884+-0.0656            2.8757+-0.0188        
temporal-structure                                  17.4522+-0.0517           17.4333+-0.0477        
to-int32-boolean                                    18.1188+-0.0177     ?     18.1889+-0.0648        ?
undefined-test                                       3.6725+-0.0323     ?      3.7154+-0.0420        ? might be 1.0117x slower

<arithmetic>                                        60.5770+-0.4271     ^     37.8105+-0.1895        ^ definitely 1.6021x faster
<geometric> *                                       11.3306+-0.1465     ^     10.4026+-0.1034        ^ definitely 1.0892x faster
<harmonic>                                           3.9930+-0.0693            3.9376+-0.0558          might be 1.0141x faster
Comment 89 Filip Pizlo 2013-08-14 22:38:22 PDT
Created attachment 208791 [details]
rebased
Comment 90 WebKit Commit Bot 2013-08-14 22:41:33 PDT
Attachment 208791 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'ChangeLog', u'LayoutTests/ChangeLog', u'LayoutTests/fast/canvas/webgl/array-set-invalid-arguments-expected.txt', u'LayoutTests/fast/canvas/webgl/array-set-out-of-bounds-expected.txt', u'LayoutTests/fast/canvas/webgl/array-unit-tests-expected.txt', u'LayoutTests/fast/canvas/webgl/array-unit-tests.html', u'LayoutTests/fast/canvas/webgl/data-view-crash-expected.txt', u'LayoutTests/fast/canvas/webgl/script-tests/arraybuffer-transfer-of-control.js', u'LayoutTests/fast/dom/call-a-constructor-as-a-function-expected.txt', u'LayoutTests/fast/dom/call-a-constructor-as-a-function.html', u'LayoutTests/fast/js/constructor-length.html', u'LayoutTests/fast/js/global-constructors-attributes-dedicated-worker-expected.txt', u'LayoutTests/fast/js/global-constructors-attributes-expected.txt', u'LayoutTests/fast/js/global-constructors-attributes-shared-worker-expected.txt', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-expected.txt', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-huge-long-lived-expected.txt', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-huge-long-lived.html', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-large-long-lived-expected.txt', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-large-long-lived.html', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-long-lived-buffer-expected.txt', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-long-lived-buffer.html', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-long-lived-expected.txt', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-long-lived.html', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc.html', u'LayoutTests/fast/js/regress/Int32Array-Int8Array-view-alloc-expected.txt', u'LayoutTests/fast/js/regress/Int32Array-Int8Array-view-alloc.html', u'LayoutTests/fast/js/regress/Int32Array-alloc-expected.txt', u'LayoutTests/fast/js/regress/Int32Array-alloc-huge-expected.txt', u'LayoutTests/fast/js/regress/Int32Array-alloc-huge-long-lived-expected.txt', u'LayoutTests/fast/js/regress/Int32Array-alloc-huge-long-lived.html', u'LayoutTests/fast/js/regress/Int32Array-alloc-huge.html', u'LayoutTests/fast/js/regress/Int32Array-alloc-large-expected.txt', u'LayoutTests/fast/js/regress/Int32Array-alloc-large-long-lived-expected.txt', u'LayoutTests/fast/js/regress/Int32Array-alloc-large-long-lived.html', u'LayoutTests/fast/js/regress/Int32Array-alloc-large.html', u'LayoutTests/fast/js/regress/Int32Array-alloc-long-lived-expected.txt', u'LayoutTests/fast/js/regress/Int32Array-alloc-long-lived.html', u'LayoutTests/fast/js/regress/Int32Array-alloc.html', u'LayoutTests/fast/js/regress/script-tests/ArrayBuffer-Int8Array-alloc-huge-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/ArrayBuffer-Int8Array-alloc-large-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/ArrayBuffer-Int8Array-alloc-long-lived-buffer.js', u'LayoutTests/fast/js/regress/script-tests/ArrayBuffer-Int8Array-alloc-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/ArrayBuffer-Int8Array-alloc.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-Int8Array-view-alloc.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-alloc-huge-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-alloc-huge.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-alloc-large-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-alloc-large.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-alloc-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-alloc.js', u'LayoutTests/platform/mac/fast/js/constructor-length-expected.txt', u'LayoutTests/webgl/resources/webgl_test_files/conformance/typedarrays/array-unit-tests.html', u'LayoutTests/webgl/resources/webgl_test_files/conformance/typedarrays/data-view-test.html', u'Source/JavaScriptCore/CMakeLists.txt', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/DerivedSources.make', u'Source/JavaScriptCore/GNUmakefile.list.am', u'Source/JavaScriptCore/JSCTypedArrayStubs.h', u'Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/Target.pri', u'Source/JavaScriptCore/bytecode/ByValInfo.h', u'Source/JavaScriptCore/bytecode/SpeculatedType.cpp', u'Source/JavaScriptCore/dfg/DFGArrayMode.cpp', u'Source/JavaScriptCore/dfg/DFGArrayMode.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp', u'Source/JavaScriptCore/heap/CopyToken.h', u'Source/JavaScriptCore/heap/DeferGC.h', u'Source/JavaScriptCore/heap/GCIncomingRefCounted.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedInlines.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedSet.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedSetInlines.h', u'Source/JavaScriptCore/heap/Heap.cpp', u'Source/JavaScriptCore/heap/Heap.h', u'Source/JavaScriptCore/heap/WeakInlines.h', u'Source/JavaScriptCore/interpreter/CallFrame.h', u'Source/JavaScriptCore/jit/JIT.h', u'Source/JavaScriptCore/jit/JITPropertyAccess.cpp', u'Source/JavaScriptCore/jsc.cpp', u'Source/JavaScriptCore/runtime/ArrayBuffer.cpp', u'Source/JavaScriptCore/runtime/ArrayBuffer.h', u'Source/JavaScriptCore/runtime/ArrayBufferView.cpp', u'Source/JavaScriptCore/runtime/ArrayBufferView.h', u'Source/JavaScriptCore/runtime/ClassInfo.h', u'Source/JavaScriptCore/runtime/CommonIdentifiers.h', u'Source/JavaScriptCore/runtime/DataView.cpp', u'Source/JavaScriptCore/runtime/DataView.h', u'Source/JavaScriptCore/runtime/Float32Array.h', u'Source/JavaScriptCore/runtime/Float64Array.h', u'Source/JavaScriptCore/runtime/GenericTypedArrayView.h', u'Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h', u'Source/JavaScriptCore/runtime/IndexingHeader.h', u'Source/JavaScriptCore/runtime/Int16Array.h', u'Source/JavaScriptCore/runtime/Int32Array.h', u'Source/JavaScriptCore/runtime/Int8Array.h', u'Source/JavaScriptCore/runtime/JSArrayBuffer.cpp', u'Source/JavaScriptCore/runtime/JSArrayBuffer.h', u'Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferConstructor.h', u'Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferPrototype.h', u'Source/JavaScriptCore/runtime/JSArrayBufferView.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferView.h', u'Source/JavaScriptCore/runtime/JSArrayBufferViewInlines.h', u'Source/JavaScriptCore/runtime/JSCell.cpp', u'Source/JavaScriptCore/runtime/JSCell.h', u'Source/JavaScriptCore/runtime/JSDataView.cpp', u'Source/JavaScriptCore/runtime/JSDataView.h', u'Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp', u'Source/JavaScriptCore/runtime/JSDataViewPrototype.h', u'Source/JavaScriptCore/runtime/JSFloat32Array.h', u'Source/JavaScriptCore/runtime/JSFloat64Array.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructor.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototype.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h', u'Source/JavaScriptCore/runtime/JSGlobalObject.cpp', u'Source/JavaScriptCore/runtime/JSGlobalObject.h', u'Source/JavaScriptCore/runtime/JSInt16Array.h', u'Source/JavaScriptCore/runtime/JSInt32Array.h', u'Source/JavaScriptCore/runtime/JSInt8Array.h', u'Source/JavaScriptCore/runtime/JSTypedArrayConstructors.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrayConstructors.h', u'Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.h', u'Source/JavaScriptCore/runtime/JSTypedArrays.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrays.h', u'Source/JavaScriptCore/runtime/JSUint16Array.h', u'Source/JavaScriptCore/runtime/JSUint32Array.h', u'Source/JavaScriptCore/runtime/JSUint8Array.h', u'Source/JavaScriptCore/runtime/JSUint8ClampedArray.h', u'Source/JavaScriptCore/runtime/Operations.h', u'Source/JavaScriptCore/runtime/Options.h', u'Source/JavaScriptCore/runtime/SimpleTypedArrayController.cpp', u'Source/JavaScriptCore/runtime/SimpleTypedArrayController.h', u'Source/JavaScriptCore/runtime/Structure.h', u'Source/JavaScriptCore/runtime/StructureInlines.h', u'Source/JavaScriptCore/runtime/TypedArrayAdaptors.h', u'Source/JavaScriptCore/runtime/TypedArrayController.cpp', u'Source/JavaScriptCore/runtime/TypedArrayController.h', u'Source/JavaScriptCore/runtime/TypedArrayDescriptor.h', u'Source/JavaScriptCore/runtime/TypedArrayInlines.h', u'Source/JavaScriptCore/runtime/TypedArrayType.cpp', u'Source/JavaScriptCore/runtime/TypedArrayType.h', u'Source/JavaScriptCore/runtime/TypedArrays.h', u'Source/JavaScriptCore/runtime/Uint16Array.h', u'Source/JavaScriptCore/runtime/Uint32Array.h', u'Source/JavaScriptCore/runtime/Uint8Array.h', u'Source/JavaScriptCore/runtime/Uint8ClampedArray.h', u'Source/JavaScriptCore/runtime/VM.cpp', u'Source/JavaScriptCore/runtime/VM.h', u'Source/WTF/ChangeLog', u'Source/WTF/GNUmakefile.list.am', u'Source/WTF/WTF.vcxproj/WTF.vcxproj', u'Source/WTF/WTF.xcodeproj/project.pbxproj', u'Source/WTF/wtf/CMakeLists.txt', u'Source/WTF/wtf/DeferrableRefCounted.h', u'Source/WTF/wtf/FlipBytes.h', u'Source/WebCore/CMakeLists.txt', u'Source/WebCore/ChangeLog', u'Source/WebCore/DerivedSources.make', u'Source/WebCore/DerivedSources.pri', u'Source/WebCore/ForwardingHeaders/runtime/DataView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSArrayBuffer.h', u'Source/WebCore/ForwardingHeaders/runtime/JSArrayBufferView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSDataView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSTypedArrays.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrayController.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrayInlines.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrays.h', u'Source/WebCore/GNUmakefile.list.am', u'Source/WebCore/Modules/webaudio/RealtimeAnalyser.h', u'Source/WebCore/Target.pri', u'Source/WebCore/UseJSC.cmake', u'Source/WebCore/WebCore.exp.in', u'Source/WebCore/WebCore.vcxproj/WebCore.vcxproj', u'Source/WebCore/WebCore.xcodeproj/project.pbxproj', u'Source/WebCore/bindings/js/DOMWrapperWorld.h', u'Source/WebCore/bindings/js/JSArrayBufferCustom.cpp', u'Source/WebCore/bindings/js/JSArrayBufferViewHelper.h', u'Source/WebCore/bindings/js/JSAudioContextCustom.cpp', u'Source/WebCore/bindings/js/JSBindingsAllInOne.cpp', u'Source/WebCore/bindings/js/JSBlobCustom.cpp', u'Source/WebCore/bindings/js/JSCSSRuleCustom.cpp', u'Source/WebCore/bindings/js/JSCSSValueCustom.cpp', u'Source/WebCore/bindings/js/JSCryptoCustom.cpp', u'Source/WebCore/bindings/js/JSDOMBinding.h', u'Source/WebCore/bindings/js/JSDataViewCustom.cpp', u'Source/WebCore/bindings/js/JSDictionary.cpp', u'Source/WebCore/bindings/js/JSDictionary.h', u'Source/WebCore/bindings/js/JSDocumentCustom.cpp', u'Source/WebCore/bindings/js/JSEventCustom.cpp', u'Source/WebCore/bindings/js/JSFileReaderCustom.cpp', u'Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp', u'Source/WebCore/bindings/js/JSHTMLTemplateElementCustom.cpp', u'Source/WebCore/bindings/js/JSImageDataCustom.cpp', u'Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp', u'Source/WebCore/bindings/js/JSMessageEventCustom.cpp', u'Source/WebCore/bindings/js/JSMessagePortCustom.cpp', u'Source/WebCore/bindings/js/JSSVGPathSegCustom.cpp', u'Source/WebCore/bindings/js/JSStyleSheetCustom.cpp', u'Source/WebCore/bindings/js/JSTrackCustom.cpp', u'Source/WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp', u'Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp', u'Source/WebCore/bindings/js/SerializedScriptValue.cpp', u'Source/WebCore/bindings/js/WebCoreJSClientData.h', u'Source/WebCore/bindings/js/WebCoreTypedArrayController.cpp', u'Source/WebCore/bindings/js/WebCoreTypedArrayController.h', u'Source/WebCore/bindings/scripts/CodeGenerator.pm', u'Source/WebCore/bindings/scripts/CodeGeneratorJS.pm', u'Source/WebCore/fileapi/WebKitBlobBuilder.cpp', u'Source/WebCore/fileapi/WebKitBlobBuilder.h', u'Source/WebCore/html/canvas/ArrayBuffer.idl', u'Source/WebCore/html/canvas/ArrayBufferView.idl', u'Source/WebCore/html/canvas/DataView.cpp', u'Source/WebCore/html/canvas/DataView.h', u'Source/WebCore/html/canvas/DataView.idl', u'Source/WebCore/html/canvas/Float32Array.idl', u'Source/WebCore/html/canvas/Float64Array.idl', u'Source/WebCore/html/canvas/Int16Array.idl', u'Source/WebCore/html/canvas/Int32Array.idl', u'Source/WebCore/html/canvas/Int8Array.idl', u'Source/WebCore/html/canvas/Uint16Array.idl', u'Source/WebCore/html/canvas/Uint32Array.idl', u'Source/WebCore/html/canvas/Uint8Array.idl', u'Source/WebCore/html/canvas/Uint8ClampedArray.idl', u'Source/WebCore/html/canvas/WebGLRenderingContext.cpp', u'Source/WebCore/page/Crypto.cpp', u'Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm', u'Source/WebCore/platform/graphics/filters/FECustomFilter.h', u'Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp', u'Source/WebCore/platform/graphics/filters/FilterEffect.cpp', u'Source/WebCore/testing/MockCDM.cpp', u'Source/WebKit2/ChangeLog', u'Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp', u'Source/autotools/symbols.filter']" exit_code: 1
Source/JavaScriptCore/runtime/JSTypedArrays.cpp:38:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSGlobalObject.h:28:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp:255:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 211 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 91 Early Warning System Bot 2013-08-14 22:50:59 PDT
Comment on attachment 208791 [details]
rebased

Attachment 208791 [details] did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1464318
Comment 92 Early Warning System Bot 2013-08-14 23:02:34 PDT
Comment on attachment 208791 [details]
rebased

Attachment 208791 [details] did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1468137
Comment 93 Build Bot 2013-08-14 23:35:08 PDT
Comment on attachment 208791 [details]
rebased

Attachment 208791 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1464322
Comment 94 Filip Pizlo 2013-08-14 23:45:47 PDT
This appears to be a 1% speed-up on Octane.


Benchmark report for SunSpider, V8Spider, Octane, Kraken, JSBench, JSRegress, and DSP on bigmac (MacPro5,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/DumpRenderTree (r154087)
"TypedArrays" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (r154087)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used
1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing.
Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                             TipOfTree                TypedArrays                                    
SunSpider:
   3d-cube                                                 6.2510+-0.2367            6.1073+-0.2644          might be 1.0235x faster
   3d-morph                                                6.9834+-0.0348     ?      6.9946+-0.0579        ?
   3d-raytrace                                             8.0387+-0.2436            7.7322+-0.1207          might be 1.0396x faster
   access-binary-trees                                     2.2434+-0.3014            2.1595+-0.3117          might be 1.0388x faster
   access-fannkuch                                         6.4115+-0.0774     ?      6.4445+-0.0800        ?
   access-nbody                                            3.3291+-0.0152     ?      3.3359+-0.0162        ?
   access-nsieve                                           4.1479+-0.0572     ?      4.1630+-0.0657        ?
   bitops-3bit-bits-in-byte                                1.4842+-0.0154            1.4802+-0.0075        
   bitops-bits-in-byte                                     5.5462+-0.0705            5.5423+-0.0586        
   bitops-bitwise-and                                      2.2925+-0.0256            2.2788+-0.0283        
   bitops-nsieve-bits                                      3.8377+-0.0177     !      3.8755+-0.0201        ! definitely 1.0099x slower
   controlflow-recursive                                   2.3914+-0.0151     ?      2.4006+-0.0057        ?
   crypto-aes                                              4.8419+-0.2855            4.6192+-0.2930          might be 1.0482x faster
   crypto-md5                                              2.6136+-0.0237     ?      2.6590+-0.0435        ? might be 1.0173x slower
   crypto-sha1                                             2.3774+-0.0308            2.3720+-0.0131        
   date-format-tofte                                      10.8987+-0.9207           10.8265+-0.8408        
   date-format-xparb                                       7.4958+-0.6223            7.3716+-0.5713          might be 1.0169x faster
   math-cordic                                             3.2480+-0.0121            3.2343+-0.0154        
   math-partial-sums                                       8.6216+-0.0199     ?      8.6611+-0.0260        ?
   math-spectral-norm                                      2.3505+-0.0244            2.3431+-0.0148        
   regexp-dna                                             10.7306+-0.4742           10.6671+-0.4649        
   string-base64                                           5.2536+-0.4802            5.2137+-0.4704        
   string-fasta                                           10.1048+-0.2206     ?     10.1816+-0.3344        ?
   string-tagcloud                                        12.0342+-0.1430     ?     12.1335+-0.2249        ?
   string-unpack-code                                     26.2446+-0.3451           26.0543+-0.3384        
   string-validate-input                                   7.4186+-0.2431     ?      7.4500+-0.2891        ?

   <arithmetic> *                                          6.4304+-0.1327            6.3962+-0.1237          might be 1.0053x faster
   <geometric>                                             5.0987+-0.0886            5.0703+-0.0816          might be 1.0056x faster
   <harmonic>                                              4.1319+-0.0610            4.1084+-0.0618          might be 1.0057x faster

                                                             TipOfTree                TypedArrays                                    
V8Spider:
   crypto                                                 67.9702+-0.4523           67.8836+-0.3255        
   deltablue                                              85.1183+-1.0679     ?     85.2560+-0.7206        ?
   earley-boyer                                           60.0741+-0.4410           59.6739+-0.4235        
   raytrace                                               38.2987+-4.4309           37.9268+-4.4281        
   regexp                                                 85.1383+-0.2907           84.9382+-0.4428        
   richards                                               93.7347+-1.0393     ?     94.6229+-1.6516        ?
   splay                                                  51.0414+-2.9116     ?     51.5860+-2.8457        ? might be 1.0107x slower

   <arithmetic>                                           68.7680+-0.5544     ?     68.8410+-0.7151        ? might be 1.0011x slower
   <geometric> *                                          65.7829+-0.8370     ?     65.8009+-0.9708        ? might be 1.0003x slower
   <harmonic>                                             62.5044+-1.2796           62.4616+-1.4108          might be 1.0007x faster

                                                             TipOfTree                TypedArrays                                    
Octane and V8v7:
   encrypt                                                0.39844+-0.00027    ?     0.39918+-0.00053       ?
   decrypt                                                7.19208+-0.01526    ?     7.19222+-0.01662       ?
   deltablue                                     x2       0.49976+-0.00415    ?     0.50102+-0.00510       ?
   earley                                                 0.75696+-0.00511          0.75652+-0.00536       
   boyer                                                 10.50856+-0.03643    ?    10.56691+-0.03706       ?
   raytrace                                      x2       3.70227+-0.05456          3.69667+-0.04317       
   regexp                                        x2      26.48711+-0.08800    ^    26.30619+-0.07248       ^ definitely 1.0069x faster
   richards                                      x2       0.25766+-0.00297          0.25678+-0.00335       
   splay                                         x2       0.58294+-0.03516          0.57384+-0.02723         might be 1.0158x faster
   navier-stokes                                 x2       9.03660+-0.00635          9.02859+-0.00481       
   closure                                                0.33752+-0.00892    ?     0.34117+-0.00991       ? might be 1.0108x slower
   jquery                                                 3.97610+-0.46614    ?     4.03538+-0.48137       ? might be 1.0149x slower
   gbemu                                         x2     125.03621+-8.12776        113.56989+-4.23769         might be 1.1010x faster
   mandreel                                      x2     161.23457+-0.42011    ?   161.68010+-0.97286       ?
   pdfjs                                         x2      86.18659+-0.41630    ^    83.48369+-0.39707       ^ definitely 1.0324x faster
   box2d                                         x2      30.19059+-0.20024         30.16436+-0.19765       

V8v7:
   <arithmetic>                                           6.24929+-0.01075          6.22756+-0.01291         might be 1.0035x faster
   <geometric> *                                          2.05364+-0.01343          2.04821+-0.01364         might be 1.0027x faster
   <harmonic>                                             0.79525+-0.00841          0.79278+-0.00719         might be 1.0031x faster

Octane including V8v7:
   <arithmetic>                                          34.98455+-0.62923    ^    33.91591+-0.30904       ^ definitely 1.0315x faster
   <geometric> *                                          6.17531+-0.05512          6.11276+-0.03014         might be 1.0102x faster
   <harmonic>                                             1.10805+-0.01036          1.10661+-0.00865         might be 1.0013x faster

                                                             TipOfTree                TypedArrays                                    
Kraken:
   ai-astar                                               431.403+-4.416            430.965+-4.881         
   audio-beat-detection                                   207.185+-2.952      ?     209.120+-2.710         ?
   audio-dft                                              260.147+-1.515            259.143+-2.059         
   audio-fft                                              120.842+-0.332      ?     121.095+-0.189         ?
   audio-oscillator                                       209.054+-1.329            208.549+-0.877         
   imaging-darkroom                                       243.308+-0.565      ?     243.569+-0.672         ?
   imaging-desaturate                                     130.882+-0.288      ?     131.196+-0.140         ?
   imaging-gaussian-blur                                  333.160+-0.259      ?     334.319+-2.478         ?
   json-parse-financial                                    64.452+-0.358      !      65.227+-0.219         ! definitely 1.0120x slower
   json-stringify-tinderbox                                86.871+-0.568      ?      87.093+-0.365         ?
   stanford-crypto-aes                                     90.002+-1.582      ?      90.216+-1.376         ?
   stanford-crypto-ccm                                     98.003+-5.411      ?     103.731+-4.487         ? might be 1.0584x slower
   stanford-crypto-pbkdf2                                 221.359+-1.531      ?     223.116+-0.804         ?
   stanford-crypto-sha256-iterative                       105.977+-0.416            105.899+-0.332         

   <arithmetic> *                                         185.903+-0.535      ?     186.660+-0.495         ? might be 1.0041x slower
   <geometric>                                            159.972+-0.621      ?     161.042+-0.554         ? might be 1.0067x slower
   <harmonic>                                             138.367+-0.773      ?     139.653+-0.709         ? might be 1.0093x slower

                                                             TipOfTree                TypedArrays                                    
JSBench:
   amazon                                                  8.5000+-0.3318            8.3333+-0.3128          might be 1.0200x faster
   facebook                                               33.0833+-0.5720     ?     33.2500+-0.4789        ?
   google                                                 57.8333+-0.7583           57.5000+-0.7420        
   twitter                                                 8.2500+-0.2874            8.1667+-0.2473          might be 1.0102x faster
   yahoo                                                   3.0833+-0.1834     ?      3.2500+-0.2874        ? might be 1.0541x slower

   <arithmetic> *                                         22.1500+-0.1544           22.1000+-0.2267          might be 1.0023x faster
   <geometric>                                            13.2683+-0.1785     ?     13.3194+-0.2754        ? might be 1.0039x slower
   <harmonic>                                              8.1649+-0.2473     ?      8.3272+-0.3756        ? might be 1.0199x slower

                                                             TipOfTree                TypedArrays                                    
JSRegress:
   adapt-to-double-divide                                 18.6218+-0.0392           18.5887+-0.0216        
   aliased-arguments-getbyval                              0.7870+-0.0170     ?      0.7882+-0.0179        ?
   allocate-big-object                                     3.4139+-1.1717            3.4027+-1.1753        
   arity-mismatch-inlining                                 0.7125+-0.0140            0.6966+-0.0175          might be 1.0228x faster
   array-access-polymorphic-structure                      8.0716+-1.8948            7.5693+-1.7764          might be 1.0664x faster
   array-nonarray-polymorhpic-access                      46.6111+-0.0671           46.5517+-0.0886        
   array-with-double-add                                   4.8745+-0.0155     ^      4.4718+-0.0204        ^ definitely 1.0900x faster
   array-with-double-increment                             3.4660+-0.0387     ?      3.5172+-0.0779        ? might be 1.0148x slower
   array-with-double-mul-add                               6.2911+-0.0316            6.1696+-0.2057          might be 1.0197x faster
   array-with-double-sum                                   6.4932+-0.0232     ?      6.4974+-0.0116        ?
   array-with-int32-add-sub                                8.7371+-0.0127     ^      7.7161+-0.0258        ^ definitely 1.1323x faster
   array-with-int32-or-double-sum                          6.5804+-0.0211            6.5658+-0.0150        
   ArrayBuffer-Int8Array-alloc-huge-long-lived           212.0261+-3.3540     ^    187.2535+-2.2455        ^ definitely 1.1323x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived          167.2429+-2.5083     ^    113.6580+-1.3095        ^ definitely 1.4715x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer         125.4030+-5.1678     ^     70.8387+-9.0263        ^ definitely 1.7703x faster
   ArrayBuffer-Int8Array-alloc-long-lived                 87.5109+-4.8329     ^     36.1309+-3.4588        ^ definitely 2.4220x faster
   ArrayBuffer-Int8Array-alloc                            83.2798+-4.7164     ^     32.5161+-3.6613        ^ definitely 2.5612x faster
   big-int-mul                                             3.9283+-0.0272     ?      3.9587+-0.0319        ?
   boolean-test                                            3.5846+-0.0088     ?      3.5894+-0.0299        ?
   branch-fold                                             3.9047+-0.0282            3.8936+-0.0220        
   cast-int-to-double                                     11.6746+-0.0355           11.6670+-0.0374        
   cell-argument                                          12.1835+-0.2079     ?     12.2547+-0.2317        ?
   cfg-simplify                                            3.1254+-0.0241            3.1154+-0.0109        
   cmpeq-obj-to-obj-other                                 10.7020+-0.1788           10.5551+-0.1069          might be 1.0139x faster
   constant-test                                           7.0071+-0.0652     ?      7.0874+-0.0609        ? might be 1.0115x slower
   delay-tear-off-arguments-strictmode                     2.6614+-0.0237            2.6508+-0.0155        
   direct-arguments-getbyval                               0.6608+-0.0185            0.6519+-0.0081          might be 1.0138x faster
   double-pollution-getbyval                               8.8913+-0.0218     ?      8.9106+-0.0407        ?
   double-pollution-putbyoffset                            5.4398+-0.5409     ?      5.4444+-0.5213        ?
   empty-string-plus-int                                  11.4921+-0.2459     ?     11.5313+-0.2680        ?
   external-arguments-getbyval                             1.9575+-0.1484            1.9356+-0.1481          might be 1.0113x faster
   external-arguments-putbyval                             3.2963+-0.2756            3.1659+-0.2706          might be 1.0412x faster
   Float32Array-matrix-mult                               12.9912+-0.7388     ^      5.9282+-0.2129        ^ definitely 2.1914x faster
   fold-double-to-int                                     20.9447+-0.1231     ?     21.2938+-0.3562        ? might be 1.0167x slower
   function-dot-apply                                      2.4919+-0.0256     ?      2.5012+-0.0188        ?
   function-test                                           4.0617+-0.0890            4.0227+-0.1063        
   get-by-id-chain-from-try-block                          5.5937+-0.0978     ?      5.6999+-0.1088        ? might be 1.0190x slower
   get-by-id-proto-or-self                                18.9892+-0.3202     ?     19.2094+-0.3859        ? might be 1.0116x slower
   get-by-id-self-or-proto                                19.1168+-0.3296           18.9434+-0.3555        
   HashMap-put-get-iterate-keys                           36.2487+-0.5127     ?     36.7913+-0.5728        ? might be 1.0150x slower
   HashMap-put-get-iterate                                44.3550+-0.5191     ?     44.6123+-0.5781        ?
   HashMap-string-put-get-iterate                         52.0163+-0.9880           50.5651+-0.7122          might be 1.0287x faster
   imul-double-only                                       14.4424+-0.0227           14.4382+-0.0113        
   imul-int-only                                          12.1462+-0.0293           12.1313+-0.0500        
   imul-mixed                                             18.4368+-0.5947           18.1982+-0.0215          might be 1.0131x faster
   in-four-cases                                          21.5305+-0.0293     ?     21.6125+-0.1003        ?
   in-one-case-false                                      10.0808+-0.0193     ?     10.0909+-0.0309        ?
   in-one-case-true                                       10.1213+-0.0836           10.0949+-0.0399        
   in-two-cases                                           10.4624+-0.0615           10.4322+-0.0443        
   indexed-properties-in-objects                           3.4474+-0.0305            3.4208+-0.0095        
   inline-arguments-access                                 1.1941+-0.0369     ?      1.2084+-0.0417        ? might be 1.0120x slower
   inline-arguments-local-escape                          21.9831+-0.1620     ?     23.1122+-2.0424        ? might be 1.0514x slower
   inline-get-scoped-var                                   5.5985+-0.0783     ?      5.6003+-0.0505        ?
   inlined-put-by-id-transition                           12.7700+-0.2326     ?     12.8635+-0.1004        ?
   int-or-other-abs-then-get-by-val                        7.5304+-0.0601     ?      7.5638+-0.0441        ?
   int-or-other-abs-zero-then-get-by-val                  30.0458+-0.0460     !     31.0349+-0.2906        ! definitely 1.0329x slower
   int-or-other-add-then-get-by-val                        8.4431+-0.0530            8.3969+-0.0121        
   int-or-other-add                                        8.7144+-0.0582     ?      8.7519+-0.0702        ?
   int-or-other-div-then-get-by-val                        5.3887+-0.2537     ?      5.3928+-0.2589        ?
   int-or-other-max-then-get-by-val                        6.4220+-0.5289            6.4140+-0.5253        
   int-or-other-min-then-get-by-val                        6.4002+-0.4807     ?      6.4117+-0.4893        ?
   int-or-other-mod-then-get-by-val                        4.8085+-0.0163     ?      4.8261+-0.0171        ?
   int-or-other-mul-then-get-by-val                        5.3269+-0.0455            5.3202+-0.0250        
   int-or-other-neg-then-get-by-val                        6.5671+-0.0424            6.5345+-0.0350        
   int-or-other-neg-zero-then-get-by-val                  29.9282+-0.1290     !     31.0306+-0.3044        ! definitely 1.0368x slower
   int-or-other-sub-then-get-by-val                        8.4101+-0.0139     ?      8.4429+-0.0437        ?
   int-or-other-sub                                        6.7161+-0.0132     ?      6.7176+-0.0135        ?
   int-overflow-local                                      9.7295+-0.0135     ?      9.7427+-0.0533        ?
   Int16Array-bubble-sort                                 85.1152+-1.9548     ^     39.6199+-0.0658        ^ definitely 2.1483x faster
   Int16Array-load-int-mul                                 1.6628+-0.0252            1.6551+-0.0227        
   Int32Array-alloc-huge-long-lived                      756.9791+-6.7742     ^    650.9599+-11.5928       ^ definitely 1.1629x faster
   Int32Array-alloc-huge                                 705.9069+-5.3935     ^    667.5928+-7.6962        ^ definitely 1.0574x faster
   Int32Array-alloc-large-long-lived                    1965.3684+-20.7746    ^    889.1096+-7.2274        ^ definitely 2.2105x faster
   Int32Array-alloc-large                                 43.4948+-0.8742     ^     40.4284+-0.8851        ^ definitely 1.0758x faster
   Int32Array-alloc-long-lived                          1750.5047+-26.1221    ^    163.2590+-9.9305        ^ definitely 10.7223x faster
   Int32Array-alloc                                      149.6996+-4.7802     ^     14.0697+-2.4468        ^ definitely 10.6398x faster
   Int32Array-Int8Array-view-alloc                        45.6574+-2.3792     ^     21.1499+-1.8222        ^ definitely 2.1588x faster
   Int8Array-load                                          5.7753+-0.1335     ^      3.9879+-0.0207        ^ definitely 1.4482x faster
   integer-divide                                         12.6490+-0.0385           12.6366+-0.0128        
   integer-modulo                                          1.5700+-0.0184     ?      1.5956+-0.0237        ? might be 1.0163x slower
   make-indexed-storage                                    3.8905+-0.5329     ?      3.9680+-0.5424        ? might be 1.0199x slower
   make-rope-cse                                          14.5386+-2.3942           14.1975+-2.6004          might be 1.0240x faster
   marsaglia                                             431.2244+-0.3367          431.1197+-0.3176        
   method-on-number                                       20.2879+-0.2537     !     21.0010+-0.3611        ! definitely 1.0352x slower
   negative-zero-divide                                    0.2881+-0.0203            0.2843+-0.0099          might be 1.0132x faster
   negative-zero-modulo                                    0.2772+-0.0101     ?      0.3004+-0.0201        ? might be 1.0838x slower
   negative-zero-negate                                    0.2633+-0.0098            0.2624+-0.0083        
   nested-function-parsing-random                        329.8905+-10.7228    ?    345.7725+-10.3490       ? might be 1.0481x slower
   nested-function-parsing                                48.1851+-3.5680     ?     48.2747+-3.3156        ?
   new-array-buffer-dead                                   3.2521+-0.1102     ?      3.2686+-0.1058        ?
   new-array-buffer-push                                  12.6585+-2.0526           12.5213+-2.2895          might be 1.0110x faster
   new-array-dead                                         23.5475+-0.1058           23.4676+-0.0911        
   new-array-push                                         10.4420+-1.6622     ?     10.7602+-1.8167        ? might be 1.0305x slower
   number-test                                             3.5301+-0.0135     ?      3.5350+-0.0110        ?
   object-closure-call                                     8.2812+-1.3468            7.8351+-1.1757          might be 1.0569x faster
   object-test                                             4.0031+-0.0990     ^      3.8122+-0.0376        ^ definitely 1.0501x faster
   poly-stricteq                                          82.3791+-16.1214          76.5391+-1.4586          might be 1.0763x faster
   polymorphic-structure                                  17.3781+-0.0559     ?     17.3819+-0.0468        ?
   polyvariant-monomorphic-get-by-id                      10.3453+-0.0661           10.3102+-0.0143        
   put-by-val-large-index-blank-indexing-type             13.5079+-2.6590     ?     13.6214+-2.6120        ?
   rare-osr-exit-on-local                                 16.6172+-0.0463     ?     16.6480+-0.0614        ?
   register-pressure-from-osr                             25.9386+-0.0397           25.9278+-0.0284        
   simple-activation-demo                                 28.6253+-0.2166           28.6045+-0.2014        
   slow-array-profile-convergence                          3.7628+-0.1730     ?      3.8956+-0.1741        ? might be 1.0353x slower
   slow-convergence                                        3.0577+-0.0550     ^      2.9491+-0.0327        ^ definitely 1.0368x faster
   sparse-conditional                                      1.0893+-0.0233            1.0651+-0.0131          might be 1.0227x faster
   splice-to-remove                                       39.7849+-0.5703           39.2220+-0.1061          might be 1.0144x faster
   string-concat-object                                    4.3383+-1.2100     ?      4.6176+-1.3338        ? might be 1.0644x slower
   string-concat-pair-object                               4.3113+-1.2248            4.2256+-1.2377          might be 1.0203x faster
   string-concat-pair-simple                              17.0281+-0.6977           16.9927+-0.6445        
   string-concat-simple                                   17.0298+-0.6391     ?     17.2452+-0.6886        ? might be 1.0126x slower
   string-cons-repeat                                     13.9103+-0.9049           12.7003+-0.9178          might be 1.0953x faster
   string-cons-tower                                      14.6446+-0.8374           13.2887+-0.9104          might be 1.1020x faster
   string-equality                                        36.2236+-0.2360           36.1027+-0.1832        
   string-get-by-val-big-char                             14.3152+-0.1840     !     14.6937+-0.0958        ! definitely 1.0264x slower
   string-get-by-val-out-of-bounds-insane                  4.3574+-0.0901            4.2520+-0.1304          might be 1.0248x faster
   string-get-by-val-out-of-bounds                         3.8219+-0.0068            3.8173+-0.0173        
   string-get-by-val                                       3.3517+-0.0602     ?      3.3711+-0.0651        ?
   string-hash                                             2.1631+-0.0321            2.1458+-0.0127        
   string-long-ident-equality                             31.6768+-0.2579           31.6531+-0.3024        
   string-repeat-arith                                    40.3457+-1.0830           39.7136+-0.3090          might be 1.0159x faster
   string-sub                                             86.5066+-10.7248          78.9589+-0.7128          might be 1.0956x faster
   string-test                                             3.5054+-0.0320     ?      3.5335+-0.0397        ?
   string-var-equality                                    59.6126+-0.5238           59.4825+-0.2869        
   structure-hoist-over-transitions                        3.2737+-0.5381     ?      3.3198+-0.5361        ? might be 1.0141x slower
   switch-char-constant                                    2.7511+-0.0111     ?      2.8004+-0.0407        ? might be 1.0179x slower
   switch-char                                             6.6245+-0.0495            6.5821+-0.0108        
   switch-constant                                        11.3750+-2.3844           11.2351+-2.2021          might be 1.0124x faster
   switch-string-basic-big-var                            22.5163+-1.6167           20.7850+-1.4235          might be 1.0833x faster
   switch-string-basic-big                                22.2406+-1.5383           20.0032+-1.1310          might be 1.1119x faster
   switch-string-basic-var                                17.8782+-0.0389     !     18.3715+-0.3327        ! definitely 1.0276x slower
   switch-string-basic                                    17.3253+-0.2963     !     19.1030+-0.9255        ! definitely 1.1026x slower
   switch-string-big-length-tower-var                     24.8804+-0.4497           24.5626+-0.4402          might be 1.0129x faster
   switch-string-length-tower-var                         19.0412+-0.2547           19.0319+-0.2706        
   switch-string-length-tower                             14.4865+-0.0121     ?     14.5114+-0.0632        ?
   switch-string-short                                    14.5415+-0.0851           14.5157+-0.0553        
   switch                                                 16.8984+-2.4232           16.7462+-2.4522        
   tear-off-arguments-simple                               1.8624+-0.0335     ?      1.8790+-0.0199        ?
   tear-off-arguments                                      2.8459+-0.0299     ?      2.8603+-0.0168        ?
   temporal-structure                                     17.4130+-0.0217     ?     17.4450+-0.0361        ?
   to-int32-boolean                                       18.1822+-0.0354           18.1623+-0.0350        
   undefined-test                                          3.6838+-0.0321            3.6796+-0.0246        

   <arithmetic>                                           60.9893+-0.5216     ^     38.0119+-0.2558        ^ definitely 1.6045x faster
   <geometric> *                                          11.3660+-0.1258     ^     10.4447+-0.1503        ^ definitely 1.0882x faster
   <harmonic>                                              4.0362+-0.0454            4.0091+-0.0392          might be 1.0068x faster

                                                             TipOfTree                TypedArrays                                    
DSP:
   filtrr-posterize-tint                                  36.1402+-1.3301     ?     36.6499+-1.2121        ? might be 1.0141x slower
   filtrr-tint-contrast-sat-bright                        59.5217+-0.9292     ?     59.8384+-0.8388        ?
   filtrr-tint-sat-adj-contr-mult                         71.7013+-3.4138           70.6645+-2.7056          might be 1.0147x faster
   filtrr-blur-overlay-sat-contr                         183.5070+-7.7138     ?    185.5764+-8.0348        ? might be 1.0113x slower
   filtrr-sat-blur-mult-sharpen-contr                    221.2989+-5.4902     ?    221.8971+-2.2878        ?
   filtrr-sepia-bias                                      28.2492+-2.9644     ?     28.2893+-2.9634        ?
   route9-vp8                                    x5      996.3821+-6.5457     ?   1003.4685+-6.0401        ?
   starfield                                     x5     1169.8636+-3.8198         1169.0181+-3.9057        
   bellard-jslinux                               x5     2567.4167+-13.2016    ?   2567.9167+-9.0281        ?
   zynaps-quake3                                 x5     1220.9467+-14.4890        1188.9003+-50.9376         might be 1.0270x faster
   zynaps-mandelbrot                             x5     1001.5384+-17.3698    ?   1006.9836+-5.4127        ?
   ammojs-asm-js                                 x5      226.4395+-12.3530         217.8465+-11.4206         might be 1.0394x faster
   ammojs-regular-js                             x5      210.7467+-7.9994          207.1067+-8.5635          might be 1.0176x faster

   <arithmetic>                                          916.2704+-3.3177          912.4175+-5.1515          might be 1.0042x faster
   <geometric> *                                         552.6816+-7.1982          548.1048+-6.6381          might be 1.0084x faster
   <harmonic>                                            240.3606+-9.4805          239.0839+-9.4347          might be 1.0053x faster

                                                             TipOfTree                TypedArrays                                    
All benchmarks:
   <arithmetic>                                          193.4832+-0.5957     ^    180.3086+-0.7943        ^ definitely 1.0731x faster
   <geometric>                                                 ERROR                     ERROR             
   <harmonic>                                              3.9578+-0.0293            3.9404+-0.0288          might be 1.0044x faster

                                                             TipOfTree                TypedArrays                                    
Geomean of preferred means:
   <scaled-result>                                        35.2409+-0.1591     ^     34.7099+-0.1978        ^ definitely 1.0153x faster
Comment 95 Filip Pizlo 2013-08-14 23:59:50 PDT
Created attachment 208793 [details]
another rebase and more qt fixes
Comment 96 WebKit Commit Bot 2013-08-15 00:04:39 PDT
Attachment 208793 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'ChangeLog', u'LayoutTests/ChangeLog', u'LayoutTests/fast/canvas/webgl/array-set-invalid-arguments-expected.txt', u'LayoutTests/fast/canvas/webgl/array-set-out-of-bounds-expected.txt', u'LayoutTests/fast/canvas/webgl/array-unit-tests-expected.txt', u'LayoutTests/fast/canvas/webgl/array-unit-tests.html', u'LayoutTests/fast/canvas/webgl/data-view-crash-expected.txt', u'LayoutTests/fast/canvas/webgl/script-tests/arraybuffer-transfer-of-control.js', u'LayoutTests/fast/dom/call-a-constructor-as-a-function-expected.txt', u'LayoutTests/fast/dom/call-a-constructor-as-a-function.html', u'LayoutTests/fast/js/constructor-length.html', u'LayoutTests/fast/js/global-constructors-attributes-dedicated-worker-expected.txt', u'LayoutTests/fast/js/global-constructors-attributes-expected.txt', u'LayoutTests/fast/js/global-constructors-attributes-shared-worker-expected.txt', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-expected.txt', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-huge-long-lived-expected.txt', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-huge-long-lived.html', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-large-long-lived-expected.txt', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-large-long-lived.html', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-long-lived-buffer-expected.txt', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-long-lived-buffer.html', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-long-lived-expected.txt', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc-long-lived.html', u'LayoutTests/fast/js/regress/ArrayBuffer-Int8Array-alloc.html', u'LayoutTests/fast/js/regress/Int32Array-Int8Array-view-alloc-expected.txt', u'LayoutTests/fast/js/regress/Int32Array-Int8Array-view-alloc.html', u'LayoutTests/fast/js/regress/Int32Array-alloc-expected.txt', u'LayoutTests/fast/js/regress/Int32Array-alloc-huge-expected.txt', u'LayoutTests/fast/js/regress/Int32Array-alloc-huge-long-lived-expected.txt', u'LayoutTests/fast/js/regress/Int32Array-alloc-huge-long-lived.html', u'LayoutTests/fast/js/regress/Int32Array-alloc-huge.html', u'LayoutTests/fast/js/regress/Int32Array-alloc-large-expected.txt', u'LayoutTests/fast/js/regress/Int32Array-alloc-large-long-lived-expected.txt', u'LayoutTests/fast/js/regress/Int32Array-alloc-large-long-lived.html', u'LayoutTests/fast/js/regress/Int32Array-alloc-large.html', u'LayoutTests/fast/js/regress/Int32Array-alloc-long-lived-expected.txt', u'LayoutTests/fast/js/regress/Int32Array-alloc-long-lived.html', u'LayoutTests/fast/js/regress/Int32Array-alloc.html', u'LayoutTests/fast/js/regress/script-tests/ArrayBuffer-Int8Array-alloc-huge-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/ArrayBuffer-Int8Array-alloc-large-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/ArrayBuffer-Int8Array-alloc-long-lived-buffer.js', u'LayoutTests/fast/js/regress/script-tests/ArrayBuffer-Int8Array-alloc-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/ArrayBuffer-Int8Array-alloc.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-Int8Array-view-alloc.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-alloc-huge-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-alloc-huge.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-alloc-large-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-alloc-large.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-alloc-long-lived.js', u'LayoutTests/fast/js/regress/script-tests/Int32Array-alloc.js', u'LayoutTests/platform/mac/fast/js/constructor-length-expected.txt', u'LayoutTests/webgl/resources/webgl_test_files/conformance/typedarrays/array-unit-tests.html', u'LayoutTests/webgl/resources/webgl_test_files/conformance/typedarrays/data-view-test.html', u'Source/JavaScriptCore/CMakeLists.txt', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/DerivedSources.make', u'Source/JavaScriptCore/DerivedSources.pri', u'Source/JavaScriptCore/GNUmakefile.list.am', u'Source/JavaScriptCore/JSCTypedArrayStubs.h', u'Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/Target.pri', u'Source/JavaScriptCore/bytecode/ByValInfo.h', u'Source/JavaScriptCore/bytecode/SpeculatedType.cpp', u'Source/JavaScriptCore/dfg/DFGArrayMode.cpp', u'Source/JavaScriptCore/dfg/DFGArrayMode.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp', u'Source/JavaScriptCore/heap/CopyToken.h', u'Source/JavaScriptCore/heap/DeferGC.h', u'Source/JavaScriptCore/heap/GCIncomingRefCounted.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedInlines.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedSet.h', u'Source/JavaScriptCore/heap/GCIncomingRefCountedSetInlines.h', u'Source/JavaScriptCore/heap/Heap.cpp', u'Source/JavaScriptCore/heap/Heap.h', u'Source/JavaScriptCore/heap/WeakInlines.h', u'Source/JavaScriptCore/interpreter/CallFrame.h', u'Source/JavaScriptCore/jit/JIT.h', u'Source/JavaScriptCore/jit/JITPropertyAccess.cpp', u'Source/JavaScriptCore/jsc.cpp', u'Source/JavaScriptCore/runtime/ArrayBuffer.cpp', u'Source/JavaScriptCore/runtime/ArrayBuffer.h', u'Source/JavaScriptCore/runtime/ArrayBufferView.cpp', u'Source/JavaScriptCore/runtime/ArrayBufferView.h', u'Source/JavaScriptCore/runtime/ClassInfo.h', u'Source/JavaScriptCore/runtime/CommonIdentifiers.h', u'Source/JavaScriptCore/runtime/DataView.cpp', u'Source/JavaScriptCore/runtime/DataView.h', u'Source/JavaScriptCore/runtime/Float32Array.h', u'Source/JavaScriptCore/runtime/Float64Array.h', u'Source/JavaScriptCore/runtime/GenericTypedArrayView.h', u'Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h', u'Source/JavaScriptCore/runtime/IndexingHeader.h', u'Source/JavaScriptCore/runtime/Int16Array.h', u'Source/JavaScriptCore/runtime/Int32Array.h', u'Source/JavaScriptCore/runtime/Int8Array.h', u'Source/JavaScriptCore/runtime/JSArrayBuffer.cpp', u'Source/JavaScriptCore/runtime/JSArrayBuffer.h', u'Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferConstructor.h', u'Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferPrototype.h', u'Source/JavaScriptCore/runtime/JSArrayBufferView.cpp', u'Source/JavaScriptCore/runtime/JSArrayBufferView.h', u'Source/JavaScriptCore/runtime/JSArrayBufferViewInlines.h', u'Source/JavaScriptCore/runtime/JSCell.cpp', u'Source/JavaScriptCore/runtime/JSCell.h', u'Source/JavaScriptCore/runtime/JSDataView.cpp', u'Source/JavaScriptCore/runtime/JSDataView.h', u'Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp', u'Source/JavaScriptCore/runtime/JSDataViewPrototype.h', u'Source/JavaScriptCore/runtime/JSFloat32Array.h', u'Source/JavaScriptCore/runtime/JSFloat64Array.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructor.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototype.h', u'Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h', u'Source/JavaScriptCore/runtime/JSGlobalObject.cpp', u'Source/JavaScriptCore/runtime/JSGlobalObject.h', u'Source/JavaScriptCore/runtime/JSInt16Array.h', u'Source/JavaScriptCore/runtime/JSInt32Array.h', u'Source/JavaScriptCore/runtime/JSInt8Array.h', u'Source/JavaScriptCore/runtime/JSTypedArrayConstructors.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrayConstructors.h', u'Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.h', u'Source/JavaScriptCore/runtime/JSTypedArrays.cpp', u'Source/JavaScriptCore/runtime/JSTypedArrays.h', u'Source/JavaScriptCore/runtime/JSUint16Array.h', u'Source/JavaScriptCore/runtime/JSUint32Array.h', u'Source/JavaScriptCore/runtime/JSUint8Array.h', u'Source/JavaScriptCore/runtime/JSUint8ClampedArray.h', u'Source/JavaScriptCore/runtime/Operations.h', u'Source/JavaScriptCore/runtime/Options.h', u'Source/JavaScriptCore/runtime/SimpleTypedArrayController.cpp', u'Source/JavaScriptCore/runtime/SimpleTypedArrayController.h', u'Source/JavaScriptCore/runtime/Structure.h', u'Source/JavaScriptCore/runtime/StructureInlines.h', u'Source/JavaScriptCore/runtime/TypedArrayAdaptors.h', u'Source/JavaScriptCore/runtime/TypedArrayController.cpp', u'Source/JavaScriptCore/runtime/TypedArrayController.h', u'Source/JavaScriptCore/runtime/TypedArrayDescriptor.h', u'Source/JavaScriptCore/runtime/TypedArrayInlines.h', u'Source/JavaScriptCore/runtime/TypedArrayType.cpp', u'Source/JavaScriptCore/runtime/TypedArrayType.h', u'Source/JavaScriptCore/runtime/TypedArrays.h', u'Source/JavaScriptCore/runtime/Uint16Array.h', u'Source/JavaScriptCore/runtime/Uint32Array.h', u'Source/JavaScriptCore/runtime/Uint8Array.h', u'Source/JavaScriptCore/runtime/Uint8ClampedArray.h', u'Source/JavaScriptCore/runtime/VM.cpp', u'Source/JavaScriptCore/runtime/VM.h', u'Source/WTF/ChangeLog', u'Source/WTF/GNUmakefile.list.am', u'Source/WTF/WTF.vcxproj/WTF.vcxproj', u'Source/WTF/WTF.xcodeproj/project.pbxproj', u'Source/WTF/wtf/CMakeLists.txt', u'Source/WTF/wtf/DeferrableRefCounted.h', u'Source/WTF/wtf/FlipBytes.h', u'Source/WebCore/CMakeLists.txt', u'Source/WebCore/ChangeLog', u'Source/WebCore/DerivedSources.make', u'Source/WebCore/DerivedSources.pri', u'Source/WebCore/ForwardingHeaders/runtime/DataView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSArrayBuffer.h', u'Source/WebCore/ForwardingHeaders/runtime/JSArrayBufferView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSDataView.h', u'Source/WebCore/ForwardingHeaders/runtime/JSTypedArrays.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrayController.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrayInlines.h', u'Source/WebCore/ForwardingHeaders/runtime/TypedArrays.h', u'Source/WebCore/GNUmakefile.list.am', u'Source/WebCore/Modules/webaudio/RealtimeAnalyser.h', u'Source/WebCore/Target.pri', u'Source/WebCore/UseJSC.cmake', u'Source/WebCore/WebCore.exp.in', u'Source/WebCore/WebCore.vcxproj/WebCore.vcxproj', u'Source/WebCore/WebCore.xcodeproj/project.pbxproj', u'Source/WebCore/bindings/js/DOMWrapperWorld.h', u'Source/WebCore/bindings/js/JSArrayBufferCustom.cpp', u'Source/WebCore/bindings/js/JSArrayBufferViewHelper.h', u'Source/WebCore/bindings/js/JSAudioContextCustom.cpp', u'Source/WebCore/bindings/js/JSBindingsAllInOne.cpp', u'Source/WebCore/bindings/js/JSBlobCustom.cpp', u'Source/WebCore/bindings/js/JSCSSRuleCustom.cpp', u'Source/WebCore/bindings/js/JSCSSValueCustom.cpp', u'Source/WebCore/bindings/js/JSCryptoCustom.cpp', u'Source/WebCore/bindings/js/JSDOMBinding.h', u'Source/WebCore/bindings/js/JSDataViewCustom.cpp', u'Source/WebCore/bindings/js/JSDictionary.cpp', u'Source/WebCore/bindings/js/JSDictionary.h', u'Source/WebCore/bindings/js/JSDocumentCustom.cpp', u'Source/WebCore/bindings/js/JSEventCustom.cpp', u'Source/WebCore/bindings/js/JSFileReaderCustom.cpp', u'Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp', u'Source/WebCore/bindings/js/JSHTMLTemplateElementCustom.cpp', u'Source/WebCore/bindings/js/JSImageDataCustom.cpp', u'Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp', u'Source/WebCore/bindings/js/JSMessageEventCustom.cpp', u'Source/WebCore/bindings/js/JSMessagePortCustom.cpp', u'Source/WebCore/bindings/js/JSSVGPathSegCustom.cpp', u'Source/WebCore/bindings/js/JSStyleSheetCustom.cpp', u'Source/WebCore/bindings/js/JSTrackCustom.cpp', u'Source/WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp', u'Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp', u'Source/WebCore/bindings/js/SerializedScriptValue.cpp', u'Source/WebCore/bindings/js/WebCoreJSClientData.h', u'Source/WebCore/bindings/js/WebCoreTypedArrayController.cpp', u'Source/WebCore/bindings/js/WebCoreTypedArrayController.h', u'Source/WebCore/bindings/scripts/CodeGenerator.pm', u'Source/WebCore/bindings/scripts/CodeGeneratorJS.pm', u'Source/WebCore/fileapi/WebKitBlobBuilder.cpp', u'Source/WebCore/fileapi/WebKitBlobBuilder.h', u'Source/WebCore/html/canvas/ArrayBuffer.idl', u'Source/WebCore/html/canvas/ArrayBufferView.idl', u'Source/WebCore/html/canvas/DataView.cpp', u'Source/WebCore/html/canvas/DataView.h', u'Source/WebCore/html/canvas/DataView.idl', u'Source/WebCore/html/canvas/Float32Array.idl', u'Source/WebCore/html/canvas/Float64Array.idl', u'Source/WebCore/html/canvas/Int16Array.idl', u'Source/WebCore/html/canvas/Int32Array.idl', u'Source/WebCore/html/canvas/Int8Array.idl', u'Source/WebCore/html/canvas/Uint16Array.idl', u'Source/WebCore/html/canvas/Uint32Array.idl', u'Source/WebCore/html/canvas/Uint8Array.idl', u'Source/WebCore/html/canvas/Uint8ClampedArray.idl', u'Source/WebCore/html/canvas/WebGLRenderingContext.cpp', u'Source/WebCore/page/Crypto.cpp', u'Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm', u'Source/WebCore/platform/graphics/filters/FECustomFilter.h', u'Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp', u'Source/WebCore/platform/graphics/filters/FilterEffect.cpp', u'Source/WebCore/testing/MockCDM.cpp', u'Source/WebKit2/ChangeLog', u'Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp', u'Source/autotools/symbols.filter']" exit_code: 1
Source/JavaScriptCore/runtime/JSTypedArrays.cpp:38:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSGlobalObject.h:28:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp:255:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 212 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 97 Early Warning System Bot 2013-08-15 00:12:37 PDT
Comment on attachment 208793 [details]
another rebase and more qt fixes

Attachment 208793 [details] did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1461633
Comment 98 Early Warning System Bot 2013-08-15 00:15:35 PDT
Comment on attachment 208793 [details]
another rebase and more qt fixes

Attachment 208793 [details] did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1468162
Comment 99 Filip Pizlo 2013-08-15 00:24:54 PDT
OK, this patch only fails to build because the bots need a clean build.
Comment 100 Build Bot 2013-08-15 00:42:26 PDT
Comment on attachment 208793 [details]
another rebase and more qt fixes

Attachment 208793 [details] did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1466213
Comment 101 Build Bot 2013-08-15 04:00:42 PDT
Comment on attachment 208793 [details]
another rebase and more qt fixes

Attachment 208793 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1473105
Comment 102 Gabor Rapcsanyi 2013-08-15 05:42:49 PDT
(In reply to comment #99)
> OK, this patch only fails to build because the bots need a clean build.

I have tried a clean Qt build and there was an error:

/home/rgabor/WebKit/Source/WebCore/bridge/qt/qt_runtime.cpp: In function 'QVariant JSC::Bindings::convertValueToQVariant(JSContextRef, JSValueRef, QMetaType::Type, int*, WTF::HashSet<OpaqueJSValue*>*, int, const OpaqueJSValue**)':
/home/rgabor/WebKit/Source/WebCore/bridge/qt/qt_runtime.cpp:499:79: error: cannot convert 'WTF::PassRefPtr<JSC::GenericTypedArrayView<JSC::Uint8Adaptor> >' to 'JSC::Uint8Array* {aka JSC::GenericTypedArrayView<JSC::Uint8Adaptor>*}' in initialization

This patch fixed it:

ndex: Source/WebCore/bridge/qt/qt_runtime.cpp
===================================================================
--- Source/WebCore/bridge/qt/qt_runtime.cpp     (revision 154096)
+++ Source/WebCore/bridge/qt/qt_runtime.cpp     (working copy)
@@ -494,7 +494,7 @@
 
         case QMetaType::QByteArray: {
             if (type == RTUint8Array) {
-                JSC::Uint8Array* arr = toUint8Array(toJS(toJS(context), value));
+                JSC::Uint8Array* arr = toUint8Array(toJS(toJS(context), value)).get();
                 ret = QVariant(QByteArray(reinterpret_cast<const char*>(arr->data()), arr->length()));
                 dist = 0;
             } else {
Comment 103 Arunprasad Rajkumar 2013-08-15 06:16:40 PDT
(In reply to comment #98)
> (From update of attachment 208793 [details])
> Attachment 208793 [details] did not pass qt-wk2-ews (qt-wk2):
> Output: http://webkit-queues.appspot.com/results/1468162

Filip,

I tested your final patch with Qt build,

diff --git a/Source/WebCore/bridge/qt/qt_runtime.cpp b/Source/WebCore/bridge/qt/qt_runtime.cpp
index 015bb3a..d61aff3 100644
--- a/Source/WebCore/bridge/qt/qt_runtime.cpp
+++ b/Source/WebCore/bridge/qt/qt_runtime.cpp
@@ -494,7 +494,7 @@ QVariant convertValueToQVariant(JSContextRef context, JSValueRef value, QMetaTyp
 
         case QMetaType::QByteArray: {
             if (type == RTUint8Array) {
-                JSC::Uint8Array* arr = toUint8Array(toJS(toJS(context), value));
+                RefPtr<JSC::Uint8Array> arr = toUint8Array(toJS(toJS(context), value)).leakRef();
                 ret = QVariant(QByteArray(reinterpret_cast<const char*>(arr->data()), arr->length()));
                 dist = 0;
             } else {


A little change needed in qt_runtime.cpp :)
Comment 104 Arunprasad Rajkumar 2013-08-15 06:17:41 PDT
(In reply to comment #102)
> (In reply to comment #99)
> > OK, this patch only fails to build because the bots need a clean build.
> 
> I have tried a clean Qt build and there was an error:
> 
> /home/rgabor/WebKit/Source/WebCore/bridge/qt/qt_runtime.cpp: In function 'QVariant JSC::Bindings::convertValueToQVariant(JSContextRef, JSValueRef, QMetaType::Type, int*, WTF::HashSet<OpaqueJSValue*>*, int, const OpaqueJSValue**)':
> /home/rgabor/WebKit/Source/WebCore/bridge/qt/qt_runtime.cpp:499:79: error: cannot convert 'WTF::PassRefPtr<JSC::GenericTypedArrayView<JSC::Uint8Adaptor> >' to 'JSC::Uint8Array* {aka JSC::GenericTypedArrayView<JSC::Uint8Adaptor>*}' in initialization
> 
> This patch fixed it:
> 
> ndex: Source/WebCore/bridge/qt/qt_runtime.cpp
> ===================================================================
> --- Source/WebCore/bridge/qt/qt_runtime.cpp     (revision 154096)
> +++ Source/WebCore/bridge/qt/qt_runtime.cpp     (working copy)
> @@ -494,7 +494,7 @@
> 
>          case QMetaType::QByteArray: {
>              if (type == RTUint8Array) {
> -                JSC::Uint8Array* arr = toUint8Array(toJS(toJS(context), value));
> +                JSC::Uint8Array* arr = toUint8Array(toJS(toJS(context), value)).get();
>                  ret = QVariant(QByteArray(reinterpret_cast<const char*>(arr->data()), arr->length()));
>                  dist = 0;
>              } else {

oops! i didn't see this, sorry :(
Comment 105 Arunprasad Rajkumar 2013-08-15 06:20:51 PDT
(In reply to comment #103)
> (In reply to comment #98)
> > (From update of attachment 208793 [details] [details])
> > Attachment 208793 [details] [details] did not pass qt-wk2-ews (qt-wk2):
> > Output: http://webkit-queues.appspot.com/results/1468162
> 
> Filip,
> 
> I tested your final patch with Qt build,
> 
> diff --git a/Source/WebCore/bridge/qt/qt_runtime.cpp b/Source/WebCore/bridge/qt/qt_runtime.cpp
> index 015bb3a..d61aff3 100644
> --- a/Source/WebCore/bridge/qt/qt_runtime.cpp
> +++ b/Source/WebCore/bridge/qt/qt_runtime.cpp
> @@ -494,7 +494,7 @@ QVariant convertValueToQVariant(JSContextRef context, JSValueRef value, QMetaTyp
> 
>          case QMetaType::QByteArray: {
>              if (type == RTUint8Array) {
> -                JSC::Uint8Array* arr = toUint8Array(toJS(toJS(context), value));
> +                RefPtr<JSC::Uint8Array> arr = toUint8Array(toJS(toJS(context), value)).leakRef();
>                  ret = QVariant(QByteArray(reinterpret_cast<const char*>(arr->data()), arr->length()));
>                  dist = 0;
>              } else {
> 
> 
> A little change needed in qt_runtime.cpp :)

RefPtr<JSC::Uint8Array> arr = toUint8Array(toJS(toJS(context), value));
Comment 106 Filip Pizlo 2013-08-15 08:58:52 PDT
(In reply to comment #105)
> (In reply to comment #103)
> > (In reply to comment #98)
> > > (From update of attachment 208793 [details] [details] [details])
> > > Attachment 208793 [details] [details] [details] did not pass qt-wk2-ews (qt-wk2):
> > > Output: http://webkit-queues.appspot.com/results/1468162
> > 
> > Filip,
> > 
> > I tested your final patch with Qt build,
> > 
> > diff --git a/Source/WebCore/bridge/qt/qt_runtime.cpp b/Source/WebCore/bridge/qt/qt_runtime.cpp
> > index 015bb3a..d61aff3 100644
> > --- a/Source/WebCore/bridge/qt/qt_runtime.cpp
> > +++ b/Source/WebCore/bridge/qt/qt_runtime.cpp
> > @@ -494,7 +494,7 @@ QVariant convertValueToQVariant(JSContextRef context, JSValueRef value, QMetaTyp
> > 
> >          case QMetaType::QByteArray: {
> >              if (type == RTUint8Array) {
> > -                JSC::Uint8Array* arr = toUint8Array(toJS(toJS(context), value));
> > +                RefPtr<JSC::Uint8Array> arr = toUint8Array(toJS(toJS(context), value)).leakRef();
> >                  ret = QVariant(QByteArray(reinterpret_cast<const char*>(arr->data()), arr->length()));
> >                  dist = 0;
> >              } else {
> > 
> > 
> > A little change needed in qt_runtime.cpp :)
> 
> RefPtr<JSC::Uint8Array> arr = toUint8Array(toJS(toJS(context), value));

Thank you!
Comment 107 Filip Pizlo 2013-08-15 13:42:54 PDT
Landed in http://trac.webkit.org/changeset/154127
Comment 108 Filip Pizlo 2013-08-15 14:00:11 PDT
Landed 32-bit fix in http://trac.webkit.org/changeset/154129
Comment 109 Filip Pizlo 2013-08-15 14:11:20 PDT
Landed binding test fixes in http://trac.webkit.org/changeset/154131
Comment 110 Filip Pizlo 2013-08-15 14:26:32 PDT
Test rebase and exception test cleanup in http://trac.webkit.org/changeset/154132
Comment 111 Filip Pizlo 2013-08-20 00:34:41 PDT
*** Bug 103454 has been marked as a duplicate of this bug. ***
Comment 112 Landry Breuil 2013-08-28 13:58:01 PDT
This seems like a huge amount of work... but unfortunately, it seems this is causing webkitgtk 2.1.90 to fail build on OpenBSD/amd64:

Source/JavaScriptCore/heap/GCIncomingRefCountedSetInlines.h: In destructor 'JSC::GCIncomingRefCountedSet<T>::~GCIncomingRefCountedSet() [with T = JSC::ArrayBuffer]':
Source/JavaScriptCore/heap/Heap.cpp:270:   instantiated from here
Source/JavaScriptCore/heap/GCIncomingRefCountedSetInlines.h:44: error: no matching function for call to 'JSC::ArrayBuffer::filterIncomingReferences(bool ()(JSC::JSCell*))'
./Source/JavaScriptCore/heap/GCIncomingRefCountedInlines.h:61: note: candidates are: bool JSC::GCIncomingRefCounted<T>::filterIncomingReferences(FilterFunctionType&) [with FilterFunctionType = bool ()(JSC::JSCell*), T = JSC::ArrayBuffer]
Source/JavaScriptCore/heap/GCIncomingRefCountedSetInlines.h: In member function 'void JSC::GCIncomingRefCountedSet<T>::sweep() [with T = JSC::ArrayBuffer]':
Source/JavaScriptCore/heap/Heap.cpp:771:   instantiated from here
Source/JavaScriptCore/heap/GCIncomingRefCountedSetInlines.h:70: error: no matching function for call to 'JSC::ArrayBuffer::filterIncomingReferences(bool ()(JSC::JSCell*))'
./Source/JavaScriptCore/heap/GCIncomingRefCountedInlines.h:61: note: candidates are: bool JSC::GCIncomingRefCounted<T>::filterIncomingReferences(FilterFunctionType&) [with FilterFunctionType = bool ()(JSC::JSCell*), T = JSC::ArrayBuffer]
./Source/JavaScriptCore/runtime/WriteBarrier.h: In member function 'T** JSC::WriteBarrierBase<T>::slot() [with T = JSC::Structure]':
./Source/JavaScriptCore/heap/SlotVisitorInlines.h:115:   instantiated from 'void JSC::SlotVisitor::append(JSC::WriteBarrierBase<T>*) [with T = JSC::Structure]'
./Source/JavaScriptCore/bytecode/ObjectAllocationProfile.h:109:   instantiated from here
./Source/JavaScriptCore/runtime/WriteBarrier.h:130: warning: dereferencing type-punned pointer will break strict-aliasing rules


2.1.3 was building fine.
Comment 113 Filip Pizlo 2013-08-28 14:18:17 PDT
(In reply to comment #112)
> This seems like a huge amount of work... but unfortunately, it seems this is causing webkitgtk 2.1.90 to fail build on OpenBSD/amd64:
> 
> Source/JavaScriptCore/heap/GCIncomingRefCountedSetInlines.h: In destructor 'JSC::GCIncomingRefCountedSet<T>::~GCIncomingRefCountedSet() [with T = JSC::ArrayBuffer]':
> Source/JavaScriptCore/heap/Heap.cpp:270:   instantiated from here
> Source/JavaScriptCore/heap/GCIncomingRefCountedSetInlines.h:44: error: no matching function for call to 'JSC::ArrayBuffer::filterIncomingReferences(bool ()(JSC::JSCell*))'
> ./Source/JavaScriptCore/heap/GCIncomingRefCountedInlines.h:61: note: candidates are: bool JSC::GCIncomingRefCounted<T>::filterIncomingReferences(FilterFunctionType&) [with FilterFunctionType = bool ()(JSC::JSCell*), T = JSC::ArrayBuffer]
> Source/JavaScriptCore/heap/GCIncomingRefCountedSetInlines.h: In member function 'void JSC::GCIncomingRefCountedSet<T>::sweep() [with T = JSC::ArrayBuffer]':
> Source/JavaScriptCore/heap/Heap.cpp:771:   instantiated from here
> Source/JavaScriptCore/heap/GCIncomingRefCountedSetInlines.h:70: error: no matching function for call to 'JSC::ArrayBuffer::filterIncomingReferences(bool ()(JSC::JSCell*))'
> ./Source/JavaScriptCore/heap/GCIncomingRefCountedInlines.h:61: note: candidates are: bool JSC::GCIncomingRefCounted<T>::filterIncomingReferences(FilterFunctionType&) [with FilterFunctionType = bool ()(JSC::JSCell*), T = JSC::ArrayBuffer]
> ./Source/JavaScriptCore/runtime/WriteBarrier.h: In member function 'T** JSC::WriteBarrierBase<T>::slot() [with T = JSC::Structure]':
> ./Source/JavaScriptCore/heap/SlotVisitorInlines.h:115:   instantiated from 'void JSC::SlotVisitor::append(JSC::WriteBarrierBase<T>*) [with T = JSC::Structure]'
> ./Source/JavaScriptCore/bytecode/ObjectAllocationProfile.h:109:   instantiated from here
> ./Source/JavaScriptCore/runtime/WriteBarrier.h:130: warning: dereferencing type-punned pointer will break strict-aliasing rules
> 
> 
> 2.1.3 was building fine.

Some compilers have different ideas of what sort of template madness is legal.  A good start would be to tell us what compiler you're using - clang or gcc, and what version.

My first instinct is to try to get calls to filterIncomingReferences to use an explicit instantiation of FilterFunctionType.  But I don't have OpenBSD so I wouldn't be able to test that theory.
Comment 114 Landry Breuil 2013-08-30 12:38:45 PDT
(In reply to comment #113)
> (In reply to comment #112)

> > 2.1.3 was building fine.
> 
> Some compilers have different ideas of what sort of template madness is legal.  A good start would be to tell us what compiler you're using - clang or gcc, and what version.

I knew this is unsupported, but it had been working "fine" so far... i'm using gcc 4.2, which is what openbsd has in the basesystem. .... unless there's a workaround (which i doubt, since webkit2 requires c++11), guess i'll have to give up on that, and use 4.6 from ports, which allows me to build 2.1.90 on i386/amd64, gtk2/gtk3. sigh@toolchains..