Summary: | JSC should infer when indexed storage is contiguous, and optimize for it | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Filip Pizlo <fpizlo> | ||||||||||||||||||||||||||||||||||||||||||||||
Component: | JavaScriptCore | Assignee: | Filip Pizlo <fpizlo> | ||||||||||||||||||||||||||||||||||||||||||||||
Status: | RESOLVED FIXED | ||||||||||||||||||||||||||||||||||||||||||||||||
Severity: | Normal | CC: | barraclough, benjamin, ggaren, gustavo, gyuyoung.kim, mark.lam, mhahnenberg, msaboff, oliver, ossy, philn, rakuco, webkit.review.bot, xan.lopez | ||||||||||||||||||||||||||||||||||||||||||||||
Priority: | P2 | ||||||||||||||||||||||||||||||||||||||||||||||||
Version: | 528+ (Nightly build) | ||||||||||||||||||||||||||||||||||||||||||||||||
Hardware: | All | ||||||||||||||||||||||||||||||||||||||||||||||||
OS: | All | ||||||||||||||||||||||||||||||||||||||||||||||||
Bug Depends on: | 97535, 97537, 98236, 98857, 98859 | ||||||||||||||||||||||||||||||||||||||||||||||||
Bug Blocks: | 98605, 98606, 98608 | ||||||||||||||||||||||||||||||||||||||||||||||||
Attachments: |
|
Description
Filip Pizlo
2012-09-20 20:47:27 PDT
Created attachment 165040 [details]
it begins
Created attachment 165296 [details]
it has more things
Patchable get_by_val's in the baseline JIT. They're no fun.
Created attachment 165304 [details]
patching is done
get_by_val/put_by_val patching is done. still need to pull this through the DFG.
Created attachment 165542 [details]
dfg stuff has begun
Created attachment 165747 [details]
more
Wrote a bunch of the DFG code. Not done yet.
Created attachment 165838 [details]
almost there!
Code is written but it hasn't been compiled or tested.
Oh, and I haven't done anything about 32-bit yet.
Created attachment 165861 [details]
fixing things
Created attachment 165945 [details]
it compiles!
Created attachment 166374 [details]
sunspider runs
I don't know how fast it runs, but at least it runs. Still lots more work to do before this patch is complete.
Created attachment 166379 [details]
it sort of works
I'm sort of reconsidering whether my idea of ridding the world of holes was the right approach. Although this patch is already a speed-up, it's looking like it would be an even clearer win if I did have some support for holes in contiguous arrays.
Created attachment 166395 [details]
new approach: holy contiguous
Note yet done.
Created attachment 166397 [details]
I think it's done (holy contiguous)
Still haven't compiled it yet. What could go wrong.
Created attachment 166401 [details]
it compiles (holy contiguous)
Don't know if it does things yet.
Created attachment 167234 [details]
it works on 64-bit, starting to make it work on 32-bit
Created attachment 167244 [details]
the patch, possibly
I wrote the 32-bit code but I'm not sure if it works, yet.
Created attachment 167462 [details]
the patch
It's ready!
Attachment 167462 [details] did not pass style-queue:
Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/ChangeLog', u'Source..." exit_code: 1
Source/JavaScriptCore/runtime/JSObject.h:695: The parameter name "butterfly" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:764: The parameter name "globalData" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGOperations.cpp:609: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3]
Source/JavaScriptCore/runtime/JSArray.cpp:1118: Should have only a single space after a punctuation in a comment. [whitespace/comments] [5]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1430: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1465: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Source/JavaScriptCore/runtime/JSArray.h:151: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:152: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:152: The parameter name "storage" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:156: The parameter name "callType" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:156: The parameter name "callData" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:202: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Total errors found: 12 in 52 files
If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 167462 [details] the patch Attachment 167462 [details] did not pass qt-ews (qt): Output: http://queues.webkit.org/results/14207063 Comment on attachment 167462 [details] the patch Attachment 167462 [details] did not pass qt-wk2-ews (qt): Output: http://queues.webkit.org/results/14181802 Comment on attachment 167462 [details] the patch Attachment 167462 [details] did not pass win-ews (win): Output: http://queues.webkit.org/results/14181806 Comment on attachment 167462 [details] the patch Attachment 167462 [details] did not pass efl-ews (efl): Output: http://queues.webkit.org/results/14183812 Comment on attachment 167462 [details] the patch Attachment 167462 [details] did not pass mac-ews (mac): Output: http://queues.webkit.org/results/14181834 New failing tests: fast/js/array-bad-time.html fast/js/cross-frame-really-bad-time-with-__proto__.html fast/js/mozilla/strict/15.4.4.12.html fast/js/array-slow-put.html fast/js/dfg-array-push-bad-time.html fast/js/cross-frame-really-bad-time.html fast/js/array-defineOwnProperty.html sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.6_Array_prototype_pop/S15.4.4.6_A4_T1.html fast/js/Object-defineProperty.html fast/dom/message-port-deleted-by-accessor.html fast/canvas/webgl/shader-deleted-by-accessor.html fast/js/dfg-holy-put-by-val-interferes-with-get-array-length.html fast/js/dfg-array-push-slow-put.html fast/js/object-bad-time.html fast/js/dfg-array-pop-side-effects.html fast/js/mozilla/strict/15.4.4.6.html Comment on attachment 167462 [details]
the patch
Seems to be failing all the things.
Created attachment 167502 [details]
the patch
Still need to make the various build systems work but this one should be fine other than that.
Attachment 167502 [details] did not pass style-queue:
Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/ChangeLog', u'Source..." exit_code: 1
Source/JavaScriptCore/runtime/JSObject.h:695: The parameter name "butterfly" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:764: The parameter name "globalData" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGOperations.cpp:609: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3]
Source/JavaScriptCore/runtime/JSArray.cpp:1120: Should have only a single space after a punctuation in a comment. [whitespace/comments] [5]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1430: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1465: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Source/JavaScriptCore/runtime/JSArray.h:151: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:152: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:152: The parameter name "storage" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:156: The parameter name "callType" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:156: The parameter name "callData" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:202: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Total errors found: 12 in 52 files
If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 167502 [details] the patch Attachment 167502 [details] did not pass qt-ews (qt): Output: http://queues.webkit.org/results/14221169 Comment on attachment 167502 [details] the patch Attachment 167502 [details] did not pass qt-wk2-ews (qt): Output: http://queues.webkit.org/results/14223141 Comment on attachment 167502 [details] the patch Attachment 167502 [details] did not pass win-ews (win): Output: http://queues.webkit.org/results/14228125 Comment on attachment 167502 [details] the patch Attachment 167502 [details] did not pass efl-ews (efl): Output: http://queues.webkit.org/results/14218180 Created attachment 167513 [details]
the patch
It should now pass all of the things, at least on Mac. We'll see how things go on other build systems.
Attachment 167513 [details] did not pass style-queue:
Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/CMakeLists.txt', u'S..." exit_code: 1
Source/JavaScriptCore/runtime/JSObject.h:696: The parameter name "butterfly" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:765: The parameter name "globalData" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGOperations.cpp:609: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3]
Source/JavaScriptCore/runtime/JSArray.cpp:1120: Should have only a single space after a punctuation in a comment. [whitespace/comments] [5]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1430: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1465: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Source/JavaScriptCore/runtime/JSArray.h:157: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:158: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:158: The parameter name "storage" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:162: The parameter name "callType" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:162: The parameter name "callData" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:208: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Total errors found: 12 in 57 files
If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 167513 [details] the patch Attachment 167513 [details] did not pass efl-ews (efl): Output: http://queues.webkit.org/results/14199008 Comment on attachment 167513 [details] the patch Attachment 167513 [details] did not pass qt-ews (qt): Output: http://queues.webkit.org/results/14204564 Comment on attachment 167513 [details] the patch Attachment 167513 [details] did not pass gtk-ews (gtk): Output: http://queues.webkit.org/results/14105048 Comment on attachment 167513 [details] the patch Attachment 167513 [details] did not pass qt-wk2-ews (qt): Output: http://queues.webkit.org/results/14205572 Created attachment 167517 [details]
the patch
Attachment 167517 [details] did not pass style-queue:
Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/CMakeLists.txt', u'S..." exit_code: 1
Source/JavaScriptCore/runtime/JSObject.h:696: The parameter name "butterfly" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:765: The parameter name "globalData" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGOperations.cpp:609: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3]
Source/JavaScriptCore/runtime/JSArray.cpp:1120: Should have only a single space after a punctuation in a comment. [whitespace/comments] [5]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1430: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1465: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Source/JavaScriptCore/runtime/JSArray.h:157: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:158: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:158: The parameter name "storage" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:162: The parameter name "callType" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:162: The parameter name "callData" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:208: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Total errors found: 12 in 57 files
If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 167517 [details] the patch Attachment 167517 [details] did not pass qt-ews (qt): Output: http://queues.webkit.org/results/14196815 Comment on attachment 167517 [details] the patch Attachment 167517 [details] did not pass qt-wk2-ews (qt): Output: http://queues.webkit.org/results/14221201 Comment on attachment 167517 [details] the patch Attachment 167517 [details] did not pass win-ews (win): Output: http://queues.webkit.org/results/14209382 Created attachment 167599 [details]
the patch
Attachment 167599 [details] did not pass style-queue:
Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/CMakeLists.txt', u'S..." exit_code: 1
Source/JavaScriptCore/runtime/JSObject.h:696: The parameter name "butterfly" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:765: The parameter name "globalData" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGOperations.cpp:609: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3]
Source/JavaScriptCore/runtime/JSArray.cpp:1120: Should have only a single space after a punctuation in a comment. [whitespace/comments] [5]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1430: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1465: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Source/JavaScriptCore/runtime/JSArray.h:157: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:158: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:158: The parameter name "storage" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:162: The parameter name "callType" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:162: The parameter name "callData" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:208: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Total errors found: 12 in 57 files
If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 167599 [details] the patch Attachment 167599 [details] did not pass win-ews (win): Output: http://queues.webkit.org/results/14207627 Created attachment 167647 [details]
the patch
Attachment 167647 [details] did not pass style-queue:
Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/CMakeLists.txt', u'S..." exit_code: 1
Source/JavaScriptCore/runtime/JSObject.h:696: The parameter name "butterfly" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:765: The parameter name "globalData" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGOperations.cpp:609: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3]
Source/JavaScriptCore/runtime/JSArray.cpp:1120: Should have only a single space after a punctuation in a comment. [whitespace/comments] [5]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1430: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1465: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Source/JavaScriptCore/runtime/JSArray.h:157: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:158: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:158: The parameter name "storage" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:162: The parameter name "callType" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:162: The parameter name "callData" adds no information, so it should be removed. [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSArray.h:208: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]
Total errors found: 12 in 57 files
If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 167647 [details] the patch Attachment 167647 [details] did not pass win-ews (win): Output: http://queues.webkit.org/results/14211595 Comment on attachment 167647 [details]
the patch
r=me with style and build fixes
Created attachment 167844 [details]
patch for landing
Fixing things.
Attachment 167844 [details] did not pass style-queue:
Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/CMakeLists.txt', u'S..." exit_code: 1
Source/JavaScriptCore/dfg/DFGOperations.cpp:609: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3]
Total errors found: 1 in 58 files
If any of these errors are false positives, please file a bug against check-webkit-style.
Landed in http://trac.webkit.org/changeset/130826 (In reply to comment #50) > Landed in http://trac.webkit.org/changeset/130826 ... and buildfix landed in http://trac.webkit.org/changeset/130826 ... and it caused a serious regression on Qt-ARM: https://bugs.webkit.org/show_bug.cgi?id=98857 One more regression on Qt-WK2 64 bit: https://bugs.webkit.org/show_bug.cgi?id=98859 |