Bug 114909

Summary: fourthTier: It should be possible to query WatchpointSets, and add Watchpoints, even if the compiler is running in another thread
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, ggaren, mark.lam, mhahnenberg, msaboff, oliver, sam
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Bug Depends on:    
Bug Blocks: 112839    
Attachments:
Description Flags
the patch oliver: review+

Description Filip Pizlo 2013-04-21 00:53:00 PDT
Patch forthcoming.
Comment 1 Filip Pizlo 2013-04-21 01:10:02 PDT
Created attachment 198958 [details]
the patch

Will run a few more tests before setting r?.
Comment 2 Filip Pizlo 2013-04-21 09:02:22 PDT
It passes tests and performance is neutral:


Benchmark report for SunSpider, V8Spider, Octane, Kraken, and JSRegress on oldmac (MacPro4,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/fourthTier/OpenSource/WebKitBuild/Release/jsc (r148801)
"AsyncWatchpoint" at /Volumes/Data/fromMiniMe/fourthTier/primary/OpenSource/WebKitBuild/Release/jsc (r148817)

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              AsyncWatchpoint                                  
SunSpider:
   3d-cube                                         9.4624+-0.1453            9.4223+-0.1742        
   3d-morph                                        8.7642+-0.1370     ?      8.7911+-0.1146        ?
   3d-raytrace                                    10.4555+-0.1426     ?     10.4793+-0.1526        ?
   access-binary-trees                             1.8919+-0.0087     ?      1.8930+-0.0072        ?
   access-fannkuch                                 7.7708+-0.1319     ?      7.8142+-0.1211        ?
   access-nbody                                    4.6838+-0.0331            4.6431+-0.0645        
   access-nsieve                                   4.9935+-0.0455            4.9643+-0.0546        
   bitops-3bit-bits-in-byte                        1.8463+-0.0107     ?      1.8471+-0.0105        ?
   bitops-bits-in-byte                             7.1302+-0.0857            7.1246+-0.0887        
   bitops-bitwise-and                              2.7807+-0.0796     ?      2.8067+-0.0751        ?
   bitops-nsieve-bits                              4.7958+-0.0096            4.7749+-0.0761        
   controlflow-recursive                           3.1401+-0.0471            3.1401+-0.0455        
   crypto-aes                                      7.8139+-0.1309     ?      7.8883+-0.1089        ?
   crypto-md5                                      4.2853+-0.0540            4.2595+-0.0581        
   crypto-sha1                                     3.3175+-0.0198            3.3062+-0.0138        
   date-format-tofte                              15.1240+-0.1486     ?     15.4249+-0.2291        ? might be 1.0199x slower
   date-format-xparb                               9.4658+-0.1562     ?      9.5160+-0.2004        ?
   math-cordic                                     4.0511+-0.0079     ?      4.0637+-0.0102        ?
   math-partial-sums                              12.4888+-0.1076     ?     12.5577+-0.0958        ?
   math-spectral-norm                              3.1695+-0.0113     ?      3.1724+-0.0109        ?
   regexp-dna                                     12.7374+-0.1913           12.6778+-0.1800        
   string-base64                                   5.1015+-0.0663     ?      5.1196+-0.0714        ?
   string-fasta                                   10.8545+-0.1200           10.7632+-0.0887        
   string-tagcloud                                14.6706+-0.4138           14.3995+-0.2115          might be 1.0188x faster
   string-unpack-code                             28.0774+-0.1330     ?     28.2238+-0.1609        ?
   string-validate-input                           7.4179+-0.1888            7.2902+-0.1626          might be 1.0175x faster

   <arithmetic> *                                  7.9342+-0.0603     ?      7.9371+-0.0676        ? might be 1.0004x slower
   <geometric>                                     6.3961+-0.0393            6.3941+-0.0440          might be 1.0003x faster
   <harmonic>                                      5.1598+-0.0226            5.1586+-0.0235          might be 1.0002x faster

                                                     TipOfTree              AsyncWatchpoint                                  
V8Spider:
   crypto                                         87.2282+-0.1259     ?     87.3277+-0.2366        ?
   deltablue                                     132.0973+-1.1899          132.0719+-0.5306        
   earley-boyer                                   83.3092+-0.4370     ?     83.3627+-0.2017        ?
   raytrace                                       62.3065+-0.1704     ^     61.8550+-0.1119        ^ definitely 1.0073x faster
   regexp                                        101.1329+-0.2940     ?    101.7167+-0.4171        ?
   richards                                      118.9968+-0.6657     ?    119.0017+-0.5574        ?
   splay                                          48.7871+-0.2888           48.5905+-0.2400        

   <arithmetic>                                   90.5511+-0.2803     ?     90.5609+-0.1667        ? might be 1.0001x slower
   <geometric> *                                  86.1118+-0.2183           86.0645+-0.1535          might be 1.0005x faster
   <harmonic>                                     81.5090+-0.1909           81.3934+-0.1503          might be 1.0014x faster

                                                     TipOfTree              AsyncWatchpoint                                  
Octane and V8v7:
   encrypt                                        0.46978+-0.00087          0.46953+-0.00061       
   decrypt                                        8.67871+-0.02157    ?     8.68315+-0.01952       ?
   deltablue                             x2       0.60710+-0.00076    !     0.61180+-0.00224       ! definitely 1.0077x slower
   earley                                         0.92465+-0.00268    ^     0.91257+-0.00510       ^ definitely 1.0132x faster
   boyer                                         12.78433+-0.04596         12.76024+-0.03643       
   raytrace                              x2       4.43748+-0.01728    ?     4.45391+-0.01871       ?
   regexp                                x2      32.28146+-0.12836    ?    32.38265+-0.14827       ?
   richards                              x2       0.30771+-0.00050    !     0.30907+-0.00067       ! definitely 1.0044x slower
   splay                                 x2       0.64992+-0.02267          0.64487+-0.02560       
   navier-stokes                         x2      10.79971+-0.01594    ?    10.81099+-0.01362       ?
   closure                                        0.30974+-0.03575          0.30765+-0.03478       
   jquery                                         4.39805+-0.55037          4.39443+-0.54967       
   gbemu                                 x2     250.46442+-17.54922   ?   251.17726+-16.61362      ?
   box2d                                 x2      31.89373+-0.09990         31.86387+-0.08341       

V8v7:
   <arithmetic>                                   7.56402+-0.01823    ?     7.57825+-0.02143       ? might be 1.0019x slower
   <geometric> *                                  2.45101+-0.01118    ?     2.45232+-0.01260       ? might be 1.0005x slower
   <harmonic>                                     0.94234+-0.00594    ?     0.94310+-0.00644       ? might be 1.0008x slower

Octane including V8v7:
   <arithmetic>                                  31.38402+-1.61235    ?    31.45620+-1.52198       ? might be 1.0023x slower
   <geometric> *                                  4.39824+-0.06722    ?     4.39947+-0.06493       ? might be 1.0003x slower
   <harmonic>                                     1.06842+-0.01895          1.06809+-0.01880         might be 1.0003x faster

                                                     TipOfTree              AsyncWatchpoint                                  
Kraken:
   ai-astar                                       493.774+-0.682      ?     494.101+-2.040         ?
   audio-beat-detection                           245.283+-1.078            244.899+-1.546         
   audio-dft                                      324.144+-4.368            321.877+-1.785         
   audio-fft                                      143.387+-0.327            143.356+-0.323         
   audio-oscillator                               235.257+-1.053            234.735+-0.939         
   imaging-darkroom                               293.383+-1.008            293.314+-1.505         
   imaging-desaturate                             160.295+-0.181      ?     160.326+-0.281         ?
   imaging-gaussian-blur                          397.754+-0.379            397.596+-0.222         
   json-parse-financial                            81.910+-0.407      ?      82.256+-0.232         ?
   json-stringify-tinderbox                       101.296+-0.506      ?     103.138+-2.279         ? might be 1.0182x slower
   stanford-crypto-aes                            239.862+-3.231            237.746+-2.138         
   stanford-crypto-ccm                            111.108+-0.233      !     112.205+-0.622         ! definitely 1.0099x slower
   stanford-crypto-pbkdf2                         276.695+-3.548            275.209+-1.518         
   stanford-crypto-sha256-iterative               115.207+-0.603      !     117.162+-0.527         ! definitely 1.0170x slower

   <arithmetic> *                                 229.954+-0.610            229.851+-0.466           might be 1.0004x faster
   <geometric>                                    200.902+-0.473      ?     201.243+-0.458         ? might be 1.0017x slower
   <harmonic>                                     174.731+-0.332      !     175.518+-0.434         ! definitely 1.0045x slower

                                                     TipOfTree              AsyncWatchpoint                                  
JSRegress:
   adapt-to-double-divide                         22.5302+-0.1057     ?     22.5787+-0.1234        ?
   aliased-arguments-getbyval                      0.9189+-0.0106     ?      0.9470+-0.0410        ? might be 1.0305x slower
   allocate-big-object                             2.5424+-0.0316     ?      2.5571+-0.0377        ?
   arity-mismatch-inlining                         0.7512+-0.0344     ?      0.7817+-0.0119        ? might be 1.0407x slower
   array-access-polymorphic-structure              7.1277+-0.0784            7.1149+-0.0945        
   array-with-double-add                           5.8235+-0.0965            5.8178+-0.0903        
   array-with-double-increment                     4.1918+-0.0913            4.1024+-0.0226          might be 1.0218x faster
   array-with-double-mul-add                       7.0358+-0.0976            7.0291+-0.0911        
   array-with-double-sum                           7.8648+-0.0929     ?      7.9663+-0.1044        ? might be 1.0129x slower
   array-with-int32-add-sub                       10.4483+-0.0938     ?     10.4626+-0.1130        ?
   array-with-int32-or-double-sum                  7.9779+-0.1283     ?      8.0149+-0.1162        ?
   big-int-mul                                     4.9039+-0.0782     ?      4.9555+-0.0592        ? might be 1.0105x slower
   boolean-test                                    4.4169+-0.0567     ?      4.4412+-0.0657        ?
   cast-int-to-double                             14.0205+-0.1479           13.9701+-0.1233        
   cell-argument                                  14.5516+-0.1415           14.4529+-0.1227        
   cfg-simplify                                    3.9043+-0.0610     ?      3.9722+-0.0638        ? might be 1.0174x slower
   cmpeq-obj-to-obj-other                         11.5072+-0.1087           11.4853+-0.0747        
   constant-test                                   8.3773+-0.1539     ?      8.5387+-0.1066        ? might be 1.0193x slower
   direct-arguments-getbyval                       0.8446+-0.0110     ?      0.8449+-0.0105        ?
   double-pollution-getbyval                      10.8089+-0.1330           10.7741+-0.0976        
   double-pollution-putbyoffset                    5.0089+-0.0620     ?      5.0534+-0.1314        ?
   empty-string-plus-int                          11.0564+-0.1943     ?     11.1526+-0.2270        ?
   external-arguments-getbyval                     2.2160+-0.0307            2.2115+-0.0302        
   external-arguments-putbyval                     3.3107+-0.0158     !      3.7802+-0.0550        ! definitely 1.1418x slower
   Float32Array-matrix-mult                       14.2549+-0.0713     ^     14.1156+-0.0482        ^ definitely 1.0099x faster
   fold-double-to-int                             22.0906+-0.1712     ?     22.0965+-0.1658        ?
   function-dot-apply                              3.2028+-0.0164            3.1925+-0.0103        
   function-test                                   4.9566+-0.0856     ?      5.0777+-0.0738        ? might be 1.0244x slower
   get-by-id-chain-from-try-block                  7.3224+-0.0948     ?      7.3895+-0.1015        ?
   HashMap-put-get-iterate-keys                   96.7845+-0.9027           96.3328+-0.4724        
   HashMap-put-get-iterate                        98.4063+-0.7154           97.7445+-0.3230        
   HashMap-string-put-get-iterate                 74.7816+-0.6955     ?     74.9352+-0.3704        ?
   indexed-properties-in-objects                   4.5315+-0.0575     ?      4.5745+-0.0197        ?
   inline-arguments-access                         1.2596+-0.0095     ?      1.2618+-0.0094        ?
   inline-arguments-local-escape                  23.2648+-0.1731     ?     23.3715+-0.1577        ?
   inline-get-scoped-var                           6.5789+-0.1027     ?      6.5924+-0.1007        ?
   inlined-put-by-id-transition                   16.4556+-0.2793           16.4019+-0.3461        
   int-or-other-abs-then-get-by-val                8.8608+-0.1154     ?      8.8766+-0.0923        ?
   int-or-other-abs-zero-then-get-by-val          37.2535+-0.2033           37.0774+-0.0990        
   int-or-other-add-then-get-by-val               10.2087+-0.1034           10.1830+-0.0814        
   int-or-other-add                               10.4865+-0.1052     ?     10.5036+-0.1010        ?
   int-or-other-div-then-get-by-val                7.9775+-0.1145            7.9276+-0.0972        
   int-or-other-max-then-get-by-val               10.0269+-0.1688            9.9725+-0.2601        
   int-or-other-min-then-get-by-val                8.1689+-0.1159     ?      8.2354+-0.1030        ?
   int-or-other-mod-then-get-by-val                8.0470+-0.0967     ?      8.1255+-0.1014        ?
   int-or-other-mul-then-get-by-val                7.2257+-0.1003            7.1286+-0.0867          might be 1.0136x faster
   int-or-other-neg-then-get-by-val                8.0812+-0.1071     ?      8.1594+-0.0810        ?
   int-or-other-neg-zero-then-get-by-val          36.4790+-0.1145     ?     36.5684+-0.1985        ?
   int-or-other-sub-then-get-by-val               10.2469+-0.1167           10.2370+-0.1108        
   int-or-other-sub                                8.3189+-0.1053            8.2137+-0.1018          might be 1.0128x faster
   int-overflow-local                             12.9351+-0.1322     ?     12.9373+-0.1206        ?
   Int16Array-bubble-sort                         49.3897+-0.1907     ?     50.1629+-0.8762        ? might be 1.0157x slower
   Int16Array-load-int-mul                         1.8925+-0.0055     ?      1.8974+-0.0068        ?
   Int8Array-load                                  4.8892+-0.0107            4.8803+-0.0129        
   integer-divide                                 15.0988+-0.0764     ?     15.2006+-0.1232        ?
   integer-modulo                                  2.1066+-0.0174     ?      2.1426+-0.0275        ? might be 1.0171x slower
   make-indexed-storage                            3.9147+-0.0429            3.9077+-0.0390        
   method-on-number                               23.9023+-0.5875     ?     24.7478+-0.4397        ? might be 1.0354x slower
   nested-function-parsing-random                382.7736+-13.1703         381.5584+-12.9494       
   nested-function-parsing                        47.6313+-1.1389     ?     47.7922+-1.1046        ?
   new-array-buffer-dead                           3.6326+-0.0129     ?      3.6368+-0.0135        ?
   new-array-buffer-push                          10.4611+-0.1650           10.4217+-0.1559        
   new-array-dead                                 28.3557+-0.1237     ?     28.3615+-0.1313        ?
   new-array-push                                  6.9400+-0.0787     ?      6.9927+-0.1202        ?
   number-test                                     4.3232+-0.0569     ?      4.3364+-0.0525        ?
   object-closure-call                             8.3630+-0.0943            8.2623+-0.0888          might be 1.0122x faster
   object-test                                     4.9699+-0.1383            4.9302+-0.0736        
   poly-stricteq                                  92.9717+-1.5753           91.7579+-1.3271          might be 1.0132x faster
   polymorphic-structure                          20.0726+-0.1116     ?     20.1121+-0.1343        ?
   polyvariant-monomorphic-get-by-id              12.4976+-0.0943     ?     12.5325+-0.1038        ?
   rare-osr-exit-on-local                         20.6530+-0.1318           20.5966+-0.1113        
   register-pressure-from-osr                     31.5627+-0.0896           31.5355+-0.1076        
   simple-activation-demo                         34.3696+-0.0929     ?     34.5448+-0.1372        ?
   slow-array-profile-convergence                  4.3020+-0.0081     ?      4.3051+-0.0120        ?
   slow-convergence                                3.8152+-0.0065     ?      3.8180+-0.0086        ?
   sparse-conditional                              1.3317+-0.0109     ?      1.3337+-0.0115        ?
   splice-to-remove                               50.8382+-0.1646           50.6242+-0.4726        
   string-concat-object                            2.7502+-0.0338            2.7253+-0.0427        
   string-concat-pair-object                       2.7024+-0.0637            2.6427+-0.0540          might be 1.0226x faster
   string-concat-pair-simple                      17.2599+-0.2702           17.0091+-0.2748          might be 1.0147x faster
   string-concat-simple                           17.2897+-0.3134     ?     17.3113+-0.2563        ?
   string-cons-repeat                             10.1218+-0.0308     ?     10.1488+-0.0278        ?
   string-cons-tower                              10.9965+-0.0286           10.9741+-0.0222        
   string-equality                               104.6941+-0.1362     ?    105.1322+-0.3684        ?
   string-hash                                     2.6567+-0.0076     ?      2.6619+-0.0077        ?
   string-repeat-arith                            50.4775+-3.2931           48.4711+-0.6091          might be 1.0414x faster
   string-sub                                     91.5338+-0.4826     ?     91.5724+-0.4627        ?
   string-test                                     4.2714+-0.0240     ?      4.3334+-0.0571        ? might be 1.0145x slower
   structure-hoist-over-transitions                3.2805+-0.0247            3.2740+-0.0270        
   tear-off-arguments-simple                       1.7914+-0.0110     ?      1.8009+-0.0121        ?
   tear-off-arguments                              3.3943+-0.0093     ?      3.3987+-0.0084        ?
   temporal-structure                             21.1307+-0.3393           20.8991+-0.0782          might be 1.0111x faster
   to-int32-boolean                               30.6167+-0.0895           30.6167+-0.1125        
   undefined-test                                  4.5638+-0.0373     ?      4.5778+-0.0389        ?

   <arithmetic>                                   21.0738+-0.1482           21.0445+-0.1578          might be 1.0014x faster
   <geometric> *                                   9.4486+-0.0290     ?      9.4749+-0.0289        ? might be 1.0028x slower
   <harmonic>                                      5.1933+-0.0259     ?      5.2352+-0.0182        ? might be 1.0081x slower

                                                     TipOfTree              AsyncWatchpoint                                  
All benchmarks:
   <arithmetic>                                   41.2938+-0.3067           41.2787+-0.3169          might be 1.0004x faster
   <geometric>                                    11.4485+-0.0539     ?     11.4681+-0.0555        ? might be 1.0017x slower
   <harmonic>                                      3.7126+-0.0331     ?      3.7244+-0.0332        ? might be 1.0032x slower

                                                     TipOfTree              AsyncWatchpoint                                  
Geomean of preferred means:
   <scaled-result>                                23.0651+-0.1274     ?     23.0763+-0.1305        ? might be 1.0005x slower
Comment 3 Filip Pizlo 2013-04-21 10:10:50 PDT
Landed in http://trac.webkit.org/changeset/148836