RESOLVED FIXED 114909
fourthTier: It should be possible to query WatchpointSets, and add Watchpoints, even if the compiler is running in another thread
https://bugs.webkit.org/show_bug.cgi?id=114909
Summary fourthTier: It should be possible to query WatchpointSets, and add Watchpoint...
Filip Pizlo
Reported 2013-04-21 00:53:00 PDT
Patch forthcoming.
Attachments
the patch (53.95 KB, patch)
2013-04-21 01:10 PDT, Filip Pizlo
oliver: review+
Filip Pizlo
Comment 1 2013-04-21 01:10:02 PDT
Created attachment 198958 [details] the patch Will run a few more tests before setting r?.
Filip Pizlo
Comment 2 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
Filip Pizlo
Comment 3 2013-04-21 10:10:50 PDT
Note You need to log in before you can comment on or make changes to this bug.