WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
120567
CodeBlock::jettison() should be implicit
https://bugs.webkit.org/show_bug.cgi?id=120567
Summary
CodeBlock::jettison() should be implicit
Filip Pizlo
Reported
2013-08-31 17:45:09 PDT
Right now if we remove all references to a CodeBlock but that CodeBlock might still be used for execution, we have to explicitly hand the CodeBlock over to the GC. The whole mechanism is oddly similar to DeferredRefCounted except it requires more work. This implies that we should just use DeferredRefCounted for CodeBlocks and make all CodeBlocks be part of the GC's CodeBlock sweep. This also implies making DeferedRefCounted be thread-safe.
Attachments
the patch
(55.50 KB, patch)
2013-09-01 20:48 PDT
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
the patch
(55.52 KB, patch)
2013-09-01 20:49 PDT
,
Filip Pizlo
eflews.bot
: commit-queue-
Details
Formatted Diff
Diff
the patch
(56.28 KB, patch)
2013-09-01 21:35 PDT
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
the patch
(58.86 KB, patch)
2013-09-02 11:44 PDT
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
the patch
(56.56 KB, patch)
2013-09-02 21:52 PDT
,
Filip Pizlo
oliver
: review+
Details
Formatted Diff
Diff
Show Obsolete
(4)
View All
Add attachment
proposed patch, testcase, etc.
Filip Pizlo
Comment 1
2013-09-01 20:48:50 PDT
Created
attachment 210258
[details]
the patch
Filip Pizlo
Comment 2
2013-09-01 20:49:33 PDT
Created
attachment 210259
[details]
the patch Fix build.
WebKit Commit Bot
Comment 3
2013-09-01 20:51:40 PDT
Attachment 210259
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/CMakeLists.txt', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/GNUmakefile.list.am', u'Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/Target.pri', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/CodeBlock.h', u'Source/JavaScriptCore/dfg/DFGCommonData.h', u'Source/JavaScriptCore/heap/CodeBlockSet.cpp', u'Source/JavaScriptCore/heap/CodeBlockSet.h', u'Source/JavaScriptCore/heap/ConservativeRoots.cpp', u'Source/JavaScriptCore/heap/ConservativeRoots.h', u'Source/JavaScriptCore/heap/DFGCodeBlocks.cpp', u'Source/JavaScriptCore/heap/DFGCodeBlocks.h', u'Source/JavaScriptCore/heap/Heap.cpp', u'Source/JavaScriptCore/heap/Heap.h', u'Source/JavaScriptCore/interpreter/JSStack.cpp', u'Source/JavaScriptCore/interpreter/JSStack.h', u'Source/JavaScriptCore/runtime/Executable.cpp', u'Source/JavaScriptCore/runtime/Executable.h', u'Source/JavaScriptCore/runtime/VM.h']" exit_code: 1 Source/JavaScriptCore/interpreter/JSStack.h:44: Code inside a namespace should not be indented. [whitespace/indent] [4] Total errors found: 1 in 17 files If any of these errors are false positives, please file a bug against check-webkit-style.
EFL EWS Bot
Comment 4
2013-09-01 20:56:08 PDT
Comment on
attachment 210259
[details]
the patch
Attachment 210259
[details]
did not pass efl-wk2-ews (efl-wk2): Output:
http://webkit-queues.appspot.com/results/1641887
EFL EWS Bot
Comment 5
2013-09-01 21:06:52 PDT
Comment on
attachment 210259
[details]
the patch
Attachment 210259
[details]
did not pass efl-ews (efl): Output:
http://webkit-queues.appspot.com/results/1658851
Filip Pizlo
Comment 6
2013-09-01 21:35:25 PDT
Created
attachment 210260
[details]
the patch Fix EFL build.
WebKit Commit Bot
Comment 7
2013-09-01 21:37:43 PDT
Attachment 210260
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/CMakeLists.txt', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/GNUmakefile.list.am', u'Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/Target.pri', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/CodeBlock.h', u'Source/JavaScriptCore/dfg/DFGCommonData.h', u'Source/JavaScriptCore/heap/CodeBlockSet.cpp', u'Source/JavaScriptCore/heap/CodeBlockSet.h', u'Source/JavaScriptCore/heap/ConservativeRoots.cpp', u'Source/JavaScriptCore/heap/ConservativeRoots.h', u'Source/JavaScriptCore/heap/DFGCodeBlocks.cpp', u'Source/JavaScriptCore/heap/DFGCodeBlocks.h', u'Source/JavaScriptCore/heap/Heap.cpp', u'Source/JavaScriptCore/heap/Heap.h', u'Source/JavaScriptCore/interpreter/JSStack.cpp', u'Source/JavaScriptCore/interpreter/JSStack.h', u'Source/JavaScriptCore/runtime/Executable.cpp', u'Source/JavaScriptCore/runtime/Executable.h', u'Source/JavaScriptCore/runtime/VM.h']" exit_code: 1 Source/JavaScriptCore/interpreter/JSStack.h:44: Code inside a namespace should not be indented. [whitespace/indent] [4] Total errors found: 1 in 17 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 8
2013-09-01 21:53:36 PDT
Results in jsc: Benchmark report for SunSpider, V8Spider, Octane, Kraken, and JSRegress on oldmac (MacPro4,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc (
r154943
) "ImplicitJettison" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/jsc (
r154943
) 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 ImplicitJettison SunSpider: 3d-cube 6.7310+-0.0986 6.6723+-0.0609 3d-morph 8.3512+-0.1268 ? 8.3860+-0.1708 ? 3d-raytrace 8.7827+-0.2134 ? 8.8293+-0.1767 ? access-binary-trees 1.8848+-0.0197 1.8752+-0.0093 access-fannkuch 7.8991+-0.3265 ? 8.0363+-0.3866 ? might be 1.0174x slower access-nbody 4.1599+-0.0144 4.1446+-0.0084 access-nsieve 4.9290+-0.0539 4.8982+-0.0756 bitops-3bit-bits-in-byte 1.8296+-0.0088 1.8221+-0.0076 bitops-bits-in-byte 6.8539+-0.1442 6.8351+-0.1301 bitops-bitwise-and 2.8457+-0.0510 ? 2.8775+-0.0356 ? might be 1.0112x slower bitops-nsieve-bits 4.6632+-0.0395 ? 4.6639+-0.0103 ? controlflow-recursive 3.0170+-0.0080 3.0155+-0.0061 crypto-aes 5.3215+-0.0477 5.2861+-0.0299 crypto-md5 3.0448+-0.0206 3.0303+-0.0184 crypto-sha1 2.8527+-0.0205 ? 2.8690+-0.0220 ? date-format-tofte 10.8797+-0.1054 ! 11.2786+-0.1268 ! definitely 1.0367x slower date-format-xparb 7.7909+-0.1254 7.7095+-0.1000 might be 1.0106x faster math-cordic 3.9899+-0.0127 ? 3.9983+-0.0134 ? math-partial-sums 10.5781+-0.0905 10.5621+-0.1003 math-spectral-norm 2.8068+-0.0101 ? 2.8101+-0.0166 ? regexp-dna 12.6640+-0.1864 ? 12.8699+-0.1285 ? might be 1.0163x slower string-base64 5.3085+-0.0999 ? 5.3469+-0.0675 ? string-fasta 10.9478+-0.1364 ? 11.1298+-0.1813 ? might be 1.0166x slower string-tagcloud 14.3454+-0.1577 ? 14.4694+-0.2088 ? string-unpack-code 29.0113+-0.1417 ? 29.1129+-0.1415 ? string-validate-input 6.4946+-0.0691 ? 6.5582+-0.1419 ? <arithmetic> * 7.2301+-0.0384 ? 7.2726+-0.0349 ? might be 1.0059x slower <geometric> 5.7963+-0.0272 ? 5.8162+-0.0203 ? might be 1.0034x slower <harmonic> 4.7449+-0.0183 ? 4.7504+-0.0093 ? might be 1.0012x slower TipOfTree ImplicitJettison V8Spider: crypto 80.6117+-0.2111 ? 80.9390+-0.7061 ? deltablue 103.6331+-1.8900 101.6928+-0.5743 might be 1.0191x faster earley-boyer 69.8948+-0.4027 69.8701+-0.3126 raytrace 40.2879+-0.2596 39.9462+-0.1811 regexp 101.2585+-0.5719 ? 101.7424+-0.5902 ? richards 115.4621+-1.0821 113.8552+-1.2683 might be 1.0141x faster splay 46.9685+-0.4845 46.7887+-0.4084 <arithmetic> 79.7310+-0.3569 79.2621+-0.2851 might be 1.0059x faster <geometric> * 74.6434+-0.3109 74.2545+-0.2353 might be 1.0052x faster <harmonic> 69.2898+-0.2870 68.9463+-0.2148 might be 1.0050x faster TipOfTree ImplicitJettison Octane and V8v7: encrypt 0.46836+-0.00069 0.46832+-0.00097 decrypt 8.62853+-0.01952 8.62709+-0.01220 deltablue x2 0.58524+-0.00292 0.58435+-0.00254 earley 0.87246+-0.00748 ? 0.87249+-0.00666 ? boyer 12.44541+-0.07217 12.37393+-0.01378 raytrace x2 4.37338+-0.02968 ^ 4.29304+-0.03128 ^ definitely 1.0187x faster regexp x2 32.60061+-0.30234 ? 33.16659+-0.99629 ? might be 1.0174x slower richards x2 0.31569+-0.00252 0.31496+-0.00129 splay x2 0.63522+-0.01816 0.63052+-0.01972 navier-stokes x2 10.84605+-0.00634 10.82979+-0.01647 closure 0.43911+-0.04874 ? 0.44005+-0.04764 ? jquery 5.35372+-0.71731 ? 5.41851+-0.71117 ? might be 1.0121x slower gbemu x2 82.90794+-0.99159 82.03408+-1.15077 might be 1.0107x faster box2d x2 32.11462+-0.11916 ? 32.36345+-0.31430 ? V8v7: <arithmetic> 7.57045+-0.03930 ? 7.62377+-0.12420 ? might be 1.0070x slower <geometric> * 2.42628+-0.01133 2.42083+-0.01324 might be 1.0023x faster <harmonic> 0.93635+-0.00513 0.93350+-0.00493 might be 1.0031x faster Octane including V8v7: <arithmetic> 16.22569+-0.09973 16.21063+-0.12430 might be 1.0009x faster <geometric> * 4.05140+-0.04127 4.04646+-0.03842 might be 1.0012x faster <harmonic> 1.11688+-0.01455 1.11447+-0.01338 might be 1.0022x faster TipOfTree ImplicitJettison Kraken: ai-astar 492.472+-0.529 ? 495.053+-4.550 ? audio-beat-detection 241.612+-1.172 241.559+-0.240 audio-dft 306.775+-1.087 ? 308.436+-1.934 ? audio-fft 146.032+-2.199 144.419+-0.184 might be 1.0112x faster audio-oscillator 252.219+-4.068 252.204+-4.258 imaging-darkroom 279.713+-1.992 279.285+-2.042 imaging-desaturate 158.572+-0.110 ^ 158.273+-0.102 ^ definitely 1.0019x faster imaging-gaussian-blur 403.085+-0.161 403.054+-0.414 json-parse-financial 81.039+-0.529 ! 81.811+-0.131 ! definitely 1.0095x slower json-stringify-tinderbox 111.230+-2.844 ^ 104.804+-0.297 ^ definitely 1.0613x faster stanford-crypto-aes 93.672+-0.812 93.233+-0.522 stanford-crypto-ccm 101.273+-2.224 99.245+-2.086 might be 1.0204x faster stanford-crypto-pbkdf2 265.375+-1.927 262.319+-1.289 might be 1.0116x faster stanford-crypto-sha256-iterative 116.426+-0.863 115.124+-0.488 might be 1.0113x faster <arithmetic> * 217.821+-0.275 ^ 217.059+-0.466 ^ definitely 1.0035x faster <geometric> 186.880+-0.347 ^ 185.537+-0.302 ^ definitely 1.0072x faster <harmonic> 161.150+-0.439 ^ 159.543+-0.323 ^ definitely 1.0101x faster TipOfTree ImplicitJettison JSRegress: adapt-to-double-divide 22.7295+-0.1144 22.7216+-0.1307 aliased-arguments-getbyval 0.9144+-0.0076 ? 0.9206+-0.0169 ? allocate-big-object 2.5630+-0.0312 ? 2.5655+-0.0487 ? arity-mismatch-inlining 0.8774+-0.0132 ^ 0.8555+-0.0066 ^ definitely 1.0256x faster array-access-polymorphic-structure 6.7848+-0.0597 ? 6.8949+-0.1193 ? might be 1.0162x slower array-nonarray-polymorhpic-access 108.2388+-43.6761 82.0222+-31.8818 might be 1.3196x faster array-with-double-add 5.9435+-0.0451 5.8962+-0.0711 array-with-double-increment 4.3179+-0.0184 ? 4.3724+-0.0758 ? might be 1.0126x slower array-with-double-mul-add 6.8353+-0.0789 6.7859+-0.0822 array-with-double-sum 8.0209+-0.0767 ? 8.0355+-0.0732 ? array-with-int32-add-sub 10.5224+-0.1037 ? 10.6276+-0.1284 ? array-with-int32-or-double-sum 8.1203+-0.1114 ? 8.1361+-0.0587 ? ArrayBuffer-DataView-alloc-large-long-lived 121.7792+-0.6162 120.4315+-0.8221 might be 1.0112x faster ArrayBuffer-DataView-alloc-long-lived 32.2195+-0.1942 31.9228+-0.2172 ArrayBuffer-Int32Array-byteOffset 8.9260+-0.1029 8.9071+-0.0796 ArrayBuffer-Int8Array-alloc-huge-long-lived 210.9330+-1.7926 210.6550+-1.8838 ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented 164.3867+-0.7260 ? 164.4619+-0.5459 ? ArrayBuffer-Int8Array-alloc-large-long-lived 120.7121+-0.8960 ? 121.4890+-1.4696 ? ArrayBuffer-Int8Array-alloc-long-lived-buffer 53.0750+-0.4424 ^ 51.9969+-0.2407 ^ definitely 1.0207x faster ArrayBuffer-Int8Array-alloc-long-lived 31.3507+-0.1446 ^ 31.0107+-0.1745 ^ definitely 1.0110x faster ArrayBuffer-Int8Array-alloc 28.4317+-0.2091 ^ 27.4061+-0.1507 ^ definitely 1.0374x faster basic-set 20.0050+-0.2572 19.8899+-0.2844 big-int-mul 4.9024+-0.0281 ? 4.9193+-0.0200 ? boolean-test 4.4708+-0.0067 ? 4.4737+-0.0058 ? branch-fold 4.8575+-0.0233 4.8489+-0.0417 cast-int-to-double 14.2367+-0.1032 14.1815+-0.0680 cell-argument 14.6795+-0.1874 ? 14.9426+-0.3126 ? might be 1.0179x slower cfg-simplify 3.9220+-0.0072 ? 3.9419+-0.0314 ? cmpeq-obj-to-obj-other 12.5765+-0.1214 ! 13.1689+-0.2017 ! definitely 1.0471x slower constant-test 8.8235+-0.1013 8.7484+-0.1054 DataView-custom-properties 128.2912+-1.1055 126.7725+-0.9743 might be 1.0120x faster delay-tear-off-arguments-strictmode 3.4649+-0.0090 3.4493+-0.0086 direct-arguments-getbyval 0.8129+-0.0265 0.8002+-0.0065 might be 1.0159x faster double-pollution-getbyval 10.8762+-0.0658 ? 10.8899+-0.0772 ? double-pollution-putbyoffset 5.9747+-0.0846 5.8784+-0.1092 might be 1.0164x faster empty-string-plus-int 10.2134+-0.1546 10.1978+-0.1818 emscripten-cube2hash 51.0388+-2.9512 50.2244+-2.5065 might be 1.0162x faster emscripten-memops 9884.0700+-59.1976 ? 9912.6740+-46.2755 ? external-arguments-getbyval 1.9385+-0.0305 1.8971+-0.0146 might be 1.0218x faster external-arguments-putbyval 3.1179+-0.0116 ? 3.1769+-0.0509 ? might be 1.0189x slower Float32Array-matrix-mult 6.3141+-0.0618 6.2356+-0.0589 might be 1.0126x faster Float32Array-to-Float64Array-set 96.5028+-0.9013 95.6935+-1.2597 Float64Array-alloc-long-lived 106.3104+-0.3603 ? 106.6113+-0.6145 ? Float64Array-to-Int16Array-set 112.1501+-0.6829 ? 112.6286+-0.6905 ? fold-double-to-int 25.6385+-0.4444 25.5603+-0.3270 function-dot-apply 3.1068+-0.0142 3.1008+-0.0193 function-test 4.9027+-0.0550 ? 4.9558+-0.0642 ? might be 1.0108x slower get-by-id-chain-from-try-block 6.7250+-0.0747 6.7197+-0.0786 get-by-id-proto-or-self 23.0021+-0.3954 22.8692+-0.3295 get-by-id-self-or-proto 23.7293+-0.2129 23.3302+-0.3824 might be 1.0171x faster HashMap-put-get-iterate-keys 42.2551+-0.1948 ? 42.6890+-0.4497 ? might be 1.0103x slower HashMap-put-get-iterate 52.3392+-0.3545 ? 52.6565+-0.3515 ? HashMap-string-put-get-iterate 49.7579+-0.2184 ? 49.8367+-0.3297 ? imul-double-only 18.6374+-1.1599 17.6718+-0.1016 might be 1.0546x faster imul-int-only 15.7481+-0.1629 ? 15.9239+-0.2059 ? might be 1.0112x slower imul-mixed 22.1905+-0.1239 22.0642+-0.0812 in-four-cases 26.2361+-0.1239 ? 26.3006+-0.1480 ? in-one-case-false 12.4449+-0.0593 ^ 12.2651+-0.0825 ^ definitely 1.0147x faster in-one-case-true 12.3972+-0.1128 ? 12.5593+-0.2455 ? might be 1.0131x slower in-two-cases 12.7638+-0.1058 12.7635+-0.0916 indexed-properties-in-objects 4.2048+-0.0073 4.2008+-0.0154 inline-arguments-access 1.4202+-0.0059 1.4146+-0.0071 inline-arguments-local-escape 22.0736+-0.2177 21.7726+-0.1900 might be 1.0138x faster inline-get-scoped-var 6.8958+-0.1152 ? 6.9988+-0.0603 ? might be 1.0149x slower inlined-put-by-id-transition 14.7770+-0.1412 ? 14.9059+-0.1174 ? int-or-other-abs-then-get-by-val 9.2213+-0.2030 ? 9.2351+-0.1760 ? int-or-other-abs-zero-then-get-by-val 36.4715+-0.1098 ? 36.4817+-0.1459 ? int-or-other-add-then-get-by-val 10.3921+-0.1162 10.3350+-0.1322 int-or-other-add 10.5497+-0.1071 10.5198+-0.0743 int-or-other-div-then-get-by-val 6.2610+-0.0829 ? 6.3139+-0.0576 ? int-or-other-max-then-get-by-val 7.3031+-0.0840 7.2565+-0.0721 int-or-other-min-then-get-by-val 7.2094+-0.0901 ? 7.3420+-0.0764 ? might be 1.0184x slower int-or-other-mod-then-get-by-val 6.2171+-0.0626 6.1890+-0.0691 int-or-other-mul-then-get-by-val 6.6667+-0.0638 6.5637+-0.1038 might be 1.0157x faster int-or-other-neg-then-get-by-val 8.1562+-0.0696 8.1433+-0.0811 int-or-other-neg-zero-then-get-by-val 36.3405+-0.1655 36.2395+-0.0947 int-or-other-sub-then-get-by-val 10.7206+-0.1071 ? 10.7883+-0.1314 ? int-or-other-sub 8.3289+-0.0897 ? 8.4120+-0.0634 ? int-overflow-local 12.0084+-0.0933 11.9173+-0.1287 Int16Array-alloc-long-lived 69.8984+-0.8735 69.2144+-0.3685 Int16Array-bubble-sort-with-byteLength 48.1597+-0.1334 ? 48.2454+-0.1057 ? Int16Array-bubble-sort 47.7109+-0.2068 47.6504+-0.1260 Int16Array-load-int-mul 2.0004+-0.0044 ? 2.0015+-0.0044 ? Int16Array-to-Int32Array-set 89.7092+-0.8492 ! 94.3316+-0.5961 ! definitely 1.0515x slower Int32Array-alloc-huge-long-lived 709.4386+-1.9188 709.2009+-2.0252 Int32Array-alloc-huge 810.1301+-8.1386 805.3877+-7.5012 Int32Array-alloc-large-long-lived 967.4275+-6.7488 ? 969.7288+-7.1310 ? Int32Array-alloc-large 44.1471+-0.8885 ? 45.0645+-0.8774 ? might be 1.0208x slower Int32Array-alloc-long-lived 82.1567+-0.4270 ? 83.3613+-1.3752 ? might be 1.0147x slower Int32Array-alloc 4.2937+-0.0588 ? 4.3393+-0.0286 ? might be 1.0106x slower Int32Array-Int8Array-view-alloc 15.5652+-0.1833 ^ 14.9563+-0.1645 ^ definitely 1.0407x faster Int8Array-alloc-long-lived 69.4382+-0.4368 69.3611+-0.4904 Int8Array-load-with-byteLength 5.0148+-0.0466 ? 5.0238+-0.0260 ? Int8Array-load 5.0058+-0.0594 ? 5.0219+-0.0471 ? integer-divide 15.4819+-0.1207 ? 15.6345+-0.2415 ? integer-modulo 1.9564+-0.0121 1.9522+-0.0196 lots-of-fields 13.1471+-0.0819 ? 13.5041+-0.3680 ? might be 1.0272x slower make-indexed-storage 4.0718+-0.1059 ? 4.0950+-0.0550 ? make-rope-cse 5.8955+-0.0812 ? 5.9140+-0.0753 ? marsaglia 521.4882+-0.4368 ? 521.5699+-0.2258 ? method-on-number 27.4703+-0.3146 27.3305+-0.5945 negative-zero-divide 0.3916+-0.0153 0.3811+-0.0107 might be 1.0276x faster negative-zero-modulo 0.3732+-0.0128 0.3707+-0.0117 negative-zero-negate 0.3594+-0.0122 0.3563+-0.0122 nested-function-parsing-random 400.8530+-13.0858 395.9552+-13.0540 might be 1.0124x faster nested-function-parsing 47.6260+-1.1822 47.4915+-1.1015 new-array-buffer-dead 3.7454+-0.0658 3.7259+-0.0310 new-array-buffer-push 10.4325+-0.1131 ? 10.4499+-0.1080 ? new-array-dead 28.4987+-0.0857 28.4953+-0.0959 new-array-push 7.2493+-0.1067 ^ 7.0741+-0.0557 ^ definitely 1.0248x faster number-test 4.4086+-0.0133 ? 4.4121+-0.0086 ? object-closure-call 12.8126+-1.7711 11.8959+-1.9905 might be 1.0771x faster object-test 5.0146+-0.0428 4.9913+-0.0690 poly-stricteq 92.9468+-0.4358 92.9266+-0.4656 polymorphic-structure 21.0209+-0.1029 ? 21.0411+-0.1085 ? polyvariant-monomorphic-get-by-id 12.6814+-0.1064 ? 12.7088+-0.0910 ? put-by-val-large-index-blank-indexing-type 10.4111+-0.2690 ? 10.6913+-0.2910 ? might be 1.0269x slower rare-osr-exit-on-local 20.2622+-0.1100 20.1896+-0.0693 register-pressure-from-osr 31.4579+-0.1184 ? 31.5753+-0.1543 ? simple-activation-demo 34.4386+-0.1243 ? 34.4558+-0.1172 ? slow-array-profile-convergence 4.4111+-0.1395 4.2627+-0.1093 might be 1.0348x faster slow-convergence 3.5581+-0.0169 ? 3.5801+-0.0430 ? sparse-conditional 1.3267+-0.0292 1.3171+-0.0251 splice-to-remove 48.2070+-0.1763 ^ 47.4627+-0.1009 ^ definitely 1.0157x faster string-concat-object 2.9469+-0.0358 ? 2.9480+-0.0391 ? string-concat-pair-object 2.8484+-0.0213 ? 2.8633+-0.0227 ? string-concat-pair-simple 17.0550+-0.3590 ? 17.2311+-0.3648 ? might be 1.0103x slower string-concat-simple 17.1365+-0.4622 17.0983+-0.2976 string-cons-repeat 10.3207+-0.0313 10.3100+-0.0276 string-cons-tower 10.8125+-0.0435 10.8070+-0.0334 string-equality 43.7153+-0.4832 ! 45.0271+-0.6985 ! definitely 1.0300x slower string-get-by-val-big-char 13.6099+-0.2729 13.3129+-0.1237 might be 1.0223x faster string-get-by-val-out-of-bounds-insane 5.5597+-0.0753 5.4770+-0.1011 might be 1.0151x faster string-get-by-val-out-of-bounds 5.7403+-0.7662 5.7097+-0.7667 string-get-by-val 4.2967+-0.0440 ^ 4.1655+-0.0116 ^ definitely 1.0315x faster string-hash 2.6558+-0.0061 2.6510+-0.0035 string-long-ident-equality 38.4391+-0.0568 ! 39.8944+-0.9982 ! definitely 1.0379x slower string-repeat-arith 51.7699+-0.3028 51.3869+-0.2336 string-sub 98.5184+-1.3923 ? 100.7799+-3.2801 ? might be 1.0230x slower string-test 4.3500+-0.0083 ? 4.3620+-0.0080 ? string-var-equality 71.5788+-0.5270 ^ 70.9129+-0.0971 ^ definitely 1.0094x faster structure-hoist-over-transitions 3.2624+-0.0270 3.2467+-0.0269 switch-char-constant 3.4789+-0.0392 3.4472+-0.0081 switch-char 8.5098+-0.2694 8.4012+-0.2804 might be 1.0129x faster switch-constant 9.0285+-0.1235 8.9810+-0.1041 switch-string-basic-big-var 21.5043+-0.1050 ? 21.5370+-0.1134 ? switch-string-basic-big 23.5704+-1.5759 23.0696+-1.3060 might be 1.0217x faster switch-string-basic-var 21.3478+-0.1014 ? 21.3644+-0.1120 ? switch-string-basic 22.8084+-0.2827 ? 22.9000+-0.3830 ? switch-string-big-length-tower-var 29.6765+-0.1455 ? 29.8417+-0.1831 ? switch-string-length-tower-var 23.3623+-0.1148 23.3395+-0.1500 switch-string-length-tower 17.8453+-0.0937 17.7534+-0.1127 switch-string-short 17.8131+-0.1124 17.8016+-0.0633 switch 18.2348+-1.1422 ? 18.3017+-1.1724 ? tear-off-arguments-simple 2.1135+-0.0081 ? 2.1445+-0.0488 ? might be 1.0147x slower tear-off-arguments 3.4570+-0.0085 3.4524+-0.0075 temporal-structure 21.1971+-0.1227 ? 21.3150+-0.3985 ? to-int32-boolean 21.6224+-0.0754 ? 21.7396+-0.1103 ? undefined-test 4.5797+-0.0181 4.5705+-0.0037 <arithmetic> 107.4288+-0.6148 107.4057+-0.4978 might be 1.0002x faster <geometric> * 14.1928+-0.0418 14.1499+-0.0432 might be 1.0030x faster <harmonic> 5.2943+-0.0481 5.2623+-0.0455 might be 1.0061x faster TipOfTree ImplicitJettison All benchmarks: <arithmetic> 93.1305+-0.4391 93.0565+-0.3574 might be 1.0008x faster <geometric> 13.9976+-0.0441 13.9635+-0.0449 might be 1.0024x faster <harmonic> 4.1150+-0.0205 4.0987+-0.0161 might be 1.0040x faster TipOfTree ImplicitJettison Geomean of preferred means: <scaled-result> 23.2259+-0.0855 23.1930+-0.0835 might be 1.0014x faster
Filip Pizlo
Comment 9
2013-09-01 23:27:14 PDT
Results from DumpRenderTree. Benchmark report for SunSpider, V8Spider, Octane, Kraken, JSBench, JSRegress, and DSP on oldmac (MacPro4,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/DumpRenderTree (
r154943
) "ImplicitJettison" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (
r154943
) 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 ImplicitJettison SunSpider: 3d-cube 7.5951+-0.2460 ? 7.6366+-0.2587 ? 3d-morph 8.3423+-0.0494 ? 8.4626+-0.1080 ? might be 1.0144x slower 3d-raytrace 9.8186+-0.3936 9.6901+-0.3315 might be 1.0133x faster access-binary-trees 2.7398+-0.3132 2.4572+-0.3222 might be 1.1150x faster access-fannkuch 7.6667+-0.0630 ? 7.6677+-0.0690 ? access-nbody 4.1237+-0.0492 4.1056+-0.0514 access-nsieve 4.8725+-0.0474 ? 4.9010+-0.0851 ? bitops-3bit-bits-in-byte 1.7689+-0.0166 ? 1.7943+-0.0186 ? might be 1.0144x slower bitops-bits-in-byte 6.6869+-0.0845 ? 6.6911+-0.0582 ? bitops-bitwise-and 2.7445+-0.0670 ? 2.8062+-0.0324 ? might be 1.0225x slower bitops-nsieve-bits 4.6971+-0.0302 4.6661+-0.0242 controlflow-recursive 2.9351+-0.0218 2.9151+-0.0167 crypto-aes 6.1022+-0.3090 6.0884+-0.3261 crypto-md5 3.2113+-0.0497 3.2050+-0.0570 crypto-sha1 2.9440+-0.0495 ? 2.9454+-0.0727 ? date-format-tofte 12.7026+-0.9556 ? 13.0082+-0.9520 ? might be 1.0241x slower date-format-xparb 9.0055+-0.6427 8.9564+-0.6398 math-cordic 3.9034+-0.0321 3.8934+-0.0291 math-partial-sums 10.4761+-0.0464 10.4171+-0.0421 math-spectral-norm 2.8239+-0.0239 2.8176+-0.0161 regexp-dna 12.8361+-0.5433 ? 12.9119+-0.5470 ? string-base64 6.4690+-0.5480 6.3447+-0.4979 might be 1.0196x faster string-fasta 12.1426+-0.1263 12.1219+-0.1332 string-tagcloud 14.8565+-0.1583 ? 14.9036+-0.1904 ? string-unpack-code 31.7255+-0.2169 ? 31.9854+-0.3188 ? string-validate-input 8.9788+-0.1868 8.8824+-0.2160 might be 1.0109x faster <arithmetic> * 7.7757+-0.1266 ? 7.7798+-0.1256 ? might be 1.0005x slower <geometric> 6.1796+-0.0970 6.1586+-0.1018 might be 1.0034x faster <harmonic> 5.0163+-0.0744 4.9826+-0.0838 might be 1.0068x faster TipOfTree ImplicitJettison V8Spider: crypto 81.5186+-0.3332 81.3143+-0.3364 deltablue 102.8431+-1.4178 101.7515+-0.7921 might be 1.0107x faster earley-boyer 72.3626+-0.7797 71.8593+-1.0147 raytrace 45.9410+-4.9555 45.7096+-5.0562 regexp 102.6660+-0.5261 ? 105.4219+-3.7478 ? might be 1.0268x slower richards 116.3553+-1.9925 115.3456+-1.3269 splay 59.6188+-2.9905 ? 60.1999+-3.0062 ? <arithmetic> 83.0436+-0.8189 ? 83.0860+-1.0330 ? might be 1.0005x slower <geometric> * 79.2095+-1.0514 ? 79.2237+-1.2917 ? might be 1.0002x slower <harmonic> 75.0776+-1.4827 75.0586+-1.7134 might be 1.0003x faster TipOfTree ImplicitJettison Octane and V8v7: encrypt 0.47458+-0.00104 0.47369+-0.00065 decrypt 8.64653+-0.01488 ? 8.64752+-0.00981 ? deltablue x2 0.67905+-0.04621 0.64023+-0.04173 might be 1.0606x faster earley 0.90597+-0.01615 ? 0.90828+-0.02166 ? boyer 12.66932+-0.05330 ? 12.78165+-0.12093 ? raytrace x2 4.40929+-0.05819 4.37098+-0.06797 regexp x2 32.65303+-0.19452 ? 32.90756+-0.22195 ? richards x2 0.32022+-0.00365 ? 0.32207+-0.00477 ? splay x2 0.65106+-0.02985 ? 0.66342+-0.02567 ? might be 1.0190x slower navier-stokes x2 10.93336+-0.01197 10.92689+-0.01076 closure 0.43451+-0.04764 ? 0.43689+-0.04759 ? jquery 5.31199+-0.70502 ? 5.36225+-0.68408 ? gbemu x2 100.58560+-7.04461 93.19069+-4.98935 might be 1.0794x faster mandreel x2 194.41351+-0.57595 ? 195.15138+-1.19760 ? pdfjs x2 100.53115+-0.41920 100.12273+-0.28906 box2d x2 35.70191+-0.44207 ^ 34.78569+-0.27819 ^ definitely 1.0263x faster V8v7: <arithmetic> 7.62428+-0.02800 ? 7.65459+-0.03433 ? might be 1.0040x slower <geometric> * 2.49846+-0.02402 2.48904+-0.02240 might be 1.0038x faster <harmonic> 0.97518+-0.01268 0.97021+-0.01321 might be 1.0051x faster Octane including V8v7: <arithmetic> 38.08459+-0.53482 37.49129+-0.39158 might be 1.0158x faster <geometric> * 7.27068+-0.10129 7.20250+-0.08350 might be 1.0095x faster <harmonic> 1.36425+-0.02686 1.35905+-0.02547 might be 1.0038x faster TipOfTree ImplicitJettison Kraken: ai-astar 491.114+-0.805 ? 491.817+-1.155 ? audio-beat-detection 253.646+-3.661 ? 254.415+-3.868 ? audio-dft 312.244+-2.254 ? 312.434+-2.061 ? audio-fft 147.648+-0.275 ! 149.735+-0.427 ! definitely 1.0141x slower audio-oscillator 247.396+-1.276 ? 249.854+-2.797 ? imaging-darkroom 297.749+-1.231 296.989+-1.679 imaging-desaturate 160.146+-0.346 159.919+-0.381 imaging-gaussian-blur 404.286+-0.314 ? 404.411+-0.601 ? json-parse-financial 80.890+-0.197 ! 82.411+-0.156 ! definitely 1.0188x slower json-stringify-tinderbox 108.888+-3.178 ^ 104.737+-0.398 ^ definitely 1.0396x faster stanford-crypto-aes 109.811+-0.965 ? 110.304+-1.600 ? stanford-crypto-ccm 124.033+-4.774 ? 126.153+-2.647 ? might be 1.0171x slower stanford-crypto-pbkdf2 270.727+-1.550 ^ 267.233+-0.922 ^ definitely 1.0131x faster stanford-crypto-sha256-iterative 129.409+-0.977 ^ 127.324+-0.459 ^ definitely 1.0164x faster <arithmetic> * 224.142+-0.705 224.124+-0.455 might be 1.0001x faster <geometric> 194.980+-1.029 194.966+-0.434 might be 1.0001x faster <harmonic> 170.203+-1.264 ? 170.265+-0.416 ? might be 1.0004x slower TipOfTree ImplicitJettison JSBench: amazon 10.2500+-0.2874 10.1667+-0.2473 facebook 38.8333+-0.4560 ? 39.0833+-0.3272 ? google 67.5833+-1.1320 ? 73.9167+-6.9096 ? might be 1.0937x slower twitter 10.0000+-0.2709 10.0000+-0.3831 yahoo 3.9167+-0.4248 ? 4.0000+-0.0000 ? might be 1.0213x slower <arithmetic> * 26.1167+-0.2390 ? 27.4333+-1.4324 ? might be 1.0504x slower <geometric> 15.9719+-0.3189 ? 16.3378+-0.3531 ? might be 1.0229x slower <harmonic> 10.0480+-0.5397 ? 10.2435+-0.0858 ? might be 1.0195x slower TipOfTree ImplicitJettison JSRegress: adapt-to-double-divide 22.5226+-0.0326 ? 22.5402+-0.0275 ? aliased-arguments-getbyval 0.9740+-0.0293 0.9611+-0.0288 might be 1.0134x faster allocate-big-object 4.5158+-1.4020 4.4659+-1.3977 might be 1.0112x faster arity-mismatch-inlining 0.8842+-0.0224 ? 0.8962+-0.0144 ? might be 1.0136x slower array-access-polymorphic-structure 9.1883+-2.0403 9.0790+-2.0382 might be 1.0120x faster array-nonarray-polymorhpic-access 72.0378+-25.0587 72.0252+-25.2256 array-with-double-add 5.3734+-0.0267 5.3672+-0.0277 array-with-double-increment 4.1932+-0.0896 4.1407+-0.0383 might be 1.0127x faster array-with-double-mul-add 7.5316+-0.2637 7.3138+-0.2932 might be 1.0298x faster array-with-double-sum 7.9121+-0.0585 7.8987+-0.0576 array-with-int32-add-sub 9.3335+-0.0229 9.3201+-0.0280 array-with-int32-or-double-sum 7.9636+-0.0103 7.9515+-0.0146 ArrayBuffer-DataView-alloc-large-long-lived 128.3597+-1.0644 128.2792+-0.7614 ArrayBuffer-DataView-alloc-long-lived 42.5926+-3.9298 42.0928+-3.9301 might be 1.0119x faster ArrayBuffer-Int32Array-byteOffset 8.7477+-0.0345 ? 8.7510+-0.0321 ? ArrayBuffer-Int8Array-alloc-huge-long-lived 215.6943+-2.6555 ? 216.1692+-2.7050 ? ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented 172.4124+-2.7736 ? 172.9145+-3.4948 ? ArrayBuffer-Int8Array-alloc-large-long-lived 129.3531+-0.7187 ! 131.1205+-0.8901 ! definitely 1.0137x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 82.2377+-11.0199 ? 82.5188+-10.9438 ? ArrayBuffer-Int8Array-alloc-long-lived 41.3304+-3.7990 40.9854+-3.9636 ArrayBuffer-Int8Array-alloc 36.7696+-4.0365 36.2233+-4.0579 might be 1.0151x faster basic-set 21.5403+-0.2659 21.4645+-0.3575 big-int-mul 4.7773+-0.0295 ? 4.8273+-0.0715 ? might be 1.0105x slower boolean-test 4.3347+-0.0226 ? 4.3833+-0.0433 ? might be 1.0112x slower branch-fold 4.7587+-0.0273 4.7280+-0.0259 cast-int-to-double 14.0774+-0.0352 ? 14.1351+-0.0694 ? cell-argument 14.6883+-0.2602 14.4904+-0.2065 might be 1.0137x faster cfg-simplify 3.7809+-0.0437 ? 3.8118+-0.0532 ? cmpeq-obj-to-obj-other 12.3112+-0.2551 ? 12.8173+-0.4062 ? might be 1.0411x slower constant-test 8.5999+-0.0813 ? 8.6657+-0.0926 ? DataView-custom-properties 137.3200+-0.5732 136.8535+-0.3435 delay-tear-off-arguments-strictmode 3.4080+-0.0357 3.4008+-0.0330 direct-arguments-getbyval 0.7766+-0.0125 ? 0.8011+-0.0248 ? might be 1.0316x slower double-pollution-getbyval 10.8673+-0.0916 10.7947+-0.0348 double-pollution-putbyoffset 7.0240+-0.5379 ? 7.1600+-0.5363 ? might be 1.0194x slower empty-string-plus-int 14.0569+-0.1565 13.7742+-0.2760 might be 1.0205x faster emscripten-cube2hash 50.0387+-2.8182 49.3852+-2.7279 might be 1.0132x faster emscripten-memops 10473.8541+-527.7147 9971.5525+-16.0172 might be 1.0504x faster external-arguments-getbyval 2.4440+-0.1534 2.4255+-0.1559 external-arguments-putbyval 4.1157+-0.2179 4.0130+-0.2781 might be 1.0256x faster Float32Array-matrix-mult 6.7376+-0.2213 6.6934+-0.1986 Float32Array-to-Float64Array-set 96.3377+-0.4383 96.1248+-0.2235 Float64Array-alloc-long-lived 108.6737+-0.3271 ? 108.7195+-0.5212 ? Float64Array-to-Int16Array-set 113.8095+-1.1725 ^ 110.4962+-0.6149 ^ definitely 1.0300x faster fold-double-to-int 25.4607+-0.3178 ? 25.6097+-0.4606 ? function-dot-apply 3.0623+-0.0311 3.0556+-0.0231 function-test 4.8850+-0.1008 ? 4.9626+-0.0708 ? might be 1.0159x slower get-by-id-chain-from-try-block 6.5871+-0.0378 ? 6.6087+-0.0715 ? get-by-id-proto-or-self 22.9574+-0.3339 22.9313+-0.3528 get-by-id-self-or-proto 23.2488+-0.3801 23.1340+-0.3473 HashMap-put-get-iterate-keys 44.0658+-0.6565 ? 44.4095+-0.7349 ? HashMap-put-get-iterate 53.5758+-0.8227 ? 53.9581+-0.7337 ? HashMap-string-put-get-iterate 64.7815+-0.6651 ? 65.2264+-0.2025 ? imul-double-only 17.7917+-0.7160 17.4531+-0.0218 might be 1.0194x faster imul-int-only 15.6453+-0.1332 15.5404+-0.0249 imul-mixed 22.5634+-0.7266 22.0130+-0.0693 might be 1.0250x faster in-four-cases 26.0649+-0.0283 ? 26.1115+-0.0496 ? in-one-case-false 12.2151+-0.0467 12.1967+-0.0264 in-one-case-true 12.2353+-0.0312 12.2234+-0.0265 in-two-cases 12.6854+-0.0473 12.6199+-0.0417 indexed-properties-in-objects 4.0213+-0.0184 ? 4.0830+-0.0503 ? might be 1.0154x slower inline-arguments-access 1.4298+-0.0300 1.4288+-0.0268 inline-arguments-local-escape 27.6906+-1.6241 ? 29.2193+-3.0046 ? might be 1.0552x slower inline-get-scoped-var 6.7943+-0.0707 6.7755+-0.0706 inlined-put-by-id-transition 14.7850+-0.2691 ? 14.8822+-0.1833 ? int-or-other-abs-then-get-by-val 9.0760+-0.1866 8.9408+-0.1909 might be 1.0151x faster int-or-other-abs-zero-then-get-by-val 36.6385+-0.2885 36.5436+-0.1522 int-or-other-add-then-get-by-val 10.1831+-0.0224 ? 10.1893+-0.0236 ? int-or-other-add 10.5068+-0.0802 10.4716+-0.0285 int-or-other-div-then-get-by-val 6.0727+-0.0185 ? 6.1063+-0.0551 ? int-or-other-max-then-get-by-val 7.0612+-0.0357 ? 7.0858+-0.0345 ? int-or-other-min-then-get-by-val 7.1163+-0.0304 ? 7.1425+-0.0291 ? int-or-other-mod-then-get-by-val 5.9551+-0.0185 ? 5.9696+-0.0313 ? int-or-other-mul-then-get-by-val 6.4977+-0.0270 ^ 6.4314+-0.0162 ^ definitely 1.0103x faster int-or-other-neg-then-get-by-val 7.9766+-0.0565 ? 8.0298+-0.0453 ? int-or-other-neg-zero-then-get-by-val 36.3046+-0.1116 36.2521+-0.0405 int-or-other-sub-then-get-by-val 10.6540+-0.1455 10.5935+-0.0805 int-or-other-sub 8.1351+-0.0250 ? 8.1855+-0.1210 ? int-overflow-local 11.8368+-0.0457 11.7985+-0.0313 Int16Array-alloc-long-lived 73.8782+-3.9323 72.1762+-0.4786 might be 1.0236x faster Int16Array-bubble-sort-with-byteLength 48.3020+-0.1431 48.2202+-0.0865 Int16Array-bubble-sort 47.7373+-0.1611 47.6802+-0.1497 Int16Array-load-int-mul 2.0045+-0.0214 1.9862+-0.0235 Int16Array-to-Int32Array-set 88.3237+-0.5409 ! 94.7397+-0.4268 ! definitely 1.0726x slower Int32Array-alloc-huge-long-lived 721.0853+-16.8061 719.5396+-16.1431 Int32Array-alloc-huge 814.6523+-7.4074 ? 821.2698+-5.5331 ? Int32Array-alloc-large-long-lived 997.0221+-21.2716 976.9168+-4.8704 might be 1.0206x faster Int32Array-alloc-large 45.7577+-0.6850 ? 46.3812+-0.9874 ? might be 1.0136x slower Int32Array-alloc-long-lived 85.2814+-1.1880 ? 87.4004+-4.3374 ? might be 1.0248x slower Int32Array-alloc 7.4654+-3.0013 ? 7.4658+-2.9932 ? Int32Array-Int8Array-view-alloc 23.5858+-2.1231 22.4122+-1.9312 might be 1.0524x faster Int8Array-alloc-long-lived 71.5198+-2.0273 ? 71.5946+-1.6632 ? Int8Array-load-with-byteLength 4.8269+-0.0353 ? 4.8483+-0.0644 ? Int8Array-load 4.8125+-0.0204 ? 4.8155+-0.0188 ? integer-divide 15.3475+-0.0238 ? 15.3698+-0.1037 ? integer-modulo 1.9474+-0.0439 1.9288+-0.0306 lots-of-fields 16.1719+-2.6171 ? 16.3209+-2.3011 ? make-indexed-storage 5.3562+-0.6940 5.3405+-0.6582 make-rope-cse 16.8043+-2.9843 16.7422+-3.0500 marsaglia 521.1511+-0.1622 ? 521.5169+-0.3360 ? method-on-number 28.9251+-4.1357 26.7226+-0.0995 might be 1.0824x faster negative-zero-divide 0.3177+-0.0134 0.3126+-0.0070 might be 1.0162x faster negative-zero-modulo 0.2977+-0.0085 ? 0.2997+-0.0089 ? negative-zero-negate 0.2892+-0.0102 0.2863+-0.0098 might be 1.0101x faster nested-function-parsing-random 408.6868+-12.5641 404.3013+-12.3672 might be 1.0108x faster nested-function-parsing 57.1633+-3.9474 56.8753+-3.3288 new-array-buffer-dead 3.9565+-0.1052 ? 3.9808+-0.1156 ? new-array-buffer-push 14.8124+-2.3661 ? 14.8563+-2.3444 ? new-array-dead 28.3887+-0.0495 ? 28.3950+-0.0350 ? new-array-push 12.5934+-2.0541 ? 12.6260+-2.0511 ? number-test 4.2914+-0.0235 ? 4.2989+-0.0432 ? object-closure-call 8.7912+-0.1844 8.7629+-0.1605 object-test 4.7967+-0.0749 4.7582+-0.0806 poly-stricteq 94.2469+-1.4947 ? 94.2988+-1.2063 ? polymorphic-structure 21.1510+-0.0563 ^ 21.0148+-0.0625 ^ definitely 1.0065x faster polyvariant-monomorphic-get-by-id 12.5111+-0.0371 12.4924+-0.0224 put-by-val-large-index-blank-indexing-type 16.3551+-3.1554 ? 16.4591+-3.1825 ? rare-osr-exit-on-local 20.1927+-0.1205 20.0806+-0.0394 register-pressure-from-osr 31.4718+-0.1618 31.3778+-0.0530 simple-activation-demo 34.7961+-0.2085 34.7390+-0.2230 slow-array-profile-convergence 4.8832+-0.2195 ? 4.8943+-0.2486 ? slow-convergence 3.5593+-0.0418 ? 3.6036+-0.0673 ? might be 1.0125x slower sparse-conditional 1.3260+-0.0220 1.3249+-0.0208 splice-to-remove 48.0334+-0.1434 ^ 47.4716+-0.1199 ^ definitely 1.0118x faster string-concat-object 5.0944+-1.4456 5.0806+-1.4277 string-concat-pair-object 4.9943+-1.4074 ? 5.0147+-1.4209 ? string-concat-pair-simple 19.3892+-0.6262 ? 19.7908+-0.7088 ? might be 1.0207x slower string-concat-simple 19.4889+-0.6099 19.3228+-0.8514 string-cons-repeat 15.0765+-1.1016 14.9790+-1.0306 string-cons-tower 15.5112+-0.8975 ? 15.7347+-1.0560 ? might be 1.0144x slower string-equality 43.1771+-0.0342 43.1415+-0.0319 string-get-by-val-big-char 17.4077+-0.1756 ? 17.4952+-0.1820 ? string-get-by-val-out-of-bounds-insane 5.1687+-0.1134 5.1034+-0.0780 might be 1.0128x faster string-get-by-val-out-of-bounds 4.7914+-0.0457 4.7478+-0.0238 string-get-by-val 4.0000+-0.0292 ? 4.0395+-0.0492 ? string-hash 2.6087+-0.0498 2.5772+-0.0175 might be 1.0122x faster string-long-ident-equality 39.0984+-0.7547 38.8856+-0.6335 string-repeat-arith 51.5123+-0.4364 ? 51.7334+-0.3194 ? string-sub 99.1273+-1.0387 ? 105.0453+-8.2549 ? might be 1.0597x slower string-test 4.2719+-0.0213 ? 4.3040+-0.0668 ? string-var-equality 71.1151+-0.2075 ? 71.4160+-0.5158 ? structure-hoist-over-transitions 4.0563+-0.6060 ? 4.7221+-0.6055 ? might be 1.1641x slower switch-char-constant 3.3203+-0.0167 ? 3.3231+-0.0214 ? switch-char 7.9512+-0.0244 ? 7.9594+-0.0251 ? switch-constant 12.9296+-2.8182 12.5393+-2.9026 might be 1.0311x faster switch-string-basic-big-var 21.3698+-0.0386 ? 21.4817+-0.2042 ? switch-string-basic-big 24.9259+-1.6754 ? 25.8716+-1.5127 ? might be 1.0379x slower switch-string-basic-var 21.2466+-0.0422 ? 21.4128+-0.2072 ? switch-string-basic 19.8098+-0.0398 ? 19.8561+-0.0715 ? switch-string-big-length-tower-var 29.5251+-0.0569 ? 29.7221+-0.4141 ? switch-string-length-tower-var 23.2785+-0.0384 ? 23.2837+-0.0270 ? switch-string-length-tower 17.6213+-0.0413 ? 17.6310+-0.0515 ? switch-string-short 17.6026+-0.0416 ? 17.6260+-0.0387 ? switch 16.5227+-2.4066 ? 19.0886+-2.7866 ? might be 1.1553x slower tear-off-arguments-simple 2.2398+-0.0281 ! 2.3175+-0.0390 ! definitely 1.0347x slower tear-off-arguments 3.5263+-0.0606 3.4810+-0.0466 might be 1.0130x faster temporal-structure 21.1038+-0.0532 ? 21.1809+-0.0257 ? to-int32-boolean 21.5557+-0.1219 ? 21.5861+-0.0372 ? undefined-test 4.4033+-0.0245 ? 4.4759+-0.0612 ? might be 1.0165x slower <arithmetic> 90.6843+-20.7318 ? 109.3433+-0.1556 ? might be 1.2058x slower <geometric> * 14.6957+-0.2876 ? 14.9178+-0.1828 ? might be 1.0151x slower <harmonic> 5.1139+-0.0730 ? 5.1267+-0.0439 ? might be 1.0025x slower TipOfTree ImplicitJettison DSP: filtrr-posterize-tint 43.9508+-1.3214 43.9267+-1.2619 filtrr-tint-contrast-sat-bright 71.5490+-0.6528 ? 71.6434+-0.9266 ? filtrr-tint-sat-adj-contr-mult 84.0754+-3.0583 ? 85.4399+-3.8969 ? might be 1.0162x slower filtrr-blur-overlay-sat-contr 217.9256+-5.5972 ? 218.6326+-5.7842 ? filtrr-sat-blur-mult-sharpen-contr 259.5659+-1.9255 259.4555+-3.0487 filtrr-sepia-bias 33.7107+-3.4453 ? 34.0226+-3.7959 ? route9-vp8 x5 1089.1167+-6.5145 1086.6357+-5.4747 starfield x5 1188.0352+-4.7514 ? 1189.8242+-4.8399 ? bellard-jslinux x5 2876.9167+-11.0961 ? 2879.5833+-12.9689 ? zynaps-quake3 x5 1402.8430+-24.6813 1395.7394+-26.8810 zynaps-mandelbrot x5 1104.4173+-4.5716 ? 1108.0282+-5.1562 ? ammojs-asm-js x5 263.4845+-14.9334 260.3958+-15.5206 might be 1.0119x faster ammojs-regular-js x5 249.6488+-10.7496 249.4342+-11.6734 <arithmetic> 1014.2217+-2.5813 1013.6908+-3.4395 might be 1.0005x faster <geometric> * 623.2525+-8.1087 622.5162+-8.7120 might be 1.0012x faster <harmonic> 283.0167+-10.8120 ? 283.3185+-11.7130 ? might be 1.0011x slower TipOfTree ImplicitJettison All benchmarks: <arithmetic> 219.7613+-11.5731 ? 230.1455+-0.4676 ? might be 1.0473x slower <geometric> 26.2591+-0.2800 ? 26.4436+-0.2286 ? might be 1.0070x slower <harmonic> 4.9485+-0.0461 4.9478+-0.0430 might be 1.0001x faster TipOfTree ImplicitJettison Geomean of preferred means: <scaled-result> 42.2361+-0.1244 ? 42.5510+-0.3536 ? might be 1.0075x slower
Filip Pizlo
Comment 10
2013-09-01 23:29:09 PDT
The JSBench/google slow-down looks real, I'll investigate more. Here's a rerun: Benchmark report for JSBench on oldmac (MacPro4,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/DumpRenderTree (
r154943
) "ImplicitJettison" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (
r154943
) 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 ImplicitJettison amazon 10.0833+-0.1834 10.0833+-0.1834 facebook 38.7500+-0.5502 ? 38.9167+-0.7399 ? google 67.0833+-1.0991 ? 73.7500+-7.2348 ? might be 1.0994x slower twitter 10.1667+-0.2473 9.9167+-0.3272 might be 1.0252x faster yahoo 3.8333+-0.3668 ? 3.9167+-0.3272 ? might be 1.0217x slower <arithmetic> * 25.9833+-0.1913 ? 27.3167+-1.5166 ? might be 1.0513x slower <geometric> 15.8834+-0.2865 ? 16.1718+-0.4609 ? might be 1.0182x slower <harmonic> 9.9554+-0.4904 ? 10.0539+-0.4415 ? might be 1.0099x slower
Filip Pizlo
Comment 11
2013-09-02 11:01:39 PDT
(In reply to
comment #10
)
> The JSBench/google slow-down looks real, I'll investigate more. Here's a rerun: > > Benchmark report for JSBench on oldmac (MacPro4,1). > > VMs tested: > "TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/DumpRenderTree (
r154943
) > "ImplicitJettison" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (
r154943
) > > 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 ImplicitJettison > > amazon 10.0833+-0.1834 10.0833+-0.1834 > facebook 38.7500+-0.5502 ? 38.9167+-0.7399 ? > google 67.0833+-1.0991 ? 73.7500+-7.2348 ? might be 1.0994x slower
This is entirely because of this change: + m_heap->reportExtraMemoryCost(sizeof(CodeBlock) + m_instructions.size() * sizeof(Instruction)); Removing it makes the regression go away. Previously we didn't count the size of the instruction stream towards the memory usage incurred by CodeBlocks. This patch does count them. The way this affects the google benchmark is that it GC's somewhat more frequently. That's partly why you see "might be 10% slower" - GCs incur a ton of variance because they don't happen on every run, but they do happen on some runs - so you get a bimodal distribution of run-times. I think it's wise to eat this regression. I don't like the idea of us getting better performance by sometimes pretending that we didn't allocate memory. ;-)
> twitter 10.1667+-0.2473 9.9167+-0.3272 might be 1.0252x faster > yahoo 3.8333+-0.3668 ? 3.9167+-0.3272 ? might be 1.0217x slower > > <arithmetic> * 25.9833+-0.1913 ? 27.3167+-1.5166 ? might be 1.0513x slower > <geometric> 15.8834+-0.2865 ? 16.1718+-0.4609 ? might be 1.0182x slower > <harmonic> 9.9554+-0.4904 ? 10.0539+-0.4415 ? might be 1.0099x slower
Filip Pizlo
Comment 12
2013-09-02 11:44:11 PDT
Created
attachment 210303
[details]
the patch Updated patch that more rigorously tracks CodeBlock memory footprint. I discovered bugs in our memory footprint tracking when trying to track down the JSBench/google regression. This version of the patch is very precise - CodeBlocks will report extra memory cost on allocation, and then again when setJITCode() is called, and then again during GC to remind it that we're still using memory.
WebKit Commit Bot
Comment 13
2013-09-02 11:46:04 PDT
Attachment 210303
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/CMakeLists.txt', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/GNUmakefile.list.am', u'Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/Target.pri', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/CodeBlock.h', u'Source/JavaScriptCore/dfg/DFGCommonData.h', u'Source/JavaScriptCore/heap/CodeBlockSet.cpp', u'Source/JavaScriptCore/heap/CodeBlockSet.h', u'Source/JavaScriptCore/heap/ConservativeRoots.cpp', u'Source/JavaScriptCore/heap/ConservativeRoots.h', u'Source/JavaScriptCore/heap/DFGCodeBlocks.cpp', u'Source/JavaScriptCore/heap/DFGCodeBlocks.h', u'Source/JavaScriptCore/heap/Heap.cpp', u'Source/JavaScriptCore/heap/Heap.h', u'Source/JavaScriptCore/interpreter/JSStack.cpp', u'Source/JavaScriptCore/interpreter/JSStack.h', u'Source/JavaScriptCore/runtime/Executable.cpp', u'Source/JavaScriptCore/runtime/Executable.h', u'Source/JavaScriptCore/runtime/VM.h', u'Source/WTF/ChangeLog', u'Source/WTF/wtf/RefCountedArray.h']" exit_code: 1 Source/JavaScriptCore/interpreter/JSStack.h:44: Code inside a namespace should not be indented. [whitespace/indent] [4] Total errors found: 1 in 19 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 14
2013-09-02 12:03:15 PDT
Final perf numbers: Benchmark report for SunSpider, V8Spider, Octane, Kraken, JSBench, JSRegress, and DSP on oldmac (MacPro4,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/DumpRenderTree (
r154943
) "ImplicitJettison" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (
r154943
) 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 ImplicitJettison SunSpider: 3d-cube 7.5772+-0.2675 7.5515+-0.2977 3d-morph 8.3541+-0.1250 8.3220+-0.0851 3d-raytrace 9.5204+-0.2656 ? 9.7745+-0.3732 ? might be 1.0267x slower access-binary-trees 2.7388+-0.3031 2.4257+-0.3239 might be 1.1291x faster access-fannkuch 7.6904+-0.0451 ? 7.7251+-0.0703 ? access-nbody 4.1301+-0.0555 ? 4.1605+-0.0564 ? access-nsieve 4.8283+-0.0367 4.8267+-0.0276 bitops-3bit-bits-in-byte 1.8116+-0.0159 ? 1.8148+-0.0154 ? bitops-bits-in-byte 6.6706+-0.0694 6.6569+-0.0663 bitops-bitwise-and 2.7759+-0.0717 ? 2.7797+-0.0560 ? bitops-nsieve-bits 4.6408+-0.0349 ? 4.6643+-0.0373 ? controlflow-recursive 2.9477+-0.0324 2.9041+-0.0161 might be 1.0150x faster crypto-aes 6.0573+-0.2684 5.9654+-0.3151 might be 1.0154x faster crypto-md5 3.2302+-0.0685 3.2166+-0.0615 crypto-sha1 2.9176+-0.0323 ? 2.9218+-0.0524 ? date-format-tofte 12.6460+-0.9473 ? 12.8812+-0.9693 ? might be 1.0186x slower date-format-xparb 9.4717+-0.5930 8.8675+-0.6215 might be 1.0681x faster math-cordic 3.8912+-0.0262 ? 3.9123+-0.0323 ? math-partial-sums 10.4616+-0.0660 ? 10.7140+-0.2142 ? might be 1.0241x slower math-spectral-norm 2.8880+-0.0365 2.8576+-0.0483 might be 1.0106x faster regexp-dna 12.7901+-0.5535 12.7745+-0.5377 string-base64 6.4729+-0.5067 ? 6.7753+-0.4914 ? might be 1.0467x slower string-fasta 12.1680+-0.0904 12.1047+-0.0767 string-tagcloud 14.7868+-0.1954 ? 14.8587+-0.2404 ? string-unpack-code 31.9109+-0.2661 31.7173+-0.2941 string-validate-input 8.9537+-0.2023 8.8332+-0.2238 might be 1.0136x faster <arithmetic> * 7.7820+-0.1274 7.7695+-0.1503 might be 1.0016x faster <geometric> 6.1899+-0.0969 6.1600+-0.1113 might be 1.0049x faster <harmonic> 5.0378+-0.0747 4.9863+-0.0826 might be 1.0103x faster TipOfTree ImplicitJettison V8Spider: crypto 81.3337+-0.3650 81.2854+-0.3767 deltablue 102.7304+-1.2137 102.3248+-1.7007 earley-boyer 72.3858+-0.9708 ? 72.4182+-0.8841 ? raytrace 44.5000+-4.6406 ? 45.5569+-4.8826 ? might be 1.0238x slower regexp 102.6822+-0.3878 102.1736+-0.2897 richards 116.3986+-1.6155 115.3811+-1.9082 splay 59.8808+-3.0978 59.5411+-3.2722 <arithmetic> 82.8445+-0.9124 82.6687+-0.7806 might be 1.0021x faster <geometric> * 78.8874+-1.1497 78.8664+-1.1121 might be 1.0003x faster <harmonic> 74.5889+-1.5308 ? 74.7546+-1.6029 ? might be 1.0022x slower TipOfTree ImplicitJettison Octane and V8v7: encrypt 0.47381+-0.00049 0.47345+-0.00039 decrypt 8.64355+-0.01117 8.64303+-0.01193 deltablue x2 0.61595+-0.01993 0.61305+-0.02505 earley 0.90053+-0.00926 ! 0.93205+-0.01523 ! definitely 1.0350x slower boyer 12.72051+-0.19821 ? 12.73262+-0.05977 ? raytrace x2 4.38239+-0.03528 ? 4.40353+-0.03277 ? regexp x2 33.02072+-0.22762 32.79667+-0.34209 richards x2 0.32362+-0.00543 ^ 0.31484+-0.00312 ^ definitely 1.0279x faster splay x2 0.63675+-0.00789 ? 0.63882+-0.00743 ? navier-stokes x2 10.93067+-0.00811 10.92758+-0.00840 closure 0.43247+-0.04703 ? 0.43618+-0.04699 ? jquery 5.30279+-0.70601 ? 5.37115+-0.68983 ? might be 1.0129x slower gbemu x2 98.01298+-7.73358 95.49285+-2.48679 might be 1.0264x faster mandreel x2 194.24757+-0.69189 ? 194.44718+-0.98367 ? pdfjs x2 100.02497+-0.32473 ? 100.62253+-0.35900 ? box2d x2 35.45050+-0.53370 35.07193+-0.42922 might be 1.0108x faster V8v7: <arithmetic> 7.65991+-0.04088 7.63563+-0.04494 might be 1.0032x faster <geometric> * 2.46719+-0.01324 2.46272+-0.01258 might be 1.0018x faster <harmonic> 0.95847+-0.00784 0.95038+-0.00724 might be 1.0085x faster Octane including V8v7: <arithmetic> 37.83715+-0.62535 37.66332+-0.18580 might be 1.0046x faster <geometric> * 7.19136+-0.11718 7.17528+-0.06212 might be 1.0022x faster <harmonic> 1.34321+-0.02250 1.33487+-0.01978 might be 1.0062x faster TipOfTree ImplicitJettison Kraken: ai-astar 490.889+-0.528 ? 491.727+-0.629 ? audio-beat-detection 253.203+-3.086 ? 253.383+-2.897 ? audio-dft 311.763+-1.546 ? 311.985+-1.939 ? audio-fft 147.769+-0.222 ! 149.817+-0.376 ! definitely 1.0139x slower audio-oscillator 248.309+-1.568 ? 249.609+-2.706 ? imaging-darkroom 296.887+-1.618 ? 296.993+-1.752 ? imaging-desaturate 159.907+-0.267 159.749+-0.308 imaging-gaussian-blur 404.812+-1.831 403.932+-0.373 json-parse-financial 81.055+-0.452 ! 82.640+-0.164 ! definitely 1.0196x slower json-stringify-tinderbox 110.785+-2.382 ^ 104.534+-0.438 ^ definitely 1.0598x faster stanford-crypto-aes 109.845+-0.926 108.539+-0.621 might be 1.0120x faster stanford-crypto-ccm 126.020+-2.100 122.910+-7.396 might be 1.0253x faster stanford-crypto-pbkdf2 270.788+-1.885 ^ 266.060+-1.196 ^ definitely 1.0178x faster stanford-crypto-sha256-iterative 128.662+-0.804 ^ 127.327+-0.465 ^ definitely 1.0105x faster <arithmetic> * 224.335+-0.370 223.515+-0.661 might be 1.0037x faster <geometric> 195.388+-0.448 194.166+-0.901 might be 1.0063x faster <harmonic> 170.799+-0.500 169.342+-1.071 might be 1.0086x faster TipOfTree ImplicitJettison JSBench: amazon 10.0833+-0.1834 ? 10.3333+-0.3128 ? might be 1.0248x slower facebook 38.7500+-0.3949 37.9167+-0.9171 might be 1.0220x faster google 67.9167+-1.0991 ? 72.1667+-5.1677 ? might be 1.0626x slower twitter 10.0000+-0.0000 10.0000+-0.0000 yahoo 3.9167+-0.1834 ? 4.0833+-0.1834 ? might be 1.0426x slower <arithmetic> * 26.1333+-0.2673 ? 26.9000+-1.1501 ? might be 1.0293x slower <geometric> 15.9631+-0.2046 ? 16.2883+-0.3315 ? might be 1.0204x slower <harmonic> 10.0857+-0.2789 ? 10.3570+-0.2200 ? might be 1.0269x slower TipOfTree ImplicitJettison JSRegress: adapt-to-double-divide 22.5321+-0.0331 22.5153+-0.0331 aliased-arguments-getbyval 0.9733+-0.0282 0.9669+-0.0336 allocate-big-object 4.2350+-1.3558 4.0942+-1.3207 might be 1.0344x faster arity-mismatch-inlining 0.9012+-0.0339 0.8661+-0.0262 might be 1.0405x faster array-access-polymorphic-structure 9.5719+-2.1450 9.0308+-2.0628 might be 1.0599x faster array-nonarray-polymorhpic-access 60.4786+-0.1646 ? 83.5236+-33.9695 ? might be 1.3810x slower array-with-double-add 5.3788+-0.0225 5.3540+-0.0244 array-with-double-increment 4.1264+-0.0470 ? 4.1590+-0.0296 ? array-with-double-mul-add 7.4213+-0.2645 7.3572+-0.3296 array-with-double-sum 7.8876+-0.0190 7.8746+-0.0316 array-with-int32-add-sub 9.3150+-0.0355 9.3079+-0.0280 array-with-int32-or-double-sum 7.9653+-0.0222 ? 8.0040+-0.0504 ? ArrayBuffer-DataView-alloc-large-long-lived 128.3822+-0.8954 127.9946+-0.7156 ArrayBuffer-DataView-alloc-long-lived 42.0366+-3.9421 41.5764+-3.8905 might be 1.0111x faster ArrayBuffer-Int32Array-byteOffset 8.7690+-0.0265 8.7641+-0.0136 ArrayBuffer-Int8Array-alloc-huge-long-lived 214.4182+-2.8831 ? 218.4404+-4.0591 ? might be 1.0188x slower ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented 173.3457+-3.2215 172.5032+-2.8373 ArrayBuffer-Int8Array-alloc-large-long-lived 131.2046+-1.8644 ? 132.0404+-1.3432 ? ArrayBuffer-Int8Array-alloc-long-lived-buffer 82.8584+-11.1824 80.5351+-10.7322 might be 1.0288x faster ArrayBuffer-Int8Array-alloc-long-lived 41.1541+-3.9065 40.6021+-3.8956 might be 1.0136x faster ArrayBuffer-Int8Array-alloc 36.6418+-3.9564 35.9480+-4.0597 might be 1.0193x faster basic-set 21.7550+-0.5359 21.1033+-0.3600 might be 1.0309x faster big-int-mul 4.7868+-0.0312 4.7748+-0.0299 boolean-test 4.3481+-0.0285 4.3301+-0.0224 branch-fold 4.7642+-0.0525 4.7056+-0.0306 might be 1.0124x faster cast-int-to-double 14.1155+-0.0462 14.0806+-0.0371 cell-argument 14.6631+-0.2425 14.5931+-0.2319 cfg-simplify 3.8558+-0.0718 3.8015+-0.0442 might be 1.0143x faster cmpeq-obj-to-obj-other 12.3155+-0.2647 ? 12.4804+-0.1903 ? might be 1.0134x slower constant-test 8.5537+-0.0956 ? 8.6478+-0.0277 ? might be 1.0110x slower DataView-custom-properties 136.0959+-0.6971 ? 136.5311+-0.8152 ? delay-tear-off-arguments-strictmode 3.3816+-0.0333 ? 3.4324+-0.0513 ? might be 1.0150x slower direct-arguments-getbyval 0.7901+-0.0158 ? 0.7920+-0.0200 ? double-pollution-getbyval 10.8126+-0.0411 10.7642+-0.0341 double-pollution-putbyoffset 7.1357+-0.6794 6.9062+-0.6246 might be 1.0332x faster empty-string-plus-int 13.8711+-0.2353 13.7065+-0.2602 might be 1.0120x faster emscripten-cube2hash 49.7315+-2.9598 48.4989+-2.6819 might be 1.0254x faster emscripten-memops 10472.3305+-531.3944 ? 10849.9673+-1381.4535 ? might be 1.0361x slower external-arguments-getbyval 2.3694+-0.1489 ? 2.3932+-0.1482 ? might be 1.0101x slower external-arguments-putbyval 3.9622+-0.2550 ? 3.9638+-0.2604 ? Float32Array-matrix-mult 6.7174+-0.2015 ? 6.7348+-0.2103 ? Float32Array-to-Float64Array-set 96.1479+-0.2889 ? 96.7853+-1.1169 ? Float64Array-alloc-long-lived 108.4501+-0.4895 ? 110.1404+-1.6324 ? might be 1.0156x slower Float64Array-to-Int16Array-set 112.7396+-0.4804 ^ 111.8948+-0.2655 ^ definitely 1.0076x faster fold-double-to-int 25.3360+-0.0889 ? 25.3605+-0.2320 ? function-dot-apply 3.0473+-0.0290 3.0473+-0.0434 function-test 4.9190+-0.0990 4.8497+-0.1076 might be 1.0143x faster get-by-id-chain-from-try-block 6.5924+-0.0608 6.5755+-0.0489 get-by-id-proto-or-self 22.9274+-0.3798 ? 23.0477+-0.3516 ? get-by-id-self-or-proto 23.3653+-0.3464 23.3446+-0.3560 HashMap-put-get-iterate-keys 44.8670+-1.0121 43.7765+-0.6513 might be 1.0249x faster HashMap-put-get-iterate 53.7902+-0.7637 ? 53.8910+-0.5889 ? HashMap-string-put-get-iterate 64.3819+-0.7515 ? 65.0015+-0.2300 ? imul-double-only 17.5215+-0.1070 17.4410+-0.0221 imul-int-only 15.5842+-0.0366 ? 15.5850+-0.0286 ? imul-mixed 22.0165+-0.0204 22.0147+-0.0321 in-four-cases 26.0791+-0.0262 ! 26.1346+-0.0191 ! definitely 1.0021x slower in-one-case-false 12.2241+-0.0301 12.1925+-0.0306 in-one-case-true 12.1971+-0.0200 ? 12.2307+-0.0389 ? in-two-cases 12.6376+-0.0389 ? 12.6556+-0.0589 ? indexed-properties-in-objects 4.0776+-0.0275 4.0667+-0.0391 inline-arguments-access 1.4872+-0.0490 ^ 1.4135+-0.0197 ^ definitely 1.0522x faster inline-arguments-local-escape 28.4465+-2.6632 ? 28.9921+-2.9522 ? might be 1.0192x slower inline-get-scoped-var 6.7890+-0.0760 ? 6.8436+-0.1305 ? inlined-put-by-id-transition 14.9878+-0.1640 14.9043+-0.3319 int-or-other-abs-then-get-by-val 9.0764+-0.2210 8.9383+-0.1705 might be 1.0154x faster int-or-other-abs-zero-then-get-by-val 36.2350+-0.0672 ? 36.2954+-0.1552 ? int-or-other-add-then-get-by-val 10.2061+-0.0322 10.1883+-0.0441 int-or-other-add 10.4771+-0.1009 10.4129+-0.0597 int-or-other-div-then-get-by-val 6.1232+-0.0255 6.0954+-0.0315 int-or-other-max-then-get-by-val 7.0887+-0.0321 7.0340+-0.0237 int-or-other-min-then-get-by-val 7.1515+-0.0756 7.1303+-0.0303 int-or-other-mod-then-get-by-val 5.9886+-0.0329 ? 6.0361+-0.0494 ? int-or-other-mul-then-get-by-val 6.4927+-0.0411 6.4537+-0.0391 int-or-other-neg-then-get-by-val 7.9868+-0.0269 7.9674+-0.0307 int-or-other-neg-zero-then-get-by-val 36.3819+-0.2737 36.3709+-0.2439 int-or-other-sub-then-get-by-val 10.5668+-0.0259 ? 10.5963+-0.0364 ? int-or-other-sub 8.1510+-0.0543 ? 8.1576+-0.0712 ? int-overflow-local 11.8089+-0.0378 11.7464+-0.0966 Int16Array-alloc-long-lived 71.9502+-0.4820 71.5981+-0.3442 Int16Array-bubble-sort-with-byteLength 48.3286+-0.1030 48.2471+-0.0824 Int16Array-bubble-sort 47.7080+-0.1046 47.6513+-0.1367 Int16Array-load-int-mul 1.9916+-0.0270 ? 2.0146+-0.0252 ? might be 1.0116x slower Int16Array-to-Int32Array-set 89.1196+-1.5524 ! 94.2976+-0.2589 ! definitely 1.0581x slower Int32Array-alloc-huge-long-lived 718.6344+-16.1892 717.8390+-17.2009 Int32Array-alloc-huge 823.8969+-5.8283 815.9898+-6.4664 Int32Array-alloc-large-long-lived 977.9449+-6.0936 972.1173+-4.9341 Int32Array-alloc-large 46.0689+-1.2054 45.7415+-1.0931 Int32Array-alloc-long-lived 85.1817+-1.3147 85.1333+-1.2975 Int32Array-alloc 7.4203+-2.9471 ? 7.4226+-2.9809 ? Int32Array-Int8Array-view-alloc 22.6554+-1.9874 22.5249+-1.9791 Int8Array-alloc-long-lived 74.0958+-4.6020 71.3239+-1.8159 might be 1.0389x faster Int8Array-load-with-byteLength 4.8471+-0.0534 ? 4.8699+-0.0613 ? Int8Array-load 4.8083+-0.0162 4.7961+-0.0187 integer-divide 15.4020+-0.0409 15.3604+-0.0254 integer-modulo 1.9058+-0.0186 ? 1.9063+-0.0253 ? lots-of-fields 16.2878+-2.4060 15.3368+-2.2646 might be 1.0620x faster make-indexed-storage 5.0476+-0.6276 ? 5.2915+-0.6570 ? might be 1.0483x slower make-rope-cse 16.7825+-3.0361 ? 16.8796+-2.9110 ? marsaglia 521.3164+-0.3604 521.1319+-0.2852 method-on-number 27.4553+-0.4535 27.3361+-0.2615 negative-zero-divide 0.3188+-0.0126 0.3132+-0.0077 might be 1.0179x faster negative-zero-modulo 0.3097+-0.0162 0.2996+-0.0099 might be 1.0339x faster negative-zero-negate 0.2920+-0.0124 ? 0.2960+-0.0131 ? might be 1.0137x slower nested-function-parsing-random 408.4075+-12.5558 402.5014+-12.3849 might be 1.0147x faster nested-function-parsing 56.7902+-3.9412 56.2834+-3.1137 new-array-buffer-dead 3.9547+-0.0870 3.9533+-0.0709 new-array-buffer-push 14.8819+-2.4573 14.7503+-2.3242 new-array-dead 28.3798+-0.0447 28.3492+-0.0348 new-array-push 12.4360+-1.9900 ? 12.4729+-2.0373 ? number-test 4.4442+-0.3216 4.3248+-0.0335 might be 1.0276x faster object-closure-call 8.6885+-0.1751 ? 9.2203+-1.0907 ? might be 1.0612x slower object-test 4.7650+-0.0724 ? 4.8056+-0.0967 ? poly-stricteq 92.9704+-0.3486 ? 93.2971+-0.8929 ? polymorphic-structure 21.0709+-0.1185 ? 21.0864+-0.0846 ? polyvariant-monomorphic-get-by-id 12.5332+-0.0749 12.4876+-0.0321 put-by-val-large-index-blank-indexing-type 16.3695+-3.0235 16.1402+-3.0032 might be 1.0142x faster rare-osr-exit-on-local 20.0854+-0.0356 ? 20.1420+-0.1078 ? register-pressure-from-osr 31.3997+-0.0490 ? 31.4437+-0.0838 ? simple-activation-demo 35.0472+-0.5050 34.6783+-0.2331 might be 1.0106x faster slow-array-profile-convergence 4.9621+-0.2368 4.9196+-0.3122 slow-convergence 3.6424+-0.0778 3.5775+-0.0446 might be 1.0182x faster sparse-conditional 1.2976+-0.0350 ? 1.3050+-0.0500 ? splice-to-remove 47.9832+-0.1263 ^ 47.4436+-0.0982 ^ definitely 1.0114x faster string-concat-object 5.0633+-1.4144 ? 5.8572+-1.5479 ? might be 1.1568x slower string-concat-pair-object 5.0085+-1.3998 ? 5.7935+-1.5459 ? might be 1.1567x slower string-concat-pair-simple 19.4906+-0.6911 19.3184+-0.5926 string-concat-simple 19.6532+-0.6493 19.5187+-0.8386 string-cons-repeat 14.9946+-0.9638 14.9350+-0.9996 string-cons-tower 15.5005+-0.9733 ? 15.7058+-1.0775 ? might be 1.0132x slower string-equality 43.3847+-0.4572 43.1904+-0.0406 string-get-by-val-big-char 17.4001+-0.2075 17.2647+-0.1957 string-get-by-val-out-of-bounds-insane 5.2148+-0.1702 5.1269+-0.0828 might be 1.0171x faster string-get-by-val-out-of-bounds 4.7430+-0.0124 ? 4.7464+-0.0249 ? string-get-by-val 3.9883+-0.0347 ! 4.0724+-0.0366 ! definitely 1.0211x slower string-hash 2.5950+-0.0272 ? 2.6163+-0.0384 ? string-long-ident-equality 38.6109+-0.2759 38.4412+-0.0363 string-repeat-arith 51.5061+-0.4902 ? 51.9763+-0.6198 ? string-sub 99.9758+-1.2785 ? 100.0079+-3.7156 ? string-test 4.3229+-0.1005 4.2343+-0.0253 might be 1.0209x faster string-var-equality 70.9502+-0.1710 ? 71.1273+-0.2964 ? structure-hoist-over-transitions 4.0573+-0.6026 ? 4.2561+-0.6272 ? might be 1.0490x slower switch-char-constant 3.3324+-0.0234 3.3259+-0.0317 switch-char 7.9442+-0.0243 ? 7.9693+-0.0482 ? switch-constant 12.9281+-2.6755 ? 12.9892+-2.5679 ? switch-string-basic-big-var 21.5866+-0.4242 21.3565+-0.0483 might be 1.0108x faster switch-string-basic-big 24.9608+-1.8009 ? 27.1146+-1.7301 ? might be 1.0863x slower switch-string-basic-var 21.2753+-0.0750 21.2695+-0.0400 switch-string-basic 20.1825+-0.3847 19.8077+-0.0459 might be 1.0189x faster switch-string-big-length-tower-var 29.7831+-0.6199 29.5685+-0.0874 switch-string-length-tower-var 23.2907+-0.0519 23.2852+-0.0507 switch-string-length-tower 17.6455+-0.0576 ? 17.6620+-0.0458 ? switch-string-short 17.6218+-0.0350 ? 17.6589+-0.0737 ? switch 19.3067+-2.8221 ? 19.3574+-2.7740 ? tear-off-arguments-simple 2.3117+-0.0435 ? 2.3781+-0.0286 ? might be 1.0287x slower tear-off-arguments 3.4755+-0.0340 ? 3.5369+-0.0477 ? might be 1.0176x slower temporal-structure 21.3210+-0.3743 21.2023+-0.0517 to-int32-boolean 21.5763+-0.0396 ? 21.7357+-0.1625 ? undefined-test 4.4589+-0.0314 4.4303+-0.0379 <arithmetic> 90.5312+-20.6522 ? 92.1376+-22.0489 ? might be 1.0177x slower <geometric> * 14.6974+-0.2928 ? 14.7137+-0.3248 ? might be 1.0011x slower <harmonic> 5.1456+-0.0794 5.1248+-0.0807 might be 1.0040x faster TipOfTree ImplicitJettison DSP: filtrr-posterize-tint 44.2134+-1.3306 43.9242+-1.3151 filtrr-tint-contrast-sat-bright 71.7637+-0.8685 71.2836+-0.3472 filtrr-tint-sat-adj-contr-mult 85.7292+-3.7008 83.8413+-3.1712 might be 1.0225x faster filtrr-blur-overlay-sat-contr 217.7817+-5.7239 217.0554+-5.9783 filtrr-sat-blur-mult-sharpen-contr 259.7598+-2.0965 ? 263.2921+-4.5074 ? might be 1.0136x slower filtrr-sepia-bias 33.7648+-3.5145 33.6503+-3.5694 route9-vp8 x5 1090.6045+-10.1558 1078.6572+-9.2724 might be 1.0111x faster starfield x5 1185.4922+-5.3854 ? 1187.0004+-3.7362 ? bellard-jslinux x5 2879.1667+-9.2980 2872.1667+-11.1600 zynaps-quake3 x5 1401.0389+-22.8425 1399.7315+-24.1886 zynaps-mandelbrot x5 1106.2737+-5.5673 1106.2389+-4.9541 ammojs-asm-js x5 260.8441+-13.2576 ? 262.8664+-14.8387 ? ammojs-regular-js x5 244.6981+-11.5234 ? 250.6587+-12.0301 ? might be 1.0244x slower <arithmetic> 1013.5025+-3.0629 1012.1865+-2.2018 might be 1.0013x faster <geometric> * 621.4527+-7.6916 ? 622.3740+-8.0204 ? might be 1.0015x slower <harmonic> 282.7200+-11.0262 282.6506+-10.9849 might be 1.0002x faster TipOfTree ImplicitJettison All benchmarks: <arithmetic> 219.5496+-11.6277 ? 220.2248+-12.4186 ? might be 1.0031x slower <geometric> 26.2264+-0.2780 ? 26.2329+-0.3531 ? might be 1.0002x slower <harmonic> 4.9417+-0.0512 4.9170+-0.0565 might be 1.0050x faster TipOfTree ImplicitJettison Geomean of preferred means: <scaled-result> 42.1420+-0.1530 ? 42.2802+-0.5278 ? might be 1.0033x slower
Geoffrey Garen
Comment 15
2013-09-02 18:06:48 PDT
Comment on
attachment 210303
[details]
the patch View in context:
https://bugs.webkit.org/attachment.cgi?id=210303&action=review
Refactoring looks good to me, but I'd like to see the performance change split into a separate patch.
> Source/JavaScriptCore/ChangeLog:37 > + This change has some small performance implications. JSBench/google > + shows a ~9% regression because it GC's more frequently. However, that > + regression is not due to the jettison refactoring - instead it's due to > + the fact that this change also makes us more precisely track CodeBlock > + memory footprint. Previously, we ignored the size of the bytecode stream. > + Now we don't ignore it anyway. This causes some benchmarks to GC more > + frequently. It's a bug to have the GC ignore the memory footprint of > + CodeBlocks, and if that bug causes some benchmark to run a bit faster > + while using a bit more memory, then it's still a bug and we should still > + fix it. There are no other performance changes due to this change.
Can you submit the change to count the size of the bytecode stream as a separate patch? That would confirm your theory that this new way of scanning code blocks is performance-neutral. It would also make for clearer svn history, and a clearer patch.
Filip Pizlo
Comment 16
2013-09-02 18:34:00 PDT
(In reply to
comment #15
)
> (From update of
attachment 210303
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=210303&action=review
> > Refactoring looks good to me, but I'd like to see the performance change split into a separate patch. > > > Source/JavaScriptCore/ChangeLog:37 > > + This change has some small performance implications. JSBench/google > > + shows a ~9% regression because it GC's more frequently. However, that > > + regression is not due to the jettison refactoring - instead it's due to > > + the fact that this change also makes us more precisely track CodeBlock > > + memory footprint. Previously, we ignored the size of the bytecode stream. > > + Now we don't ignore it anyway. This causes some benchmarks to GC more > > + frequently. It's a bug to have the GC ignore the memory footprint of > > + CodeBlocks, and if that bug causes some benchmark to run a bit faster > > + while using a bit more memory, then it's still a bug and we should still > > + fix it. There are no other performance changes due to this change. > > Can you submit the change to count the size of the bytecode stream as a separate patch? That would confirm your theory
To clarify, this isn't a theory - I already confirmed it.
> that this new way of scanning code blocks is performance-neutral. It would also make for clearer svn history, and a clearer patch.
Sure.
Filip Pizlo
Comment 17
2013-09-02 21:49:58 PDT
Results without the reportExtraMemoryCost() change. Note that JSBench no longer shows a 3% regression in the arithmetic mean. Benchmark report for SunSpider, V8Spider, Octane, Kraken, JSBench, JSRegress, and DSP on oldmac (MacPro4,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/DumpRenderTree (
r154964
) "ImplicitJettison" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (
r154964
) 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 ImplicitJettison SunSpider: 3d-cube 7.6092+-0.2599 ? 7.6923+-0.2637 ? might be 1.0109x slower 3d-morph 8.5404+-0.1659 8.3645+-0.0755 might be 1.0210x faster 3d-raytrace 9.8103+-0.3123 9.6302+-0.2153 might be 1.0187x faster access-binary-trees 2.7199+-0.2865 2.7152+-0.2905 access-fannkuch 7.7220+-0.0840 7.6520+-0.0521 access-nbody 4.1087+-0.0300 4.1063+-0.0453 access-nsieve 4.8093+-0.0696 ? 4.8269+-0.0529 ? bitops-3bit-bits-in-byte 1.8094+-0.0196 ? 1.8241+-0.0238 ? bitops-bits-in-byte 6.6906+-0.0907 ? 6.7012+-0.0714 ? bitops-bitwise-and 2.7965+-0.0219 2.7838+-0.0403 bitops-nsieve-bits 4.6360+-0.0369 ? 4.6578+-0.0363 ? controlflow-recursive 2.9509+-0.0269 ? 2.9549+-0.0119 ? crypto-aes 6.0345+-0.2717 ? 6.0586+-0.2989 ? crypto-md5 3.1875+-0.0495 ? 3.2804+-0.0562 ? might be 1.0291x slower crypto-sha1 2.9337+-0.0481 ? 2.9650+-0.0343 ? might be 1.0107x slower date-format-tofte 12.6566+-0.9516 ? 13.0299+-1.0430 ? might be 1.0295x slower date-format-xparb 9.1078+-0.6258 ? 9.1693+-0.6579 ? math-cordic 3.8672+-0.0257 ? 3.9419+-0.0612 ? might be 1.0193x slower math-partial-sums 10.4909+-0.0607 ? 10.4975+-0.0793 ? math-spectral-norm 2.8854+-0.0246 2.8732+-0.0842 regexp-dna 12.7883+-0.5695 ? 12.7938+-0.5092 ? string-base64 6.7566+-0.5090 ? 6.8600+-0.4901 ? might be 1.0153x slower string-fasta 12.1271+-0.1521 ? 12.1993+-0.1333 ? string-tagcloud 14.8122+-0.1676 ? 14.8172+-0.2136 ? string-unpack-code 32.0134+-0.5174 31.5321+-0.3647 might be 1.0153x faster string-validate-input 8.8170+-0.2111 ? 8.8352+-0.2553 ? <arithmetic> * 7.7954+-0.1076 ? 7.7986+-0.1264 ? might be 1.0004x slower <geometric> 6.1963+-0.0844 ? 6.2150+-0.0949 ? might be 1.0030x slower <harmonic> 5.0392+-0.0646 ? 5.0607+-0.0719 ? might be 1.0043x slower TipOfTree ImplicitJettison V8Spider: crypto 81.4630+-0.3098 81.3337+-0.3441 deltablue 102.1397+-1.7780 ? 102.1652+-1.5412 ? earley-boyer 71.9896+-0.9835 ? 72.8013+-1.2106 ? might be 1.0113x slower raytrace 43.7062+-3.7618 ? 45.9620+-4.9641 ? might be 1.0516x slower regexp 102.2680+-0.3074 ? 102.5945+-0.3803 ? richards 115.8428+-1.4996 ? 116.8501+-1.2253 ? splay 60.0478+-3.0382 ? 60.3149+-2.9320 ? <arithmetic> 82.4939+-0.7044 ? 83.1460+-0.6556 ? might be 1.0079x slower <geometric> * 78.5446+-0.9613 ? 79.3534+-0.9787 ? might be 1.0103x slower <harmonic> 74.2602+-1.3328 ? 75.2602+-1.4837 ? might be 1.0135x slower TipOfTree ImplicitJettison Octane and V8v7: encrypt 0.47715+-0.00435 0.47441+-0.00082 decrypt 8.65572+-0.01505 ? 8.67222+-0.04087 ? deltablue x2 0.63853+-0.02896 ? 0.64364+-0.04636 ? earley 0.90738+-0.01559 0.90693+-0.01918 boyer 12.83705+-0.19705 12.66959+-0.04757 might be 1.0132x faster raytrace x2 4.40987+-0.07078 ? 4.42154+-0.05389 ? regexp x2 33.22945+-0.52463 32.94922+-0.27870 richards x2 0.32194+-0.00447 ? 0.32249+-0.00508 ? splay x2 0.65980+-0.03371 ? 0.66043+-0.02941 ? navier-stokes x2 10.93885+-0.02862 10.92387+-0.00781 closure 0.43232+-0.04701 ? 0.43375+-0.04699 ? jquery 5.31228+-0.70639 ? 5.33513+-0.70840 ? gbemu x2 101.34195+-7.26352 93.31950+-4.98609 might be 1.0860x faster mandreel x2 194.31791+-1.08132 ? 194.98320+-1.26498 ? pdfjs x2 100.17874+-0.37535 99.63650+-0.25724 box2d x2 35.34444+-0.49458 ? 35.40152+-0.48689 ? V8v7: <arithmetic> 7.70464+-0.07417 7.66035+-0.03549 might be 1.0058x faster <geometric> * 2.49459+-0.02085 2.49244+-0.03066 might be 1.0009x faster <harmonic> 0.97006+-0.01010 ? 0.97104+-0.01761 ? might be 1.0010x slower Octane including V8v7: <arithmetic> 38.13019+-0.59071 37.50061+-0.41403 might be 1.0168x faster <geometric> * 7.25919+-0.11712 7.21189+-0.09384 might be 1.0066x faster <harmonic> 1.35715+-0.02340 ? 1.35885+-0.02994 ? might be 1.0012x slower TipOfTree ImplicitJettison Kraken: ai-astar 491.329+-0.649 ? 491.897+-0.827 ? audio-beat-detection 254.760+-3.132 252.638+-2.871 audio-dft 311.981+-1.664 ? 312.704+-2.104 ? audio-fft 147.581+-0.213 ? 148.186+-0.831 ? audio-oscillator 247.649+-1.385 247.496+-1.514 imaging-darkroom 296.796+-1.105 ? 298.189+-1.471 ? imaging-desaturate 159.777+-0.278 ? 159.800+-0.303 ? imaging-gaussian-blur 408.465+-5.370 404.853+-1.170 json-parse-financial 81.074+-0.258 ! 82.604+-0.161 ! definitely 1.0189x slower json-stringify-tinderbox 108.889+-2.752 ^ 105.004+-0.507 ^ definitely 1.0370x faster stanford-crypto-aes 110.419+-1.251 109.401+-0.852 stanford-crypto-ccm 119.257+-6.738 ? 122.181+-6.297 ? might be 1.0245x slower stanford-crypto-pbkdf2 271.469+-1.609 269.812+-2.985 stanford-crypto-sha256-iterative 128.541+-0.346 ^ 127.356+-0.312 ^ definitely 1.0093x faster <arithmetic> * 224.142+-0.868 223.723+-0.478 might be 1.0019x faster <geometric> 194.591+-1.107 194.280+-0.728 might be 1.0016x faster <harmonic> 169.584+-1.329 169.433+-0.945 might be 1.0009x faster TipOfTree ImplicitJettison JSBench: amazon 10.0000+-0.0000 ? 10.1667+-0.2473 ? might be 1.0167x slower facebook 38.5833+-0.4248 ? 39.0000+-0.6636 ? might be 1.0108x slower google 68.0833+-1.3936 68.0833+-0.9939 twitter 9.9167+-0.3272 ? 10.1667+-0.2473 ? might be 1.0252x slower yahoo 3.8333+-0.2473 3.8333+-0.2473 <arithmetic> * 26.0833+-0.2787 ? 26.2500+-0.2107 ? might be 1.0064x slower <geometric> 15.8245+-0.2039 ? 15.9907+-0.2130 ? might be 1.0105x slower <harmonic> 9.9188+-0.3437 ? 10.0060+-0.3479 ? might be 1.0088x slower TipOfTree ImplicitJettison JSRegress: adapt-to-double-divide 22.5453+-0.0330 22.5322+-0.0330 aliased-arguments-getbyval 0.9640+-0.0294 ? 0.9997+-0.0318 ? might be 1.0370x slower allocate-big-object 4.4868+-1.3899 4.0390+-1.2788 might be 1.1109x faster arity-mismatch-inlining 0.8884+-0.0343 0.8809+-0.0234 array-access-polymorphic-structure 9.0436+-1.9957 ? 9.2468+-2.0873 ? might be 1.0225x slower array-nonarray-polymorhpic-access 72.0459+-25.1076 60.4826+-0.0896 might be 1.1912x faster array-with-double-add 5.3684+-0.0243 ? 5.4059+-0.0404 ? array-with-double-increment 4.1749+-0.0689 4.1430+-0.0396 array-with-double-mul-add 7.3663+-0.2581 ? 7.4556+-0.2328 ? might be 1.0121x slower array-with-double-sum 7.8983+-0.0513 7.8593+-0.0248 array-with-int32-add-sub 9.3619+-0.0361 9.3075+-0.0200 array-with-int32-or-double-sum 7.9602+-0.0158 ? 7.9645+-0.0167 ? ArrayBuffer-DataView-alloc-large-long-lived 130.0518+-0.9105 129.3100+-0.6274 ArrayBuffer-DataView-alloc-long-lived 42.4460+-3.8454 41.8191+-3.8378 might be 1.0150x faster ArrayBuffer-Int32Array-byteOffset 8.7189+-0.0227 ? 8.7478+-0.0662 ? ArrayBuffer-Int8Array-alloc-huge-long-lived 217.6167+-2.2998 216.4716+-2.8280 ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented 172.8489+-3.9112 ? 173.4783+-3.2949 ? ArrayBuffer-Int8Array-alloc-large-long-lived 132.1901+-1.4942 131.6699+-1.5067 ArrayBuffer-Int8Array-alloc-long-lived-buffer 83.2396+-11.4100 81.0640+-10.7675 might be 1.0268x faster ArrayBuffer-Int8Array-alloc-long-lived 41.1225+-3.7190 40.8107+-3.9050 ArrayBuffer-Int8Array-alloc 36.6668+-3.9373 36.0413+-3.9775 might be 1.0174x faster basic-set 21.4052+-0.3236 ? 21.4517+-0.3436 ? big-int-mul 4.7613+-0.0377 4.7365+-0.0259 boolean-test 4.4033+-0.0514 4.3524+-0.0295 might be 1.0117x faster branch-fold 4.7016+-0.0137 ! 4.7474+-0.0271 ! definitely 1.0097x slower cast-int-to-double 14.1181+-0.0388 ? 14.1222+-0.0348 ? cell-argument 14.5110+-0.1947 14.4967+-0.2027 cfg-simplify 3.8113+-0.0261 3.7941+-0.0340 cmpeq-obj-to-obj-other 12.3427+-0.2227 ? 12.4859+-0.2672 ? might be 1.0116x slower constant-test 8.6309+-0.0688 ? 8.6375+-0.0558 ? DataView-custom-properties 136.7026+-0.6207 136.1101+-0.8427 delay-tear-off-arguments-strictmode 3.4095+-0.0404 3.3802+-0.0357 direct-arguments-getbyval 0.7991+-0.0128 0.7945+-0.0302 double-pollution-getbyval 10.7627+-0.0395 ? 10.7853+-0.0341 ? double-pollution-putbyoffset 7.2864+-0.5209 7.1524+-0.5339 might be 1.0187x faster empty-string-plus-int 13.9536+-0.2308 13.8622+-0.1696 emscripten-cube2hash 49.5278+-2.7986 ? 52.3181+-2.7973 ? might be 1.0563x slower emscripten-memops 10476.5049+-528.3420 ? 10505.1029+-483.2218 ? external-arguments-getbyval 2.3837+-0.1488 2.3692+-0.1378 external-arguments-putbyval 3.9258+-0.2622 ? 4.0134+-0.2460 ? might be 1.0223x slower Float32Array-matrix-mult 6.6930+-0.1898 ? 6.7130+-0.1785 ? Float32Array-to-Float64Array-set 97.2792+-0.8390 96.5809+-0.6334 Float64Array-alloc-long-lived 108.7377+-0.5336 108.4215+-0.5352 Float64Array-to-Int16Array-set 112.2077+-0.6930 111.9416+-0.9850 fold-double-to-int 25.6047+-0.4813 25.4989+-0.3424 function-dot-apply 3.0417+-0.0233 3.0291+-0.0219 function-test 4.9188+-0.1117 4.8155+-0.0983 might be 1.0214x faster get-by-id-chain-from-try-block 6.5887+-0.0224 ? 6.5907+-0.0567 ? get-by-id-proto-or-self 22.9899+-0.3069 ? 23.0391+-0.3854 ? get-by-id-self-or-proto 23.2573+-0.3932 ? 23.3561+-0.3269 ? HashMap-put-get-iterate-keys 43.9475+-0.6076 43.7813+-0.5548 HashMap-put-get-iterate 53.7388+-0.6084 ? 54.3502+-1.3796 ? might be 1.0114x slower HashMap-string-put-get-iterate 64.9091+-0.8361 64.4281+-0.5766 imul-double-only 17.4542+-0.0226 ? 17.8201+-0.7227 ? might be 1.0210x slower imul-int-only 15.5818+-0.0368 ? 15.5860+-0.0430 ? imul-mixed 22.3935+-0.7166 22.0179+-0.0249 might be 1.0171x faster in-four-cases 26.0535+-0.0229 ! 26.2182+-0.1111 ! definitely 1.0063x slower in-one-case-false 12.2280+-0.0303 ? 12.2516+-0.0376 ? in-one-case-true 12.2181+-0.0316 ? 12.2938+-0.1117 ? in-two-cases 12.6373+-0.0239 12.6127+-0.0395 indexed-properties-in-objects 4.0797+-0.0298 ? 4.1638+-0.0846 ? might be 1.0206x slower inline-arguments-access 1.4024+-0.0156 ? 1.4066+-0.0343 ? inline-arguments-local-escape 27.3204+-0.6930 26.4215+-0.3232 might be 1.0340x faster inline-get-scoped-var 6.8362+-0.0379 6.7595+-0.0650 might be 1.0114x faster inlined-put-by-id-transition 14.7154+-0.1737 ? 14.8836+-0.1758 ? might be 1.0114x slower int-or-other-abs-then-get-by-val 8.9078+-0.1603 ? 8.9583+-0.1840 ? int-or-other-abs-zero-then-get-by-val 36.4547+-0.1060 ? 36.5175+-0.1575 ? int-or-other-add-then-get-by-val 10.2180+-0.0365 ? 10.2670+-0.0912 ? int-or-other-add 10.4069+-0.0441 10.3878+-0.0372 int-or-other-div-then-get-by-val 6.1195+-0.0261 ? 6.1215+-0.0393 ? int-or-other-max-then-get-by-val 7.1088+-0.0916 7.0618+-0.0312 int-or-other-min-then-get-by-val 7.1803+-0.0613 7.1676+-0.0404 int-or-other-mod-then-get-by-val 6.0450+-0.1057 5.9676+-0.0252 might be 1.0130x faster int-or-other-mul-then-get-by-val 6.5628+-0.0880 ^ 6.4209+-0.0378 ^ definitely 1.0221x faster int-or-other-neg-then-get-by-val 8.0006+-0.0518 7.9679+-0.0380 int-or-other-neg-zero-then-get-by-val 36.9265+-0.7394 36.2842+-0.0664 might be 1.0177x faster int-or-other-sub-then-get-by-val 10.5784+-0.0847 ? 10.5808+-0.0251 ? int-or-other-sub 8.1335+-0.0327 ? 8.1359+-0.0296 ? int-overflow-local 11.7926+-0.0367 ? 11.8599+-0.0436 ? Int16Array-alloc-long-lived 71.7590+-0.3805 71.7106+-0.5310 Int16Array-bubble-sort-with-byteLength 48.2921+-0.1260 ? 48.5295+-0.3186 ? Int16Array-bubble-sort 47.7671+-0.2194 47.6770+-0.1348 Int16Array-load-int-mul 2.0065+-0.0187 2.0014+-0.0221 Int16Array-to-Int32Array-set 88.5658+-0.7033 ! 93.7748+-0.5168 ! definitely 1.0588x slower Int32Array-alloc-huge-long-lived 725.1355+-14.1244 720.8295+-15.6631 Int32Array-alloc-huge 818.4932+-6.8506 810.2781+-6.5496 might be 1.0101x faster Int32Array-alloc-large-long-lived 973.5072+-9.2513 ? 983.5853+-7.6258 ? might be 1.0104x slower Int32Array-alloc-large 46.7437+-0.8107 45.7942+-0.6759 might be 1.0207x faster Int32Array-alloc-long-lived 85.1979+-1.1622 85.0947+-1.2663 Int32Array-alloc 7.3815+-2.9606 ? 7.4424+-2.9916 ? Int32Array-Int8Array-view-alloc 22.9276+-1.9769 22.2734+-1.7833 might be 1.0294x faster Int8Array-alloc-long-lived 71.8527+-1.8866 71.3330+-1.4488 Int8Array-load-with-byteLength 4.8385+-0.0283 4.8181+-0.0194 Int8Array-load 4.8288+-0.0201 4.8119+-0.0220 integer-divide 15.4233+-0.0893 15.3596+-0.0231 integer-modulo 1.9604+-0.0886 1.9079+-0.0220 might be 1.0275x faster lots-of-fields 15.9912+-2.4697 ? 16.1531+-2.3912 ? might be 1.0101x slower make-indexed-storage 4.8751+-0.5807 ? 5.0185+-0.6283 ? might be 1.0294x slower make-rope-cse 16.7977+-2.9695 16.7855+-2.9516 marsaglia 521.0994+-0.5673 ? 521.1359+-0.3132 ? method-on-number 26.7612+-0.1477 ? 27.0664+-0.3683 ? might be 1.0114x slower negative-zero-divide 0.3203+-0.0136 0.3123+-0.0087 might be 1.0255x faster negative-zero-modulo 0.3025+-0.0116 ? 0.3031+-0.0093 ? negative-zero-negate 0.2889+-0.0111 ? 0.2908+-0.0107 ? nested-function-parsing-random 408.6951+-12.3142 404.9318+-12.3736 nested-function-parsing 57.0143+-4.0261 ? 57.0505+-3.9748 ? new-array-buffer-dead 3.9359+-0.1247 ? 3.9951+-0.0892 ? might be 1.0150x slower new-array-buffer-push 14.8644+-2.4003 ? 15.0474+-2.4038 ? might be 1.0123x slower new-array-dead 28.3854+-0.0312 ? 28.5239+-0.2078 ? new-array-push 12.4008+-1.9994 ? 12.4728+-2.0136 ? number-test 4.3299+-0.0525 4.3021+-0.0314 object-closure-call 9.2589+-1.1204 ? 9.7386+-1.3953 ? might be 1.0518x slower object-test 4.8022+-0.1057 4.7449+-0.0777 might be 1.0121x faster poly-stricteq 93.0923+-0.3415 ? 93.1412+-0.3196 ? polymorphic-structure 21.1069+-0.0542 21.0592+-0.0592 polyvariant-monomorphic-get-by-id 12.4600+-0.0150 ? 12.5305+-0.0569 ? put-by-val-large-index-blank-indexing-type 16.2878+-3.1001 ? 16.3387+-3.0675 ? rare-osr-exit-on-local 20.1345+-0.0277 20.0802+-0.0382 register-pressure-from-osr 31.3923+-0.0418 31.3694+-0.0357 simple-activation-demo 34.7484+-0.2487 ? 34.8054+-0.1997 ? slow-array-profile-convergence 4.9100+-0.2456 4.8144+-0.2431 might be 1.0199x faster slow-convergence 3.5933+-0.0502 3.5881+-0.0627 sparse-conditional 1.3272+-0.0212 1.3224+-0.0295 splice-to-remove 47.8836+-0.0849 ^ 47.4467+-0.1239 ^ definitely 1.0092x faster string-concat-object 5.2163+-1.4868 5.0887+-1.4358 might be 1.0251x faster string-concat-pair-object 4.9793+-1.4071 ? 5.0482+-1.4662 ? might be 1.0138x slower string-concat-pair-simple 19.3862+-0.8865 ? 19.5129+-0.7701 ? string-concat-simple 19.4484+-0.7129 19.2956+-0.6422 string-cons-repeat 15.0039+-1.0009 ? 15.0624+-1.1299 ? string-cons-tower 15.7162+-1.0716 15.3684+-0.9535 might be 1.0226x faster string-equality 43.4599+-0.3870 43.1770+-0.0457 string-get-by-val-big-char 17.2520+-0.2343 ? 17.2725+-0.1957 ? string-get-by-val-out-of-bounds-insane 5.1425+-0.0649 5.0750+-0.0658 might be 1.0133x faster string-get-by-val-out-of-bounds 4.7369+-0.0225 4.7321+-0.0225 string-get-by-val 3.9964+-0.0265 ! 4.1042+-0.0391 ! definitely 1.0270x slower string-hash 2.5952+-0.0271 2.5867+-0.0253 string-long-ident-equality 38.4670+-0.2296 ? 38.9421+-0.7073 ? might be 1.0124x slower string-repeat-arith 52.3725+-0.9391 51.6423+-0.4045 might be 1.0141x faster string-sub 99.1375+-0.7746 ? 104.5398+-7.1642 ? might be 1.0545x slower string-test 4.2218+-0.0205 ? 4.2333+-0.0239 ? string-var-equality 71.1598+-0.3313 71.0704+-0.3784 structure-hoist-over-transitions 4.0612+-0.6031 4.0506+-0.5820 switch-char-constant 3.3309+-0.0349 ? 3.3473+-0.0230 ? switch-char 7.9525+-0.0256 ? 7.9705+-0.0348 ? switch-constant 13.1070+-2.8166 12.7950+-2.6698 might be 1.0244x faster switch-string-basic-big-var 21.3973+-0.0489 21.3438+-0.0381 switch-string-basic-big 24.2545+-1.4830 ? 26.1890+-1.8757 ? might be 1.0798x slower switch-string-basic-var 21.2496+-0.0530 ! 21.6655+-0.3239 ! definitely 1.0196x slower switch-string-basic 19.8133+-0.0548 ? 19.8622+-0.0759 ? switch-string-big-length-tower-var 29.7427+-0.2075 29.5266+-0.0967 switch-string-length-tower-var 23.2948+-0.0695 ? 23.2960+-0.0384 ? switch-string-length-tower 17.6173+-0.0330 ? 17.7102+-0.0993 ? switch-string-short 17.6302+-0.0587 ? 17.6347+-0.0569 ? switch 17.2043+-2.6394 16.5340+-2.4195 might be 1.0405x faster tear-off-arguments-simple 2.3016+-0.0440 ? 2.3138+-0.0399 ? tear-off-arguments 3.4644+-0.0251 ? 3.4736+-0.0492 ? temporal-structure 21.0933+-0.0439 21.0855+-0.0561 to-int32-boolean 21.5533+-0.0260 ? 21.5673+-0.0480 ? undefined-test 4.4470+-0.0232 ? 4.4662+-0.0625 ? <arithmetic> 90.5983+-20.7758 ? 90.6297+-20.7755 ? might be 1.0003x slower <geometric> * 14.6796+-0.3048 14.6669+-0.3553 might be 1.0009x faster <harmonic> 5.1246+-0.0831 5.1158+-0.0907 might be 1.0017x faster TipOfTree ImplicitJettison DSP: filtrr-posterize-tint 44.0309+-1.3639 ? 44.0596+-1.4119 ? filtrr-tint-contrast-sat-bright 71.2073+-0.3948 ? 71.6827+-0.8522 ? filtrr-tint-sat-adj-contr-mult 86.0472+-3.6161 85.7312+-3.7417 filtrr-blur-overlay-sat-contr 219.7635+-5.9953 218.3678+-5.7187 filtrr-sat-blur-mult-sharpen-contr 260.1861+-1.9079 258.5276+-1.6658 filtrr-sepia-bias 33.9601+-3.5925 33.5398+-3.4420 might be 1.0125x faster route9-vp8 x5 1089.1169+-8.1935 1086.1057+-6.1966 starfield x5 1188.6717+-3.0951 ? 1188.9186+-5.7830 ? bellard-jslinux x5 2881.8333+-16.1644 2877.5833+-9.5227 zynaps-quake3 x5 1396.8693+-25.6225 1395.7904+-23.1548 zynaps-mandelbrot x5 1106.4576+-5.3028 1105.4316+-4.3344 ammojs-asm-js x5 263.4510+-14.3026 257.5503+-14.0830 might be 1.0229x faster ammojs-regular-js x5 251.8095+-11.2739 246.7334+-10.3089 might be 1.0206x faster <arithmetic> 1014.7864+-2.2201 1012.2555+-2.5921 might be 1.0025x faster <geometric> * 624.4404+-7.5139 620.4609+-8.1379 might be 1.0064x faster <harmonic> 284.1913+-10.3974 281.9868+-11.1326 might be 1.0078x faster TipOfTree ImplicitJettison All benchmarks: <arithmetic> 219.7869+-11.7053 219.3710+-11.6034 might be 1.0019x faster <geometric> 26.2403+-0.3062 26.2019+-0.3373 might be 1.0015x faster <harmonic> 4.9477+-0.0597 4.9464+-0.0593 might be 1.0003x faster TipOfTree ImplicitJettison Geomean of preferred means: <scaled-result> 42.1887+-0.2058 ? 42.1959+-0.1839 ? might be 1.0002x slower
Filip Pizlo
Comment 18
2013-09-02 21:52:01 PDT
Created
attachment 210321
[details]
the patch Updated patch without the fix for
https://bugs.webkit.org/show_bug.cgi?id=120615
WebKit Commit Bot
Comment 19
2013-09-02 21:53:35 PDT
Attachment 210321
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/CMakeLists.txt', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/GNUmakefile.list.am', u'Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/Target.pri', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/CodeBlock.h', u'Source/JavaScriptCore/dfg/DFGCommonData.h', u'Source/JavaScriptCore/heap/CodeBlockSet.cpp', u'Source/JavaScriptCore/heap/CodeBlockSet.h', u'Source/JavaScriptCore/heap/ConservativeRoots.cpp', u'Source/JavaScriptCore/heap/ConservativeRoots.h', u'Source/JavaScriptCore/heap/DFGCodeBlocks.cpp', u'Source/JavaScriptCore/heap/DFGCodeBlocks.h', u'Source/JavaScriptCore/heap/Heap.cpp', u'Source/JavaScriptCore/heap/Heap.h', u'Source/JavaScriptCore/interpreter/JSStack.cpp', u'Source/JavaScriptCore/interpreter/JSStack.h', u'Source/JavaScriptCore/runtime/Executable.cpp', u'Source/JavaScriptCore/runtime/Executable.h', u'Source/JavaScriptCore/runtime/VM.h']" exit_code: 1 Source/JavaScriptCore/interpreter/JSStack.h:44: Code inside a namespace should not be indented. [whitespace/indent] [4] Total errors found: 1 in 17 files If any of these errors are false positives, please file a bug against check-webkit-style.
Oliver Hunt
Comment 20
2013-09-03 09:31:55 PDT
Comment on
attachment 210321
[details]
the patch View in context:
https://bugs.webkit.org/attachment.cgi?id=210321&action=review
> Source/JavaScriptCore/CMakeLists.txt:-174 > - heap/CopiedSpace.cpp > - heap/CopyVisitor.cpp > - heap/ConservativeRoots.cpp
It seems wrong to remove these? Or is this a duplicated include?
Filip Pizlo
Comment 21
2013-09-03 09:35:39 PDT
(In reply to
comment #20
)
> (From update of
attachment 210321
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=210321&action=review
> > > Source/JavaScriptCore/CMakeLists.txt:-174 > > - heap/CopiedSpace.cpp > > - heap/CopyVisitor.cpp > > - heap/ConservativeRoots.cpp > > It seems wrong to remove these? Or is this a duplicated include?
They're duplicates. I'm removing them.
Filip Pizlo
Comment 22
2013-09-03 09:38:40 PDT
Landed in
http://trac.webkit.org/changeset/154986
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug