| Summary: | jsc-tailcall: Clean up register naming | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Basile Clement <basile_clement> | ||||||
| Component: | JavaScriptCore | Assignee: | Basile Clement <basile_clement> | ||||||
| Status: | RESOLVED FIXED | ||||||||
| Severity: | Normal | CC: | commit-queue, fpizlo, ggaren, mark.lam, msaboff | ||||||
| Priority: | P2 | ||||||||
| Version: | 528+ (Nightly build) | ||||||||
| Hardware: | Unspecified | ||||||||
| OS: | Unspecified | ||||||||
| Bug Depends on: | |||||||||
| Bug Blocks: | 146845 | ||||||||
| Attachments: |
|
||||||||
|
Description
Basile Clement
2015-07-10 12:33:40 PDT
Created attachment 256629 [details]
WIP
Tests pass on x86_64 and x86. Missing a ChangeLog entry + check that its perf-neutral.
(In reply to comment #1) > Created attachment 256629 [details] > WIP > > Tests pass on x86_64 and x86. Missing a ChangeLog entry + check that its > perf-neutral. Some tests are actually failing on a clean build. (In reply to comment #2) > (In reply to comment #1) > > Created attachment 256629 [details] > > WIP > > > > Tests pass on x86_64 and x86. Missing a ChangeLog entry + check that its > > perf-neutral. > > Some tests are actually failing on a clean build. Actually, I just shouldn't leave debug breaks lying around when running run-javascriptcore-tests... https://bugs.webkit.org/attachment.cgi?id=256629&action=diff#a/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm_sec12 A few perf changes that were to be expected due to changes in register allocation ordering, but overall looks perf neutral on x86_64. I'll try to run a couple more benches on the browser to check we are not getting screwed by increasing code size.
Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Basiles-Mac-Pro (MacPro6,1).
VMs tested:
"Baseline" at /Volumes/Data/secondary/OpenSource/WebKitBuild/svn-tailcall/Release/jsc
"Cleanup" at /Volumes/Data/secondary/OpenSource/WebKitBuild/jsc-tailcall-cleanup/Release/jsc
Collected 6 samples per benchmark/VM, with 6 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.
Baseline Cleanup
SunSpider:
3d-cube 6.7349+-0.0719 ? 6.7963+-0.1519 ?
3d-morph 7.5206+-0.0335 ? 7.5511+-0.0287 ?
3d-raytrace 8.4003+-0.0908 8.3558+-0.1055
access-binary-trees 2.8979+-0.0343 ? 2.9416+-0.0735 ? might be 1.0151x slower
access-fannkuch 7.8890+-0.0495 7.8054+-0.0433 might be 1.0107x faster
access-nbody 3.7960+-0.0149 ! 3.8320+-0.0162 ! definitely 1.0095x slower
access-nsieve 4.7426+-0.3226 4.5509+-0.0419 might be 1.0421x faster
bitops-3bit-bits-in-byte 2.1748+-0.1635 ^ 1.5761+-0.0334 ^ definitely 1.3799x faster
bitops-bits-in-byte 4.6630+-0.0654 ? 4.6742+-0.0658 ?
bitops-bitwise-and 2.8267+-0.0360 2.8265+-0.0289
bitops-nsieve-bits 4.0926+-0.0189 4.0922+-0.0112
controlflow-recursive 2.9229+-0.1597 ? 2.9332+-0.0994 ?
crypto-aes 5.9205+-0.0867 ? 5.9594+-0.0675 ?
crypto-md5 3.4471+-0.0576 ? 3.4939+-0.0313 ? might be 1.0136x slower
crypto-sha1 3.3060+-0.0552 ^ 3.2107+-0.0318 ^ definitely 1.0297x faster
date-format-tofte 12.4493+-0.1084 12.3802+-0.2785
date-format-xparb 7.3903+-0.1070 ? 7.4753+-0.2236 ? might be 1.0115x slower
math-cordic 4.0004+-0.0193 ^ 3.8087+-0.0412 ^ definitely 1.0503x faster
math-partial-sums 7.1932+-0.0700 7.1144+-0.0711 might be 1.0111x faster
math-spectral-norm 2.5990+-0.0933 2.4769+-0.0372 might be 1.0493x faster
regexp-dna 9.7048+-0.1017 9.6091+-0.0942
string-base64 6.2059+-0.0708 ? 6.3383+-0.1474 ? might be 1.0213x slower
string-fasta 8.3570+-0.0535 ! 8.4763+-0.0392 ! definitely 1.0143x slower
string-tagcloud 12.2777+-0.0970 ^ 12.0398+-0.0679 ^ definitely 1.0198x faster
string-unpack-code 27.1223+-0.2250 ? 27.3379+-0.2668 ?
string-validate-input 6.4165+-0.0868 ? 6.4353+-0.0778 ?
<arithmetic> 6.7327+-0.0109 6.6958+-0.0263 might be 1.0055x faster
Baseline Cleanup
LongSpider:
3d-cube 1161.8412+-6.4887 1152.5332+-3.2716
3d-morph 2081.1110+-1.1700 2080.3168+-0.0956
3d-raytrace 945.4407+-2.7038 ^ 934.5921+-4.2997 ^ definitely 1.0116x faster
access-binary-trees 1198.6842+-3.9270 1196.6345+-2.7889
access-fannkuch 453.4463+-8.8105 452.8426+-10.8680
access-nbody 800.7323+-0.3361 ^ 795.9546+-0.4892 ^ definitely 1.0060x faster
access-nsieve 545.8983+-1.8585 544.8724+-3.3537
bitops-3bit-bits-in-byte 62.0057+-0.4545 ^ 53.0330+-0.0786 ^ definitely 1.1692x faster
bitops-bits-in-byte 124.3708+-1.3943 122.9960+-2.4800 might be 1.0112x faster
bitops-nsieve-bits 589.7192+-3.1306 587.5258+-3.5433
controlflow-recursive 629.7211+-11.0865 ? 638.1432+-9.7784 ? might be 1.0134x slower
crypto-aes 876.1451+-5.0672 869.2526+-4.0232
crypto-md5 677.6091+-2.5095 ! 685.0111+-2.6589 ! definitely 1.0109x slower
crypto-sha1 902.1063+-13.3005 ? 905.6310+-3.3668 ?
date-format-tofte 990.8559+-16.6845 965.2799+-25.6768 might be 1.0265x faster
date-format-xparb 1000.6452+-25.5231 ! 1042.5932+-9.3398 ! definitely 1.0419x slower
hash-map 219.3025+-1.3116 ? 219.7008+-2.6742 ?
math-cordic 783.6735+-1.1202 783.1446+-0.9507
math-partial-sums 692.6728+-3.8965 ? 694.4527+-5.9501 ?
math-spectral-norm 770.1455+-4.6595 765.6347+-1.3753
string-base64 479.7296+-0.3406 ! 505.6764+-2.4112 ! definitely 1.0541x slower
string-fasta 544.5638+-3.6467 544.3551+-6.8886
string-tagcloud 266.0013+-3.3262 263.7384+-1.1230
<geometric> 589.4795+-1.4041 ^ 586.2730+-1.1275 ^ definitely 1.0055x faster
Baseline Cleanup
V8Spider:
crypto 67.5082+-0.2485 ! 68.9623+-1.1668 ! definitely 1.0215x slower
deltablue 87.2450+-1.8400 86.8190+-1.1002
earley-boyer 55.9561+-0.3860 ? 56.6427+-0.4786 ? might be 1.0123x slower
raytrace 38.1482+-0.6174 ? 38.6637+-0.7811 ? might be 1.0135x slower
regexp 97.8666+-0.5275 96.9073+-0.7904
richards 96.8340+-1.3080 96.4351+-1.4363
splay 46.4869+-2.2516 ? 47.5540+-2.8788 ? might be 1.0230x slower
<geometric> 66.1322+-0.3290 ? 66.6109+-0.7971 ? might be 1.0072x slower
Baseline Cleanup
Octane:
encrypt 0.31168+-0.01076 0.30730+-0.01144 might be 1.0142x faster
decrypt 5.11519+-0.11926 5.06137+-0.01625 might be 1.0106x faster
deltablue x2 0.24911+-0.00229 ? 0.24961+-0.00472 ?
earley 0.42829+-0.00222 ? 0.43060+-0.00139 ?
boyer 6.76369+-0.00910 ! 6.80048+-0.00558 ! definitely 1.0054x slower
navier-stokes x2 7.00241+-0.00648 ? 7.01282+-0.00568 ?
raytrace x2 1.62602+-0.05696 1.62311+-0.06450
richards x2 0.17121+-0.00312 0.16901+-0.00248 might be 1.0130x faster
splay x2 0.46480+-0.00577 ? 0.46815+-0.00591 ?
regexp x2 36.88398+-0.37551 36.63212+-0.20488
pdfjs x2 55.99159+-0.08090 ! 56.42693+-0.19653 ! definitely 1.0078x slower
mandreel x2 67.92740+-0.15191 ! 68.50462+-0.19064 ! definitely 1.0085x slower
gbemu x2 60.30344+-0.65758 59.67936+-0.23516 might be 1.0105x faster
closure 0.88833+-0.00385 0.88533+-0.00465
jquery 11.58502+-0.03336 11.54738+-0.01633
box2d x2 16.75842+-0.06345 ? 16.76000+-0.04127 ?
zlib x2 519.24531+-19.93258 ? 529.23839+-1.89203 ? might be 1.0192x slower
typescript x2 1071.06067+-17.42616 1066.31193+-20.44820
<geometric> 8.69376+-0.05176 8.69358+-0.03174 might be 1.0000x faster
Baseline Cleanup
Kraken:
ai-astar 374.098+-4.521 371.082+-5.049
audio-beat-detection 108.882+-0.610 ? 109.963+-0.717 ?
audio-dft 150.174+-0.868 149.704+-1.020
audio-fft 86.256+-6.821 80.177+-5.606 might be 1.0758x faster
audio-oscillator 96.539+-0.173 ^ 95.260+-0.153 ^ definitely 1.0134x faster
imaging-darkroom 140.365+-1.004 140.333+-0.736
imaging-desaturate 84.466+-0.627 ? 84.985+-0.388 ?
imaging-gaussian-blur 144.349+-1.003 ? 144.462+-1.088 ?
json-parse-financial 62.070+-0.221 ? 62.595+-0.365 ?
json-stringify-tinderbox 41.271+-0.124 ! 42.021+-0.153 ! definitely 1.0182x slower
stanford-crypto-aes 75.097+-0.656 ? 75.291+-0.662 ?
stanford-crypto-ccm 65.848+-2.608 65.224+-1.840
stanford-crypto-pbkdf2 138.845+-0.981 ? 139.965+-1.186 ?
stanford-crypto-sha256-iterative 56.915+-0.317 56.605+-0.543
<arithmetic> 116.084+-0.763 115.548+-0.796 might be 1.0046x faster
Baseline Cleanup
JSRegress:
abc-forward-loop-equal 62.0682+-0.1434 ? 62.1720+-0.0636 ?
abc-postfix-backward-loop 61.6083+-0.1318 61.5688+-0.0841
abc-simple-backward-loop 61.3091+-0.0556 61.2077+-0.0497
abc-simple-forward-loop 61.5677+-0.2466 61.5199+-0.1163
abc-skippy-loop 42.0013+-0.1525 ? 42.1657+-0.3324 ?
abs-boolean 3.4184+-0.0357 ? 3.4819+-0.0387 ? might be 1.0186x slower
adapt-to-double-divide 21.7009+-0.0684 ? 21.7128+-0.0704 ?
aliased-arguments-getbyval 1.6740+-0.1143 1.6715+-0.0651
allocate-big-object 3.1800+-0.1098 ? 3.2656+-0.0873 ? might be 1.0269x slower
arguments-named-and-reflective 15.1085+-0.3518 15.0746+-0.3501
arguments-out-of-bounds 18.5758+-0.0332 ? 18.6112+-0.0983 ?
arguments-strict-mode 12.8947+-0.2754 ? 13.0587+-0.3522 ? might be 1.0127x slower
arguments 11.4388+-0.0800 11.4332+-0.0854
arity-mismatch-inlining 1.1892+-0.0290 ? 1.2225+-0.0388 ? might be 1.0280x slower
array-access-polymorphic-structure 7.9513+-0.0805 7.9278+-0.0657
array-nonarray-polymorhpic-access 41.1190+-0.2191 40.6074+-1.1804 might be 1.0126x faster
array-prototype-every 111.6422+-0.2003 ! 112.5262+-0.6148 ! definitely 1.0079x slower
array-prototype-forEach 109.2232+-0.8932 ? 109.5192+-0.5706 ?
array-prototype-map 124.6735+-2.4861 124.0004+-2.5844
array-prototype-reduce 104.9543+-0.5647 ? 105.2569+-0.7580 ?
array-prototype-reduceRight 105.3582+-0.6879 104.7185+-0.6439
array-prototype-some 111.6165+-0.2144 ? 113.3468+-1.9217 ? might be 1.0155x slower
array-splice-contiguous 34.7727+-0.3378 ! 35.8519+-0.4091 ! definitely 1.0310x slower
array-with-double-add 5.3252+-0.0559 ? 5.3681+-0.0151 ?
array-with-double-increment 4.2321+-0.0217 4.1750+-0.0374 might be 1.0137x faster
array-with-double-mul-add 6.5493+-0.0387 ^ 6.4688+-0.0119 ^ definitely 1.0124x faster
array-with-double-sum 4.2673+-0.0313 4.2491+-0.0183
array-with-int32-add-sub 8.5422+-0.0337 ! 8.7853+-0.1885 ! definitely 1.0285x slower
array-with-int32-or-double-sum 4.3495+-0.0312 4.3354+-0.0213
ArrayBuffer-DataView-alloc-large-long-lived
38.7996+-0.1750 38.6390+-0.1529
ArrayBuffer-DataView-alloc-long-lived 16.9175+-0.2802 ? 17.0192+-0.2815 ?
ArrayBuffer-Int32Array-byteOffset 5.1020+-0.1983 5.0294+-0.0139 might be 1.0144x faster
ArrayBuffer-Int8Array-alloc-large-long-lived
41.6876+-3.8315 39.7367+-1.8853 might be 1.0491x faster
ArrayBuffer-Int8Array-alloc-long-lived-buffer
28.2072+-0.1603 ^ 27.5235+-0.1837 ^ definitely 1.0248x faster
ArrayBuffer-Int8Array-alloc-long-lived 16.8138+-2.1193 15.9185+-0.1793 might be 1.0562x faster
ArrayBuffer-Int8Array-alloc 13.6458+-0.3295 ? 14.5506+-2.5724 ? might be 1.0663x slower
asmjs_bool_bug 9.5976+-0.1853 ? 9.7096+-0.1721 ? might be 1.0117x slower
assign-custom-setter-polymorphic 4.0940+-0.0581 ! 4.1918+-0.0398 ! definitely 1.0239x slower
assign-custom-setter 5.6039+-0.0315 ? 5.8127+-0.1899 ? might be 1.0373x slower
basic-set 11.1949+-0.5221 11.1298+-0.0903
big-int-mul 5.3266+-0.2377 5.2237+-0.0130 might be 1.0197x faster
boolean-test 4.0314+-0.0562 3.9959+-0.0278
branch-fold 4.8407+-0.0350 ? 4.9161+-0.1572 ? might be 1.0156x slower
branch-on-string-as-boolean 25.3538+-0.3078 25.2882+-0.3910
by-val-generic 9.9597+-0.0653 9.9080+-0.2558
call-spread-apply 37.4915+-0.8748 ? 38.4904+-1.1527 ? might be 1.0266x slower
call-spread-call 31.1302+-0.0865 ^ 30.8404+-0.1320 ^ definitely 1.0094x faster
captured-assignments 0.6444+-0.0219 ? 0.6492+-0.0241 ?
cast-int-to-double 6.7339+-0.0235 ? 6.8240+-0.1739 ? might be 1.0134x slower
cell-argument 10.7218+-0.0303 ? 10.7826+-0.2197 ?
cfg-simplify 3.6548+-0.0806 3.6434+-0.0936
chain-getter-access 11.7304+-0.0908 11.6052+-0.1325 might be 1.0108x faster
cmpeq-obj-to-obj-other 12.6528+-0.1375 ! 13.0671+-0.0453 ! definitely 1.0328x slower
constant-test 6.3556+-0.0184 ? 6.3623+-0.0255 ?
create-lots-of-functions 13.3037+-0.5555 12.9614+-0.1109 might be 1.0264x faster
cse-new-array-buffer 2.8648+-0.0402 2.7787+-0.0864 might be 1.0310x faster
cse-new-array 2.9864+-0.0579 2.9787+-0.0495
DataView-custom-properties 46.2083+-1.2287 45.5124+-0.4256 might be 1.0153x faster
delay-tear-off-arguments-strictmode 17.5054+-0.2570 17.3861+-0.0780
deltablue-varargs 266.0583+-1.9069 ? 268.6702+-8.2586 ?
destructuring-arguments 230.2788+-1.2814 ? 235.8361+-10.9457 ? might be 1.0241x slower
destructuring-parameters-overridden-by-function
0.7323+-0.0307 0.7212+-0.0487 might be 1.0154x faster
destructuring-swap 6.5111+-0.0286 6.5089+-0.0481
direct-arguments-getbyval 1.7095+-0.0661 1.7005+-0.0518
div-boolean-double 6.6482+-0.0212 ? 6.6833+-0.0341 ?
div-boolean 9.9967+-0.0109 ! 10.0710+-0.0184 ! definitely 1.0074x slower
double-get-by-val-out-of-bounds 5.7133+-0.0227 ^ 5.5549+-0.0347 ^ definitely 1.0285x faster
double-pollution-getbyval 11.3955+-0.0430 ? 11.4111+-0.0237 ?
double-pollution-putbyoffset 5.3514+-0.0304 ^ 5.2711+-0.0395 ^ definitely 1.0152x faster
double-real-use 38.8680+-0.0312 ! 39.0460+-0.1097 ! definitely 1.0046x slower
double-to-int32-typed-array-no-inline 2.9147+-0.0513 2.9027+-0.0509
double-to-int32-typed-array 2.6109+-0.0410 2.5654+-0.0535 might be 1.0177x faster
double-to-uint32-typed-array-no-inline 2.9718+-0.0460 2.9450+-0.0312
double-to-uint32-typed-array 2.6473+-0.0525 ? 2.6488+-0.0403 ?
elidable-new-object-dag 50.3193+-0.8058 ? 50.3413+-0.4375 ?
elidable-new-object-roflcopter 50.8408+-0.4193 50.8092+-0.4156
elidable-new-object-then-call 46.7357+-0.2467 ? 46.9992+-0.4955 ?
elidable-new-object-tree 52.7918+-0.6395 ? 52.8315+-0.6537 ?
empty-string-plus-int 6.7159+-0.1521 ? 6.7271+-0.0628 ?
emscripten-cube2hash 48.3326+-0.3124 ? 48.8531+-0.3268 ? might be 1.0108x slower
exit-length-on-plain-object 16.8698+-0.0872 ? 17.4952+-0.7665 ? might be 1.0371x slower
external-arguments-getbyval 1.6294+-0.0537 ? 1.6655+-0.0615 ? might be 1.0222x slower
external-arguments-putbyval 3.0933+-0.1654 3.0282+-0.0560 might be 1.0215x faster
fixed-typed-array-storage-var-index 1.6789+-0.0308 ? 1.6958+-0.0626 ? might be 1.0101x slower
fixed-typed-array-storage 1.2629+-0.0240 1.2496+-0.0284 might be 1.0106x faster
Float32Array-matrix-mult 5.8921+-0.0466 ? 5.9247+-0.0474 ?
Float32Array-to-Float64Array-set 70.4592+-0.0870 ! 73.9915+-0.1406 ! definitely 1.0501x slower
Float64Array-alloc-long-lived 80.4173+-0.3633 ^ 79.3145+-0.3472 ^ definitely 1.0139x faster
Float64Array-to-Int16Array-set 99.7402+-0.3963 ^ 93.4952+-0.1544 ^ definitely 1.0668x faster
fold-double-to-int 18.5864+-0.1552 ? 18.6248+-0.1537 ?
fold-get-by-id-to-multi-get-by-offset-rare-int
10.7157+-0.2105 ? 10.7184+-0.2382 ?
fold-get-by-id-to-multi-get-by-offset 8.9760+-0.2921 ? 9.0944+-0.1363 ? might be 1.0132x slower
fold-multi-get-by-offset-to-get-by-offset
8.4648+-0.3831 ? 8.4701+-0.4334 ?
fold-multi-get-by-offset-to-poly-get-by-offset
8.3057+-0.5966 ? 8.3653+-0.6644 ?
fold-multi-put-by-offset-to-poly-put-by-offset
7.7778+-0.3071 ? 7.7787+-0.2733 ?
fold-multi-put-by-offset-to-put-by-offset
6.2231+-0.0474 6.0987+-0.3375 might be 1.0204x faster
fold-multi-put-by-offset-to-replace-or-transition-put-by-offset
12.2407+-0.7210 ? 12.6628+-0.6421 ? might be 1.0345x slower
fold-put-by-id-to-multi-put-by-offset 8.9200+-0.5767 ? 8.9666+-0.4092 ?
fold-put-structure 5.9176+-0.0474 ? 5.9606+-0.0391 ?
for-of-iterate-array-entries 16.5500+-0.5184 16.1927+-0.3405 might be 1.0221x faster
for-of-iterate-array-keys 4.8068+-0.1401 ? 4.9388+-0.1891 ? might be 1.0275x slower
for-of-iterate-array-values 4.6561+-0.0500 ? 4.7798+-0.2045 ? might be 1.0266x slower
fround 25.9820+-0.2891 ? 26.2406+-0.3518 ?
ftl-library-inlining-dataview 86.4126+-0.0862 ? 86.7813+-0.3783 ?
ftl-library-inlining 161.7449+-33.1793 144.2740+-0.1983 might be 1.1211x faster
function-dot-apply 2.8805+-0.0433 ? 2.8958+-0.0308 ?
function-test 3.8060+-0.0397 ? 3.8293+-0.0674 ?
function-with-eval 124.7633+-0.9514 123.8104+-0.8024
gcse-poly-get-less-obvious 27.0659+-4.1221 25.2286+-1.9691 might be 1.0728x faster
gcse-poly-get 33.4540+-3.5483 29.7109+-2.5840 might be 1.1260x faster
gcse 5.6418+-0.0271 5.6310+-0.0204
get-by-id-bimorphic-check-structure-elimination-simple
3.6243+-0.1606 3.5333+-0.0273 might be 1.0258x faster
get-by-id-bimorphic-check-structure-elimination
7.9460+-0.1116 ? 7.9474+-0.0904 ?
get-by-id-chain-from-try-block 8.8924+-0.0081 ^ 8.7063+-0.0362 ^ definitely 1.0214x faster
get-by-id-check-structure-elimination 6.6802+-0.0465 ? 6.6847+-0.0290 ?
get-by-id-proto-or-self 22.5911+-0.9970 ? 24.9811+-2.2403 ? might be 1.1058x slower
get-by-id-quadmorphic-check-structure-elimination-simple
3.8105+-0.0641 ? 3.8470+-0.2084 ?
get-by-id-self-or-proto 22.1123+-0.9911 ? 23.0606+-1.1966 ? might be 1.0429x slower
get-by-val-out-of-bounds 5.4045+-0.0329 5.3690+-0.0551
get_callee_monomorphic 3.0481+-0.1333 ? 3.0840+-0.0445 ? might be 1.0118x slower
get_callee_polymorphic 4.2763+-0.0854 4.2666+-0.0632
getter-no-activation 6.1677+-0.0418 6.1478+-0.0583
getter-prototype 19.1430+-0.2014 ? 19.1616+-0.1338 ?
getter-richards 119.2553+-2.3645 ? 120.0335+-1.7076 ?
getter 6.7192+-0.0550 ? 6.8012+-0.0481 ? might be 1.0122x slower
global-var-const-infer-fire-from-opt 1.2591+-0.1525 ? 1.3055+-0.1271 ? might be 1.0369x slower
global-var-const-infer 1.0558+-0.0354 ? 1.1400+-0.1248 ? might be 1.0797x slower
HashMap-put-get-iterate-keys 31.0373+-0.3722 30.7209+-0.2404 might be 1.0103x faster
HashMap-put-get-iterate 30.6773+-0.2117 30.3654+-0.5507 might be 1.0103x faster
HashMap-string-put-get-iterate 40.2012+-1.5833 ^ 35.2194+-1.3954 ^ definitely 1.1414x faster
hoist-make-rope 14.3208+-1.1539 ? 14.7665+-1.3856 ? might be 1.0311x slower
hoist-poly-check-structure-effectful-loop
6.4588+-0.0400 ? 6.4836+-0.0492 ?
hoist-poly-check-structure 4.7786+-0.0272 4.7678+-0.0285
imul-double-only 10.0229+-0.0623 ^ 9.4725+-0.1127 ^ definitely 1.0581x faster
imul-int-only 12.3222+-0.3697 12.2781+-0.3992
imul-mixed 9.5611+-0.1233 ? 9.8151+-0.5966 ? might be 1.0266x slower
in-four-cases 28.8295+-0.1128 ! 29.9942+-0.2183 ! definitely 1.0404x slower
in-one-case-false 14.1002+-0.0638 13.8383+-0.2094 might be 1.0189x faster
in-one-case-true 14.0590+-0.0375 ^ 13.7144+-0.0258 ^ definitely 1.0251x faster
in-two-cases 14.7330+-0.1485 ^ 14.1530+-0.0930 ^ definitely 1.0410x faster
indexed-properties-in-objects 3.7946+-0.0502 3.7887+-0.0461
infer-closure-const-then-mov-no-inline 5.1108+-0.0671 ^ 5.0094+-0.0252 ^ definitely 1.0202x faster
infer-closure-const-then-mov 25.5530+-0.1854 ? 25.8312+-0.3787 ? might be 1.0109x slower
infer-closure-const-then-put-to-scope-no-inline
16.5005+-0.0361 ? 16.7502+-0.2455 ? might be 1.0151x slower
infer-closure-const-then-put-to-scope 28.1703+-0.1493 ! 29.5809+-1.1496 ! definitely 1.0501x slower
infer-closure-const-then-reenter-no-inline
72.4104+-0.3225 ? 73.0959+-1.1720 ?
infer-closure-const-then-reenter 28.8865+-0.9151 28.8506+-0.8386
infer-constant-global-property 4.6298+-0.0958 4.5800+-0.0175 might be 1.0109x faster
infer-constant-property 3.5152+-0.0184 ? 3.5610+-0.0347 ? might be 1.0130x slower
infer-one-time-closure-ten-vars 15.8865+-0.1956 15.7283+-0.1921 might be 1.0101x faster
infer-one-time-closure-two-vars 15.2623+-0.1001 15.0797+-0.1232 might be 1.0121x faster
infer-one-time-closure 15.1500+-0.2953 ? 15.1530+-0.0952 ?
infer-one-time-deep-closure 26.8258+-0.1937 ? 26.8922+-0.1958 ?
inline-arguments-access 4.9858+-0.0946 4.9540+-0.0756
inline-arguments-aliased-access 5.0320+-0.1188 5.0165+-0.0968
inline-arguments-local-escape 5.1383+-0.1950 5.1078+-0.1401
inline-get-scoped-var 6.0699+-0.0654 ? 6.1210+-0.0525 ?
inlined-put-by-id-transition 13.9570+-0.2643 13.8094+-0.1864 might be 1.0107x faster
int-or-other-abs-then-get-by-val 6.3394+-0.0365 ^ 5.9941+-0.0386 ^ definitely 1.0576x faster
int-or-other-abs-zero-then-get-by-val 22.7919+-0.2342 ? 23.4238+-0.4075 ? might be 1.0277x slower
int-or-other-add-then-get-by-val 5.5110+-0.0473 ? 5.5436+-0.0547 ?
int-or-other-add 6.8479+-0.0562 ? 6.8490+-0.0468 ?
int-or-other-div-then-get-by-val 5.4437+-0.0291 ^ 5.3094+-0.0326 ^ definitely 1.0253x faster
int-or-other-max-then-get-by-val 5.5627+-0.0332 ^ 5.5003+-0.0135 ^ definitely 1.0113x faster
int-or-other-min-then-get-by-val 5.5589+-0.0265 ^ 5.3693+-0.0174 ^ definitely 1.0353x faster
int-or-other-mod-then-get-by-val 5.0503+-0.0621 ? 5.0994+-0.0950 ?
int-or-other-mul-then-get-by-val 5.0573+-0.0215 ? 5.1177+-0.1406 ? might be 1.0119x slower
int-or-other-neg-then-get-by-val 6.1060+-0.0188 ^ 5.5638+-0.0251 ^ definitely 1.0974x faster
int-or-other-neg-zero-then-get-by-val 22.6818+-0.2077 ! 23.3442+-0.2087 ! definitely 1.0292x slower
int-or-other-sub-then-get-by-val 5.5424+-0.0524 5.5153+-0.0524
int-or-other-sub 4.5974+-0.0416 4.5789+-0.0389
int-overflow-local 5.7850+-0.0405 5.7319+-0.1740
Int16Array-alloc-long-lived 58.9126+-0.7147 58.2027+-0.3232 might be 1.0122x faster
Int16Array-bubble-sort-with-byteLength 26.3084+-0.0651 ! 27.0109+-0.2123 ! definitely 1.0267x slower
Int16Array-bubble-sort 26.9322+-0.2398 ? 26.9779+-0.2370 ?
Int16Array-load-int-mul 1.9698+-0.0246 1.9617+-0.0199
Int16Array-to-Int32Array-set 68.5887+-0.0703 ! 69.1246+-0.3598 ! definitely 1.0078x slower
Int32Array-alloc-large 23.3470+-0.3762 ? 23.4303+-0.3749 ?
Int32Array-alloc-long-lived 66.0114+-0.6230 65.2233+-0.6977 might be 1.0121x faster
Int32Array-alloc 3.4170+-0.0703 ? 3.4827+-0.3743 ? might be 1.0192x slower
Int32Array-Int8Array-view-alloc 8.3517+-0.0467 ? 8.3605+-0.0253 ?
int52-spill 6.7677+-0.0811 6.7405+-0.0624
Int8Array-alloc-long-lived 53.1388+-0.7743 52.1472+-0.5969 might be 1.0190x faster
Int8Array-load-with-byteLength 4.3444+-0.0335 ? 4.4068+-0.1735 ? might be 1.0144x slower
Int8Array-load 4.3530+-0.0273 ? 4.3627+-0.0158 ?
integer-divide 14.3213+-0.1036 ? 14.3812+-0.1493 ?
integer-modulo 2.7508+-0.0920 2.6565+-0.0855 might be 1.0355x faster
is-boolean-fold-tricky 5.8466+-0.2136 5.7972+-0.0332
is-boolean-fold 3.6215+-0.0193 ? 3.6837+-0.0443 ? might be 1.0172x slower
is-function-fold-tricky-internal-function
15.6170+-0.0276 ^ 15.1833+-0.0372 ^ definitely 1.0286x faster
is-function-fold-tricky 5.8931+-0.0186 ? 5.9482+-0.0801 ?
is-function-fold 3.6844+-0.0415 3.6705+-0.0526
is-number-fold-tricky 5.7832+-0.0276 ? 5.8123+-0.0931 ?
is-number-fold 3.6545+-0.0687 ? 3.6620+-0.0565 ?
is-object-or-null-fold-functions 3.7469+-0.0328 3.7423+-0.0661
is-object-or-null-fold-less-tricky 5.8537+-0.0142 ? 5.9615+-0.0971 ? might be 1.0184x slower
is-object-or-null-fold-tricky 8.4486+-0.0213 8.4420+-0.0218
is-object-or-null-fold 3.7019+-0.0630 3.6944+-0.0230
is-object-or-null-trickier-function 6.0220+-0.0225 ? 6.0699+-0.1157 ?
is-object-or-null-trickier-internal-function
16.2985+-0.0641 ! 16.6989+-0.2520 ! definitely 1.0246x slower
is-object-or-null-tricky-function 5.9465+-0.0283 ? 5.9914+-0.0311 ?
is-object-or-null-tricky-internal-function
12.0720+-0.0267 ^ 11.8963+-0.0287 ^ definitely 1.0148x faster
is-string-fold-tricky 5.7970+-0.0255 ? 5.8106+-0.0131 ?
is-string-fold 3.6236+-0.0544 ? 3.7114+-0.1770 ? might be 1.0242x slower
is-undefined-fold-tricky 4.8417+-0.0654 4.8016+-0.0423
is-undefined-fold 3.6639+-0.0662 3.6401+-0.0283
large-int-captured 5.4955+-0.0993 5.4434+-0.0883
large-int-neg 21.3974+-0.0881 ^ 21.1322+-0.1651 ^ definitely 1.0126x faster
large-int 19.8873+-0.2852 19.5206+-0.1725 might be 1.0188x faster
load-varargs-elimination 31.3516+-0.2604 ? 31.6255+-0.0860 ?
logical-not-weird-types 4.3513+-0.0473 4.2990+-0.0642 might be 1.0122x faster
logical-not 5.9675+-0.0661 ! 6.1282+-0.0930 ! definitely 1.0269x slower
lots-of-fields 14.9067+-0.0930 ? 14.9414+-0.1004 ?
make-indexed-storage 3.9790+-0.2916 3.9529+-0.2975
make-rope-cse 4.8083+-0.0619 4.7662+-0.0603
marsaglia-larger-ints 52.2453+-0.1612 52.1742+-0.2116
marsaglia-osr-entry 29.2806+-0.1460 ? 29.4050+-0.2476 ?
math-with-out-of-bounds-array-values 32.5067+-1.9226 32.1429+-1.0026 might be 1.0113x faster
max-boolean 3.2168+-0.0476 3.1592+-0.0164 might be 1.0182x faster
method-on-number 22.8708+-0.2147 ? 23.2787+-0.2161 ? might be 1.0178x slower
min-boolean 3.2193+-0.0474 3.1983+-0.0414
minus-boolean-double 4.1091+-0.0316 ? 4.1172+-0.0339 ?
minus-boolean 3.0298+-0.0628 2.9913+-0.0153 might be 1.0129x faster
misc-strict-eq 48.3538+-1.0811 47.9309+-0.6977
mod-boolean-double 14.1358+-0.0184 14.1352+-0.0523
mod-boolean 10.0667+-0.0475 10.0608+-0.0470
mul-boolean-double 4.8247+-0.0166 4.7988+-0.0186
mul-boolean 3.7300+-0.0173 ? 3.7378+-0.0571 ?
neg-boolean 4.1357+-0.0490 4.1104+-0.0252
negative-zero-divide 0.5373+-0.0241 0.5323+-0.0321
negative-zero-modulo 0.5457+-0.0147 0.5212+-0.0303 might be 1.0470x faster
negative-zero-negate 0.5039+-0.0314 0.4987+-0.0272 might be 1.0104x faster
nested-function-parsing 50.4342+-0.4603 50.3311+-0.3377
new-array-buffer-dead 124.9716+-0.4599 ? 125.3321+-1.4148 ?
new-array-buffer-push 8.0832+-0.3174 7.8784+-0.1356 might be 1.0260x faster
new-array-dead 22.4814+-0.7806 ? 22.9073+-0.7556 ? might be 1.0189x slower
new-array-push 4.6827+-0.0810 ? 4.7508+-0.1801 ? might be 1.0145x slower
no-inline-constructor 46.6945+-0.1829 46.6540+-0.3923
number-test 3.9960+-0.1413 ? 4.0682+-0.2109 ? might be 1.0181x slower
object-closure-call 7.2012+-0.0641 ? 7.2381+-0.0501 ?
object-test 3.7124+-0.0596 ^ 3.6113+-0.0364 ^ definitely 1.0280x faster
obvious-sink-pathology-taken 151.7870+-1.1083 151.6200+-1.6764
obvious-sink-pathology 142.5675+-0.8539 142.3259+-1.0376
obviously-elidable-new-object 41.2596+-0.2919 41.2030+-0.2047
plus-boolean-arith 3.2520+-0.0190 ? 3.2595+-0.0262 ?
plus-boolean-double 4.1027+-0.0295 ? 4.1306+-0.0473 ?
plus-boolean 3.1228+-0.0454 3.1160+-0.0177
poly-chain-access-different-prototypes-simple
4.2731+-0.0211 ? 4.2766+-0.0183 ?
poly-chain-access-different-prototypes 3.3501+-0.0398 ? 3.3523+-0.0285 ?
poly-chain-access-simpler 4.2382+-0.0424 ? 4.2453+-0.0337 ?
poly-chain-access 3.3725+-0.0345 3.3615+-0.0158
poly-stricteq 83.3443+-0.3664 ! 84.1060+-0.1634 ! definitely 1.0091x slower
polymorphic-array-call 1.8799+-0.1427 1.8236+-0.0660 might be 1.0309x faster
polymorphic-get-by-id 4.0509+-0.0786 ? 4.0605+-0.2026 ?
polymorphic-put-by-id 39.2329+-1.4733 ? 40.8713+-1.8717 ? might be 1.0418x slower
polymorphic-structure 19.5623+-0.0641 ? 19.5924+-0.2310 ?
polyvariant-monomorphic-get-by-id 10.9385+-0.0181 10.9276+-0.0298
proto-getter-access 11.7424+-0.1295 ? 11.7708+-0.2814 ?
put-by-id-replace-and-transition 11.6860+-0.0568 ? 11.6990+-0.1435 ?
put-by-id-slightly-polymorphic 3.7568+-0.1086 3.6465+-0.0145 might be 1.0302x faster
put-by-id 14.6830+-0.3868 14.4934+-0.0747 might be 1.0131x faster
put-by-val-direct 0.5404+-0.0182 0.5387+-0.0075
put-by-val-large-index-blank-indexing-type
6.9388+-0.2142 6.8062+-0.1478 might be 1.0195x faster
put-by-val-machine-int 3.2948+-0.0924 3.2623+-0.0409
rare-osr-exit-on-local 19.7411+-0.2237 ^ 19.0790+-0.1641 ^ definitely 1.0347x faster
register-pressure-from-osr 28.1209+-0.0970 ^ 27.7845+-0.0265 ^ definitely 1.0121x faster
repeat-multi-get-by-offset 32.1580+-0.0559 ^ 31.4649+-0.0682 ^ definitely 1.0220x faster
setter-prototype 13.1719+-0.0638 ? 13.6416+-0.6023 ? might be 1.0357x slower
setter 6.8587+-0.0148 ! 7.0769+-0.0356 ! definitely 1.0318x slower
simple-activation-demo 32.9895+-0.1577 ? 32.9927+-0.0450 ?
simple-getter-access 15.4791+-0.3484 15.2904+-0.3360 might be 1.0123x faster
simple-poly-call-nested 10.2493+-0.1542 10.1699+-0.0467
simple-poly-call 1.7946+-0.0303 1.7848+-0.0324
sin-boolean 24.3118+-0.3637 ? 24.3903+-0.4249 ?
singleton-scope 83.1614+-0.1904 83.1191+-0.0863
sink-function 13.6433+-0.4021 13.2854+-0.6508 might be 1.0269x faster
sink-huge-activation 22.6903+-0.6360 ? 22.9220+-0.5473 ? might be 1.0102x slower
sinkable-new-object-dag 84.9805+-0.7027 84.3514+-0.6247
sinkable-new-object-taken 65.6322+-3.1689 ? 65.8191+-3.0931 ?
sinkable-new-object 45.7503+-0.5675 ? 46.0223+-0.3013 ?
slow-array-profile-convergence 3.7451+-0.1139 ? 3.8437+-0.0714 ? might be 1.0263x slower
slow-convergence 3.6045+-0.0368 3.5973+-0.0449
slow-ternaries 24.2060+-0.2163 24.0245+-0.2353
sorting-benchmark 24.6932+-0.5514 24.6858+-0.4376
sparse-conditional 1.5698+-0.0340 1.5675+-0.0301
splice-to-remove 19.8423+-0.3218 ? 19.9764+-0.5908 ?
string-char-code-at 20.9876+-0.2843 ? 21.1620+-0.1656 ?
string-concat-object 2.7364+-0.0655 ? 2.7422+-0.0315 ?
string-concat-pair-object 2.6460+-0.0506 ? 2.6642+-0.0514 ?
string-concat-pair-simple 13.5157+-0.2640 ? 13.7063+-0.1159 ? might be 1.0141x slower
string-concat-simple 14.0951+-0.2387 ? 14.2005+-0.1988 ?
string-cons-repeat 9.2513+-0.0515 ? 9.4098+-0.1888 ? might be 1.0171x slower
string-cons-tower 9.6667+-0.2086 9.5395+-0.0810 might be 1.0133x faster
string-equality 23.6063+-0.2168 23.5155+-0.0265
string-get-by-val-big-char 9.0806+-0.0862 ? 9.1562+-0.0958 ?
string-get-by-val-out-of-bounds-insane 4.8190+-0.0441 ? 5.0474+-0.6344 ? might be 1.0474x slower
string-get-by-val-out-of-bounds 6.8684+-0.0265 ^ 6.6848+-0.0538 ^ definitely 1.0275x faster
string-get-by-val 4.3996+-0.0316 ^ 4.2893+-0.0293 ^ definitely 1.0257x faster
string-hash 2.6992+-0.0704 ? 2.7437+-0.1147 ? might be 1.0165x slower
string-long-ident-equality 19.6039+-0.2716 19.4805+-0.1779
string-out-of-bounds 19.0359+-0.1593 ? 19.0513+-0.0943 ?
string-repeat-arith 43.4468+-0.5989 42.8693+-0.7905 might be 1.0135x faster
string-sub 82.3200+-0.2182 ^ 81.1168+-0.1957 ^ definitely 1.0148x faster
string-test 3.7943+-0.0348 3.7915+-0.0380
string-var-equality 46.2826+-0.3475 ? 46.5564+-0.1709 ?
structure-hoist-over-transitions 3.2639+-0.0683 3.2330+-0.0567
substring-concat-weird 53.2482+-0.6092 52.7653+-0.1292
substring-concat 57.7355+-1.1844 ? 60.3466+-7.2989 ? might be 1.0452x slower
substring 63.4055+-0.9276 62.6812+-0.2170 might be 1.0116x faster
switch-char-constant 3.4739+-0.0413 ? 3.4799+-0.0438 ?
switch-char 7.8057+-0.0242 7.7732+-0.2004
switch-constant 11.2731+-0.6442 10.7506+-0.8877 might be 1.0486x faster
switch-string-basic-big-var 24.4424+-0.4139 ? 24.5066+-0.4056 ?
switch-string-basic-big 23.5321+-0.2996 22.9768+-0.3396 might be 1.0242x faster
switch-string-basic-var 19.7283+-0.0995 ? 19.8987+-0.0945 ?
switch-string-basic 19.3378+-0.2378 18.8169+-0.3269 might be 1.0277x faster
switch-string-big-length-tower-var 26.5957+-0.0297 26.5598+-0.0874
switch-string-length-tower-var 20.1005+-0.1995 20.0606+-0.1977
switch-string-length-tower 17.3988+-0.1986 17.2304+-0.0791
switch-string-short 17.1941+-0.0667 ? 17.2528+-0.1996 ?
switch 15.3530+-0.2367 ^ 14.0450+-0.1074 ^ definitely 1.0931x faster
tear-off-arguments-simple 4.1361+-0.0805 4.0854+-0.0461 might be 1.0124x faster
tear-off-arguments 5.4071+-0.0441 ? 5.4895+-0.1201 ? might be 1.0152x slower
temporal-structure 15.8851+-0.0627 15.8675+-0.0728
to-int32-boolean 18.9233+-0.1154 18.6267+-0.1996 might be 1.0159x faster
try-catch-get-by-val-cloned-arguments 18.1443+-0.3468 17.8828+-0.3005 might be 1.0146x faster
try-catch-get-by-val-direct-arguments 7.7983+-0.0713 7.6645+-0.0682 might be 1.0175x faster
try-catch-get-by-val-scoped-arguments 8.9816+-0.0585 8.9486+-0.0641
typed-array-get-set-by-val-profiling 39.8994+-0.6285 ? 40.2024+-0.5922 ?
undefined-property-access 458.2072+-0.7950 457.8249+-0.5490
undefined-test 3.9502+-0.0373 3.9157+-0.0399
unprofiled-licm 28.9218+-0.0516 28.8149+-0.2147
varargs-call 19.7487+-0.1390 ^ 19.4434+-0.1203 ^ definitely 1.0157x faster
varargs-construct-inline 33.9153+-0.1252 33.7347+-0.2229
varargs-construct 28.9379+-0.0709 28.9348+-0.0644
varargs-inline 11.9621+-0.0572 ? 11.9979+-0.0646 ?
varargs-strict-mode 13.0958+-0.2104 ? 13.1982+-0.0330 ?
varargs 13.1533+-0.2389 ? 13.1689+-0.1161 ?
weird-inlining-const-prop 2.8992+-0.0306 ? 2.9430+-0.0948 ? might be 1.0151x slower
<geometric> 11.1467+-0.0095 11.1272+-0.0175 might be 1.0018x faster
Baseline Cleanup
AsmBench:
bigfib.cpp 662.2800+-1.9151 ? 664.0327+-2.9713 ?
cray.c 582.6438+-1.7950 ? 585.1523+-0.9829 ?
dry.c 665.7187+-16.7209 ? 669.6738+-13.0361 ?
FloatMM.c 981.7186+-0.8931 ? 982.5483+-0.9883 ?
gcc-loops.cpp 5398.6945+-19.9279 5386.8262+-20.6273
n-body.c 1338.3314+-1.5712 1337.5039+-1.1509
Quicksort.c 571.0984+-7.3592 569.8118+-2.2348
stepanov_container.cpp 5053.1910+-17.3673 5047.7298+-8.0727
Towers.c 341.1200+-3.4657 340.9508+-2.2335
<geometric> 1067.0364+-2.8968 ? 1067.8936+-2.6431 ? might be 1.0008x slower
Baseline Cleanup
CompressionBench:
huffman 77.5303+-2.4317 76.5352+-1.7042 might be 1.0130x faster
arithmetic-simple 451.1222+-0.6117 450.9536+-1.2013
arithmetic-precise 366.6309+-1.7393 ? 367.1316+-0.7801 ?
arithmetic-complex-precise 364.5636+-3.0375 ? 366.0035+-3.4183 ?
arithmetic-precise-order-0 464.0109+-0.5699 ? 465.7971+-1.9316 ?
arithmetic-precise-order-1 436.7401+-2.2413 ? 438.2528+-1.2560 ?
arithmetic-precise-order-2 501.5858+-3.3546 ? 503.6953+-2.3826 ?
arithmetic-simple-order-1 531.2106+-1.8268 ? 533.1872+-0.9793 ?
arithmetic-simple-order-2 598.7681+-2.4969 ? 602.1770+-2.9760 ?
lz-string 400.7597+-2.9111 ? 409.3882+-7.3152 ? might be 1.0215x slower
<geometric> 378.6246+-1.2321 ? 379.9261+-1.4980 ? might be 1.0034x slower
Baseline Cleanup
Geomean of preferred means:
<scaled-result> 76.6604+-0.1408 76.6034+-0.1108 might be 1.0007x faster
Created attachment 256720 [details]
Patch
Attachment 256720 [details] did not pass style-queue:
ERROR: Source/JavaScriptCore/jit/GPRInfo.h:429: One space before end of line comments [whitespace/comments] [5]
Total errors found: 1 in 21 files
If any of these errors are false positives, please file a bug against check-webkit-style.
(In reply to comment #6) > Attachment 256720 [details] did not pass style-queue: > > > ERROR: Source/JavaScriptCore/jit/GPRInfo.h:429: One space before end of > line comments [whitespace/comments] [5] > Total errors found: 1 in 21 files > > > If any of these errors are false positives, please file a bug against > check-webkit-style. Fixed locally. Comment on attachment 256720 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=256720&action=review r=me with a couple of changes. > Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:408 > + if (GPRInfo::returnValueGPR != GPRInfo::argumentGPR0) A register to register move() in the macro assembler already does a src != dest check so this is redundant. > Source/JavaScriptCore/jit/FPRInfo.h:280 > + static const FPRReg fpRegT5 = MIPSRegisters::f10; > static const FPRReg fpRegT5 = MIPSRegisters::f18; You have fpRegT5 listed twice. I think one of these should be fpRegT6. > Source/JavaScriptCore/jit/GPRInfo.h:406 > + static const GPRReg regC0 = X86Registers::ebx; > + static const GPRReg regC1 = X86Registers::r12; > + static const GPRReg regC2 = X86Registers::r13; What about changing the names to regCS<n? or even regCalleeSave<n>? > Source/JavaScriptCore/jit/JIT.cpp:594 > + if (returnValueGPR != GPRInfo::argumentGPR0) Like above, this not needed. > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:33 > +# Currently this is just 32-bit so "i" and "p" are interchangeable Change this line to 'For 32-bit, "i" and "p" are interchangeable' > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:132 > + Delete this blank line > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:867 > + const address = a1 > + const zeroValue = a2 Let's add "const vm = a0" for readability. > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:934 > if X86_64 > - leap (label - _relativePCBase)[t1], t0 > - move index, t2 > - storep t0, [t4, t2, 8] > + leap (label - _relativePCBase)[t1], t3 > + move index, t4 > + storep t3, [a0, t4, 8] > elsif X86_64_WIN > - leap (label - _relativePCBase)[t1], t0 > + leap (label - _relativePCBase)[t1], t3 > move index, t4 > - storep t0, [t2, t4, 8] > + storep t3, [a0, t4, 8] These two cases are now the same and can be merged together. (In reply to comment #8) > Comment on attachment 256720 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=256720&action=review > > r=me with a couple of changes. Thanks! > > > Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:408 > > + if (GPRInfo::returnValueGPR != GPRInfo::argumentGPR0) > > A register to register move() in the macro assembler already does a src != > dest check so this is redundant. Removed. > > > Source/JavaScriptCore/jit/FPRInfo.h:280 > > + static const FPRReg fpRegT5 = MIPSRegisters::f10; > > static const FPRReg fpRegT5 = MIPSRegisters::f18; > > You have fpRegT5 listed twice. I think one of these should be fpRegT6. Indeed, good catch. > > > Source/JavaScriptCore/jit/GPRInfo.h:406 > > + static const GPRReg regC0 = X86Registers::ebx; > > + static const GPRReg regC1 = X86Registers::r12; > > + static const GPRReg regC2 = X86Registers::r13; > > What about changing the names to regCS<n? or even regCalleeSave<n>? Changed those to regCS<n>. > > > Source/JavaScriptCore/jit/JIT.cpp:594 > > + if (returnValueGPR != GPRInfo::argumentGPR0) > > Like above, this not needed. Removed. > > > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:33 > > +# Currently this is just 32-bit so "i" and "p" are interchangeable > > Change this line to 'For 32-bit, "i" and "p" are interchangeable' Done. > > > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:132 > > + > > Delete this blank line Done. > > > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:867 > > + const address = a1 > > + const zeroValue = a2 > > Let's add "const vm = a0" for readability. Ditto. > > > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:934 > > if X86_64 > > - leap (label - _relativePCBase)[t1], t0 > > - move index, t2 > > - storep t0, [t4, t2, 8] > > + leap (label - _relativePCBase)[t1], t3 > > + move index, t4 > > + storep t3, [a0, t4, 8] > > elsif X86_64_WIN > > - leap (label - _relativePCBase)[t1], t0 > > + leap (label - _relativePCBase)[t1], t3 > > move index, t4 > > - storep t0, [t2, t4, 8] > > + storep t3, [a0, t4, 8] > > These two cases are now the same and can be merged together. Indeed, merged. Committed r186792 <https://trac.webkit.org/changeset/186792>. Comment on attachment 256720 [details] Patch Cleared review? from attachment 256720 [details] so that this bug does not appear in http://webkit.org/pending-review. If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again). |