Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
branch: master

Large array shouldn't be slow

https://bugs.webkit.org/show_bug.cgi?id=144617

Reviewed by Geoffrey Garen.
        
PerformanceTests:

Add the hash-map benchmark to LongSpider. LongSpider was already not a perfect match of
SunSpider. It's not an official benchmark. It contains benchmarks that are relatively
long-running. So, hash-map sort of belongs here.

* LongSpider/hash-map.js: Added.
(HashMap):
(HashMap.):
(.get var):

Source/JavaScriptCore:

Decouple MIN_SPARSE_ARRAY_INDEX, which is the threshold for storing to the sparse map when
you're already using ArrayStorage mode, from the minimul array length required to use
ArrayStorage in a new Array(length) allocation.
        
Lift the array allocation length threshold to something very high. If this works, we'll
probably remove that threshold entirely.
        
This is a 27% speed-up on JetStream/hash-map. Because run-jsc-benchmarks still can't run
JetStream as a discrete suite, this adds hash-map to LongSpider so that we run it somewhere
for now.

* dfg/DFGCallArrayAllocatorSlowPathGenerator.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNewArrayWithSize):
* runtime/ArrayConventions.h:
* runtime/JSArray.h:
(JSC::JSArray::create):
* runtime/JSGlobalObject.h:
(JSC::constructEmptyArray):
* tests/stress/new-array-storage-array-with-size.js: Skip this test until we fix https://bugs.webkit.org/show_bug.cgi?id=144609.

Tools:

Add the hash-map benchmark to LongSpider. LongSpider was already not a perfect match of
SunSpider. It's not an official benchmark. It contains benchmarks that are relatively
long-running. So, hash-map sort of belongs here.

* Scripts/run-jsc-benchmarks:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@183787 268f45cc-cd09-0410-ab3c-d52691b4dbfc
latest commit c8f368790c
fpizlo@apple.com authored
..
Failed to load latest commit information.
Animation Some perf. tests have variances that differ greatly between runs
Bindings REGRESSION: 2x regression on Dromaeo DOM query tests
CSS Add a balanced benchmark for QuerySelector
Canvas [CG] Have Canvas use the IOSurfacePool
DOM Add PerformanceTest for document startup via iframe append/remove
Dromaeo Bump jQuery to same version that dromaeo.com uses.
Interactive Blur filter performance test doesn't provide results
JetStream Add JetStream to PerformanceTests
Layout Clear up the test content when test is done.
LongSpider Large array shouldn't be slow
MallocBench bmalloc: support aligned allocation
Mutation runner.js in performance tests should define a class
Octane/wrappers It should be fun and easy to run every possible JavaScript benchmark …
Parser .: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
SVG textPath layout performance improvement.
ShadowDOM Use element.webkitCreateShadowRoot instead of WebKitShadowRoot in Per…
Speedometer Fix typo bug in Speedometer/resources/main.js
SunSpider Fix failing v8-deltablue.js for ARM
XSSAuditor 2011-05-30 Daniel Bates <dbates@webkit.org>
resources Add option for hiding Confidence Interval Delta on the performance te…
.gitattributes Split up top-level .gitignore and .gitattributes
ChangeLog Large array shouldn't be slow
Skipped Add JetStream to PerformanceTests
Something went wrong with that request. Please try again.