Bug 154942 - clean up JSObject::isExtensibleInline and JSObject::setPrototypeOfInline, and rename setPrototypeOf to setPrototype
Summary: clean up JSObject::isExtensibleInline and JSObject::setPrototypeOfInline, and...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Saam Barati
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-03-02 17:12 PST by Saam Barati
Modified: 2016-03-02 18:04 PST (History)
10 users (show)

See Also:


Attachments
patch (19.54 KB, patch)
2016-03-02 17:38 PST, Saam Barati
no flags Details | Formatted Diff | Diff
patch (19.58 KB, patch)
2016-03-02 17:39 PST, Saam Barati
benjamin: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Saam Barati 2016-03-02 17:12:19 PST
These don't need to be inlined in the way they are.
Doing full dynamic dispatch always is probably ok performance wise.
Comment 1 Saam Barati 2016-03-02 17:38:50 PST
Created attachment 272713 [details]
patch
Comment 2 Saam Barati 2016-03-02 17:39:55 PST
Created attachment 272714 [details]
patch
Comment 3 Benjamin Poulain 2016-03-02 17:41:29 PST
Comment on attachment 272714 [details]
patch

Ok if perf is unchanged or better.
Comment 4 Saam Barati 2016-03-02 18:01:35 PST
seems ok:

Benchmark report for Kraken on Saams-MacBook-Pro (MacBookPro11,3).

VMs tested:
"og" at /Volumes/Data/WK/b/OpenSource/WebKitBuild/Release/jsc (r197479)
"change" at /Volumes/Data/WK/a/OpenSource/WebKitBuild/Release/jsc (r197479)

Collected 8 samples per benchmark/VM, with 8 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.

                                              og                      change                                      

ai-astar                                91.913+-0.757      ?      94.022+-2.798         ? might be 1.0229x slower
audio-beat-detection                    52.289+-4.154             49.723+-3.826           might be 1.0516x faster
audio-dft                               95.634+-2.172      ?      97.823+-6.562         ? might be 1.0229x slower
audio-fft                               33.743+-0.977             33.512+-0.488         
audio-oscillator                        45.144+-0.325      ?      45.961+-1.399         ? might be 1.0181x slower
imaging-darkroom                        57.117+-1.545      ?      57.289+-1.964         ?
imaging-desaturate                      42.266+-0.227      ?      43.644+-1.257         ? might be 1.0326x slower
imaging-gaussian-blur                   63.772+-3.624             63.717+-0.294         
json-parse-financial                    35.229+-0.873      ?      36.172+-1.654         ? might be 1.0268x slower
json-stringify-tinderbox                24.211+-0.466             23.825+-1.067           might be 1.0162x faster
stanford-crypto-aes                     38.561+-1.303             38.373+-0.724         
stanford-crypto-ccm                     35.894+-1.382             35.808+-1.316         
stanford-crypto-pbkdf2                  97.502+-1.700             96.834+-0.875         
stanford-crypto-sha256-iterative        37.218+-1.387      ?      37.518+-1.697         ?

<arithmetic>                            53.607+-0.447      ?      53.873+-0.866         ? might be 1.0050x slower


Benchmark report for Octane on Saams-MacBook-Pro (MacBookPro11,3).

VMs tested:
"og" at /Volumes/Data/WK/b/OpenSource/WebKitBuild/Release/jsc (r197479)
"change" at /Volumes/Data/WK/a/OpenSource/WebKitBuild/Release/jsc (r197479)

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.

                               og                      change                                      

encrypt                 0.14868+-0.00304    ?     0.15128+-0.00250       ? might be 1.0174x slower
decrypt                 2.66179+-0.01530    ?     2.71546+-0.12385       ? might be 1.0202x slower
deltablue      x2       0.13080+-0.00139    ?     0.13245+-0.00127       ? might be 1.0126x slower
earley                  0.27077+-0.00353          0.27045+-0.00304       
boyer                   4.26831+-0.02858          4.25688+-0.02520       
navier-stokes  x2       4.66434+-0.06324          4.65171+-0.02990       
raytrace       x2       0.84510+-0.00379    ?     0.84888+-0.00548       ?
richards       x2       0.07780+-0.00125          0.07671+-0.00074         might be 1.0143x faster
splay          x2       0.33624+-0.00365    ?     0.33945+-0.00333       ?
regexp         x2      22.10681+-1.00198         21.74033+-0.50713         might be 1.0169x faster
pdfjs          x2      36.34950+-0.76450    ?    36.58197+-0.53117       ?
mandreel       x2      39.99601+-0.31316    ?    40.52756+-0.67490       ? might be 1.0133x slower
gbemu          x2      23.30363+-0.36542    ?    23.30821+-0.26243       ?
closure                 0.54711+-0.00880    ?     0.54869+-0.00251       ?
jquery                  7.19652+-0.04057    ?     7.20764+-0.09384       ?
box2d          x2       8.71686+-0.10681          8.71193+-0.06984       
zlib           x2     372.28657+-6.08533        371.93633+-5.16447       
typescript     x2     641.08386+-3.62551        639.85050+-13.85599      

<geometric>             4.97328+-0.02544    ?     4.98268+-0.01063       ? might be 1.0019x slower


Benchmark report for AsmBench on Saams-MacBook-Pro (MacBookPro11,3).

VMs tested:
"og" at /Volumes/Data/WK/b/OpenSource/WebKitBuild/Release/jsc (r197479)
"change" at /Volumes/Data/WK/a/OpenSource/WebKitBuild/Release/jsc (r197479)

Collected 4 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.

                                    og                      change                                      

bigfib.cpp                  420.3285+-15.5472         403.7895+-4.7334          might be 1.0410x faster
cray.c                      343.9819+-5.8693          343.7607+-8.1333        
dry.c                       398.2158+-8.8498     ?    432.5530+-130.1604      ? might be 1.0862x slower
FloatMM.c                   666.3773+-10.0069    ?    677.7939+-19.7492       ? might be 1.0171x slower
gcc-loops.cpp              3465.8329+-16.9551        3458.0456+-30.1127       
n-body.c                    759.4915+-7.6487     ?    763.3345+-7.7038        ?
Quicksort.c                 370.7815+-3.0035     ?    374.8322+-6.8399        ? might be 1.0109x slower
stepanov_container.cpp     3216.4509+-33.1501        3209.3784+-45.2276       
Towers.c                    261.4466+-11.1849         258.7264+-2.8191          might be 1.0105x faster

<geometric>                 680.9374+-8.0557     ?    684.6670+-20.7696       ? might be 1.0055x slower
Comment 5 Saam Barati 2016-03-02 18:04:59 PST
landed in:
http://trac.webkit.org/changeset/197484