Bug 157196 - [JSC] Object constructor need to be aware of new.target
Summary: [JSC] Object constructor need to be aware of new.target
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Yusuke Suzuki
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-04-29 11:50 PDT by Yusuke Suzuki
Modified: 2016-05-04 10:40 PDT (History)
8 users (show)

See Also:


Attachments
Patch (6.93 KB, patch)
2016-04-29 13:09 PDT, Yusuke Suzuki
no flags Details | Formatted Diff | Diff
Patch (7.86 KB, patch)
2016-04-30 13:07 PDT, Yusuke Suzuki
no flags Details | Formatted Diff | Diff
Patch (8.17 KB, patch)
2016-05-01 03:18 PDT, Yusuke Suzuki
no flags Details | Formatted Diff | Diff
Patch (7.40 KB, patch)
2016-05-04 02:07 PDT, Yusuke Suzuki
no flags Details | Formatted Diff | Diff
Patch (7.83 KB, patch)
2016-05-04 02:09 PDT, Yusuke Suzuki
no flags Details | Formatted Diff | Diff
Patch (8.86 KB, patch)
2016-05-04 02:18 PDT, Yusuke Suzuki
darin: review+
commit-queue: commit-queue-
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Yusuke Suzuki 2016-04-29 11:50:41 PDT
...
Comment 1 Yusuke Suzuki 2016-04-29 13:09:12 PDT
Created attachment 277729 [details]
Patch

WIP
Comment 2 Yusuke Suzuki 2016-04-30 13:07:20 PDT
Created attachment 277826 [details]
Patch

WIP
Comment 3 Yusuke Suzuki 2016-05-01 03:18:44 PDT
Created attachment 277853 [details]
Patch
Comment 4 Yusuke Suzuki 2016-05-01 03:19:43 PDT
Benchmark report for SunSpider, LongSpider, Octane, Kraken, and AsmBench on gochiusa.

VMs tested:
"baseline" at /home/yusukesuzuki/dev/WebKit/WebKitBuild/object-master/Release/bin/jsc
"patched" at /home/yusukesuzuki/dev/WebKit/WebKitBuild/object/Release/bin/jsc

Collected 30 samples per benchmark/VM, with 30 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                  patched                                      
SunSpider:
   3d-cube                                    7.0780+-0.4882     ?      7.4593+-0.5093        ? might be 1.0539x slower
   3d-morph                                  11.7291+-0.2485     !     12.8445+-0.7368        ! definitely 1.0951x slower
   3d-raytrace                                7.9566+-0.5945     ?      8.7987+-0.5540        ? might be 1.1058x slower
   access-binary-trees                        3.6832+-0.4090     ?      3.8699+-0.3861        ? might be 1.0507x slower
   access-fannkuch                           10.8352+-0.7072     ?     11.0705+-1.0246        ? might be 1.0217x slower
   access-nbody                               3.7779+-0.2576     ?      3.8248+-0.2136        ? might be 1.0124x slower
   access-nsieve                              5.1174+-0.2771     ?      5.1645+-0.2526        ?
   bitops-3bit-bits-in-byte                   1.7781+-0.1065            1.7441+-0.0928          might be 1.0195x faster
   bitops-bits-in-byte                        4.3868+-0.1935     !      4.9607+-0.2678        ! definitely 1.1308x slower
   bitops-bitwise-and                         2.6223+-0.0433            2.5883+-0.0272          might be 1.0131x faster
   bitops-nsieve-bits                         5.1937+-0.3084            5.0919+-0.3189          might be 1.0200x faster
   controlflow-recursive                      4.9154+-0.5031     ?      5.3039+-0.5297        ? might be 1.0790x slower
   crypto-aes                                 6.0123+-0.3129     ?      6.0182+-0.3364        ?
   crypto-md5                                 4.2847+-0.3015            4.2529+-0.3019        
   crypto-sha1                                4.4608+-0.2935            4.3627+-0.3085          might be 1.0225x faster
   date-format-tofte                          9.1397+-0.2431            8.9520+-0.3253          might be 1.0210x faster
   date-format-xparb                          6.7445+-0.2755            6.6434+-0.2665          might be 1.0152x faster
   math-cordic                                4.7486+-0.4391            4.6047+-0.2874          might be 1.0312x faster
   math-partial-sums                          7.5267+-0.2776            7.3751+-0.0731          might be 1.0206x faster
   math-spectral-norm                         2.9655+-0.1263            2.8873+-0.1467          might be 1.0271x faster
   regexp-dna                                 8.2214+-0.1059            8.1479+-0.0973        
   string-base64                              5.9525+-0.2395            5.8758+-0.1909          might be 1.0131x faster
   string-fasta                               8.5897+-0.3428            8.3715+-0.3271          might be 1.0261x faster
   string-tagcloud                           10.8102+-0.4935           10.6128+-0.4224          might be 1.0186x faster
   string-unpack-code                        25.3731+-0.4877           24.9826+-0.5588          might be 1.0156x faster
   string-validate-input                      6.3271+-0.3427            5.8843+-0.2517          might be 1.0752x faster

   <arithmetic>                               6.9319+-0.0771     ?      6.9882+-0.0819        ? might be 1.0081x slower

                                                 baseline                  patched                                      
LongSpider:
   3d-cube                                 1010.0468+-5.5427         1004.5880+-5.8927        
   3d-morph                                2009.8278+-29.4981        1984.5882+-23.0569         might be 1.0127x faster
   3d-raytrace                              606.2260+-5.4466          603.7848+-4.0360        
   access-binary-trees                     1174.7311+-6.7176         1171.8306+-9.9332        
   access-fannkuch                          307.0319+-2.3548     ?    311.7192+-7.3288        ? might be 1.0153x slower
   access-nbody                             561.6524+-9.3520     ?    568.7933+-14.1203       ? might be 1.0127x slower
   access-nsieve                            552.8444+-2.8644          551.8218+-5.2064        
   bitops-3bit-bits-in-byte                  41.8573+-0.2185     ?     42.6382+-0.9728        ? might be 1.0187x slower
   bitops-bits-in-byte                      121.5111+-1.5495     ?    121.7077+-1.2895        ?
   bitops-nsieve-bits                       548.3782+-6.8606     ?    552.5603+-18.4544       ?
   controlflow-recursive                    573.9282+-12.6996    ?    592.8439+-23.4835       ? might be 1.0330x slower
   crypto-aes                               698.1801+-4.8701          694.4906+-4.8370        
   crypto-md5                               624.7400+-5.3424     ?    628.1777+-6.9555        ?
   crypto-sha1                              796.4941+-6.3839     ?    804.0988+-8.8939        ?
   date-format-tofte                        664.3127+-6.9878          656.6400+-6.7600          might be 1.0117x faster
   date-format-xparb                        919.7289+-11.0891    ?    920.0957+-9.1094        ?
   hash-map                                 199.5611+-4.3170          197.3090+-2.4534          might be 1.0114x faster
   math-cordic                              552.8346+-15.4105    ?    566.5533+-19.7098       ? might be 1.0248x slower
   math-partial-sums                        697.0691+-5.4209     ?    699.0885+-8.9138        ?
   math-spectral-norm                       506.2371+-11.5893         500.1818+-4.3792          might be 1.0121x faster
   string-base64                            404.1467+-3.8537     ^    395.2100+-3.3201        ^ definitely 1.0226x faster
   string-fasta                             453.4949+-2.7542          451.0411+-3.6134        
   string-tagcloud                          213.6997+-4.4549          212.7069+-4.0665        

   <geometric>                              488.7060+-1.5905     ?    489.1775+-1.1514        ? might be 1.0010x slower

                                                 baseline                  patched                                      
Octane:
   encrypt                                   0.20123+-0.00136    ?     0.20170+-0.00146       ?
   decrypt                                   3.61964+-0.11248          3.58714+-0.06366       
   deltablue                        x2       0.15722+-0.00161    ?     0.15813+-0.00215       ?
   earley                                    0.37681+-0.00383          0.37640+-0.00423       
   boyer                                     6.96862+-0.13749    ?     6.98043+-0.13733       ?
   navier-stokes                    x2       5.28562+-0.07334          5.26902+-0.04474       
   raytrace                         x2       0.97015+-0.00706          0.96095+-0.00479       
   richards                         x2       0.10371+-0.00161          0.10238+-0.00130         might be 1.0130x faster
   splay                            x2       0.56945+-0.00402          0.56312+-0.00477         might be 1.0112x faster
   regexp                           x2      22.07594+-0.26047    ?    22.23715+-0.30449       ?
   pdfjs                            x2      49.93424+-0.63966         49.74279+-0.56121       
   mandreel                         x2      65.44719+-1.68301         64.51909+-1.64149         might be 1.0144x faster
   gbemu                            x2      33.50405+-0.43000    ?    33.70243+-0.47282       ?
   closure                                   0.61296+-0.00276    ?     0.62055+-0.00860       ? might be 1.0124x slower
   jquery                                    8.00221+-0.02311    ?     8.05615+-0.04407       ?
   box2d                            x2      12.85601+-0.17990    ?    12.87004+-0.18593       ?
   zlib                             x2     477.20225+-9.43557    ?   481.57589+-11.08216      ?
   typescript                       x2     881.69207+-21.69277       859.80911+-17.61943        might be 1.0255x faster

   <geometric>                               6.58183+-0.02381          6.56284+-0.02431         might be 1.0029x faster

                                                 baseline                  patched                                      
Kraken:
   ai-astar                                  110.673+-1.156      ?     110.769+-0.686         ?
   audio-beat-detection                       47.085+-3.174      ?      49.657+-3.392         ? might be 1.0546x slower
   audio-dft                                 133.397+-2.013            132.624+-1.319         
   audio-fft                                  32.745+-0.626      ?      32.922+-0.544         ?
   audio-oscillator                           56.310+-0.405      ?      57.146+-0.991         ? might be 1.0148x slower
   imaging-darkroom                          100.230+-2.712      ?     100.345+-3.036         ?
   imaging-desaturate                         70.354+-3.469      ?      77.358+-6.132         ? might be 1.0996x slower
   imaging-gaussian-blur                      91.799+-7.178      ?      94.225+-9.188         ? might be 1.0264x slower
   json-parse-financial                       44.532+-0.374      ?      45.255+-0.423         ? might be 1.0162x slower
   json-stringify-tinderbox                   27.476+-1.628      ?      27.911+-1.462         ? might be 1.0158x slower
   stanford-crypto-aes                        46.628+-0.514      ?      46.860+-0.625         ?
   stanford-crypto-ccm                        44.824+-2.257      ?      45.211+-1.946         ?
   stanford-crypto-pbkdf2                    123.259+-1.396            122.623+-1.108         
   stanford-crypto-sha256-iterative           42.054+-0.280      ?      42.841+-1.195         ? might be 1.0187x slower

   <arithmetic>                               69.383+-0.649      ?      70.411+-0.832         ? might be 1.0148x slower

                                                 baseline                  patched                                      
AsmBench:
   bigfib.cpp                               571.3755+-6.5167     ?    573.3660+-9.9790        ?
   container.cpp                           4523.5609+-36.3007        4504.1778+-43.7800       
   dry.c                                    548.5876+-23.0628    ?    561.1783+-28.0978       ? might be 1.0230x slower
   float-mm.c                               877.6862+-18.5380         868.2233+-11.5495         might be 1.0109x faster
   gcc-loops.cpp                           4603.7303+-32.1223        4580.6523+-31.5406       
   hash-map                                 196.0498+-4.0372          195.0628+-1.7737        
   n-body.c                                 852.4695+-7.4820     ?    859.3628+-12.0472       ?
   quicksort.c                              484.3864+-3.0791     ?    487.4724+-5.6072        ?
   towers.c                                 336.3073+-1.6721     ?    341.7262+-8.5704        ? might be 1.0161x slower

   <geometric>                              812.7257+-5.0609     ?    815.2665+-5.6928        ? might be 1.0031x slower

                                                 baseline                  patched                                      
Geomean of preferred means:
   <scaled-result>                           66.0422+-0.1990     ?     66.3583+-0.2784        ? might be 1.0048x slower
Comment 5 Yusuke Suzuki 2016-05-04 02:07:05 PDT
Created attachment 278070 [details]
Patch

rebased
Comment 6 Yusuke Suzuki 2016-05-04 02:09:52 PDT
Created attachment 278071 [details]
Patch

rebased
Comment 7 Yusuke Suzuki 2016-05-04 02:18:39 PDT
Created attachment 278072 [details]
Patch
Comment 8 Yusuke Suzuki 2016-05-04 10:26:27 PDT
Comment on attachment 278072 [details]
Patch

Thanks!
Comment 9 WebKit Commit Bot 2016-05-04 10:27:20 PDT
Comment on attachment 278072 [details]
Patch

Rejecting attachment 278072 [details] from commit-queue.

Failed to run "['/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch', '--status-host=webkit-queues.webkit.org', '--bot-id=webkit-cq-03', 'apply-attachment', '--no-update', '--non-interactive', 278072, '--port=mac']" exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
e/runtime/JSGlobalObject.h
Hunk #1 succeeded at 254 (offset -17 lines).
Hunk #2 succeeded at 501 (offset -22 lines).
patching file Source/JavaScriptCore/runtime/ObjectConstructor.cpp
patching file Source/JavaScriptCore/runtime/ObjectConstructor.h
patching file Source/JavaScriptCore/tests/stress/object-constructor-should-be-new-target-aware.js

Failed to run "[u'/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply', '--force', '--reviewer', u'Darin Adler']" exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/1266871
Comment 10 Yusuke Suzuki 2016-05-04 10:40:12 PDT
Committed r200421: <http://trac.webkit.org/changeset/200421>