Bug 71744 - DFG OSR exit code should be lazily generated
Summary: DFG OSR exit code should be lazily generated
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on: 71746 71787 71861
Blocks:
  Show dependency treegraph
 
Reported: 2011-11-07 16:22 PST by Filip Pizlo
Modified: 2011-11-09 17:09 PST (History)
1 user (show)

See Also:


Attachments
the patch (51.61 KB, patch)
2011-11-09 14:02 PST, Filip Pizlo
webkit-ews: commit-queue-
Details | Formatted Diff | Diff
the patch (56.79 KB, patch)
2011-11-09 15:13 PST, Filip Pizlo
webkit-ews: commit-queue-
Details | Formatted Diff | Diff
the patch (57.06 KB, patch)
2011-11-09 15:29 PST, Filip Pizlo
barraclough: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Filip Pizlo 2011-11-07 16:22:11 PST
For now, this is an umbrella bug.
Comment 1 Filip Pizlo 2011-11-07 16:23:28 PST
<rdar://problem/10196854>
Comment 2 Filip Pizlo 2011-11-09 14:02:25 PST
Created attachment 114364 [details]
the patch

It's starting to pass tests and such.
Comment 3 WebKit Review Bot 2011-11-09 14:05:30 PST
Attachment 114364 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/ChangeLog', u'Source..." exit_code: 1

Source/JavaScriptCore/assembler/X86Assembler.h:1285:  jmp_m is incorrectly named. Don't use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/dfg/DFGCorrectableJumpPoint.h:85:  The parameter name "codeBlock" adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 4 Filip Pizlo 2011-11-09 14:44:32 PST
As expected, this is a win.



Benchmark report for SunSpider, V8, and Kraken on nitroflex.local (MacBookPro8,2).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r99757)
"LazyOSR" at /Volumes/Data/pizlo/octonary/OpenSource/WebKitBuild/Release/jsc (r99757)

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                LazyOSR                                     
SunSpider:
   3d-cube                                7.4039+-0.2357          7.2712+-0.1936         might be 1.0182x faster
   3d-morph                               7.5516+-0.1231    ?     7.6506+-0.1527       ? might be 1.0131x slower
   3d-raytrace                            7.8940+-0.2523          7.5361+-0.1823         might be 1.0475x faster
   access-binary-trees                    1.6714+-0.0507          1.6292+-0.0871         might be 1.0259x faster
   access-fannkuch                        6.3974+-0.0695    ?     6.4574+-0.1132       ?
   access-nbody                           3.7455+-0.0874    ?     3.7595+-0.1336       ?
   access-nsieve                          2.5637+-0.0989    ?     2.6492+-0.0942       ? might be 1.0334x slower
   bitops-3bit-bits-in-byte               1.3409+-0.0080    ^     1.3064+-0.0147       ^ definitely 1.0264x faster
   bitops-bits-in-byte                    2.4244+-0.0562          2.4159+-0.0480       
   bitops-bitwise-and                     3.2958+-0.0671          3.2085+-0.0563         might be 1.0272x faster
   bitops-nsieve-bits                     5.4042+-0.1188    ?     5.6059+-0.5231       ? might be 1.0373x slower
   controlflow-recursive                  2.1181+-0.0356    ?     2.1296+-0.0512       ?
   crypto-aes                             8.1533+-0.2277    ^     7.5888+-0.2208       ^ definitely 1.0744x faster
   crypto-md5                             2.6565+-0.0620          2.6105+-0.0666         might be 1.0176x faster
   crypto-sha1                            2.4210+-0.0481    ?     2.4340+-0.0748       ?
   date-format-tofte                     10.2298+-0.2496          9.9921+-0.2409         might be 1.0238x faster
   date-format-xparb                      9.5717+-0.3785          9.2057+-0.1458         might be 1.0398x faster
   math-cordic                            6.5370+-0.1350    ?     6.6721+-0.0984       ? might be 1.0207x slower
   math-partial-sums                      7.6998+-0.1983          7.6932+-0.1252       
   math-spectral-norm                     2.6174+-0.0768          2.5152+-0.0752         might be 1.0406x faster
   regexp-dna                            11.7320+-0.2553         11.7292+-0.1894       
   string-base64                          4.1655+-0.1884          4.0047+-0.0911         might be 1.0402x faster
   string-fasta                           6.5371+-0.2103          6.3637+-0.1357         might be 1.0272x faster
   string-tagcloud                       12.0853+-0.2860    ?    12.3296+-0.3158       ? might be 1.0202x slower
   string-unpack-code                    20.9880+-0.5240         20.7760+-0.2546         might be 1.0102x faster
   string-validate-input                  5.3511+-0.1325    ?     5.3943+-0.1754       ?

   <arithmetic> *                         6.2522+-0.0350    ^     6.1896+-0.0263       ^ definitely 1.0101x faster
   <geometric>                            5.0135+-0.0284    ^     4.9623+-0.0219       ^ definitely 1.0103x faster
   <harmonic>                             3.9951+-0.0313          3.9487+-0.0195         might be 1.0118x faster

                                            TipOfTree                LazyOSR                                     
V8:
   crypto                                73.9210+-0.8420         73.6162+-0.7927       
   deltablue                            166.8321+-1.1465    ^   162.1572+-0.7648       ^ definitely 1.0288x faster
   earley-boyer                          88.1840+-1.1171    ?    89.3607+-0.8217       ? might be 1.0133x slower
   raytrace                              63.7292+-0.8924    ^    60.4194+-0.6861       ^ definitely 1.0548x faster
   regexp                               106.5850+-0.7235        105.9525+-0.7361       
   richards                             126.0230+-0.7675        125.5216+-1.3910       
   splay                                 74.5909+-1.8894         74.3575+-1.3547       

   <arithmetic>                          99.9808+-0.3554    ^    98.7693+-0.3677       ^ definitely 1.0123x faster
   <geometric> *                         94.9067+-0.4588    ^    93.7567+-0.3445       ^ definitely 1.0123x faster
   <harmonic>                            90.5483+-0.5460    ^    89.3230+-0.3464       ^ definitely 1.0137x faster

                                            TipOfTree                LazyOSR                                     
Kraken:
   ai-astar                             493.4284+-2.5022    ?   496.5512+-4.1676       ?
   audio-beat-detection                 191.1934+-1.7556    ?   192.5436+-2.1138       ?
   audio-dft                            274.8294+-4.9026    ?   284.7294+-11.4481      ? might be 1.0360x slower
   audio-fft                            126.3960+-0.9793        125.4717+-1.4082       
   audio-oscillator                     255.5759+-2.8552        251.8229+-1.1014         might be 1.0149x faster
   imaging-darkroom                     308.8041+-5.8610        305.0695+-5.8926         might be 1.0122x faster
   imaging-desaturate                   227.0093+-1.4694    ?   228.5401+-2.2932       ?
   imaging-gaussian-blur                552.9345+-1.6357    !   559.1411+-3.6287       ! definitely 1.0112x slower
   json-parse-financial                  57.4925+-0.4791    ?    57.9051+-0.5979       ?
   json-stringify-tinderbox              70.9923+-1.2122         69.6746+-0.7876         might be 1.0189x faster
   stanford-crypto-aes                   96.1689+-0.4846    ?    97.5074+-1.4020       ? might be 1.0139x slower
   stanford-crypto-ccm                  101.0021+-0.9532    ?   101.7126+-0.7810       ?
   stanford-crypto-pbkdf2               197.1552+-2.7374        194.6595+-2.0428         might be 1.0128x faster
   stanford-crypto-sha256-iterative      81.2450+-0.5573    ?    81.9975+-0.7264       ?

   <arithmetic> *                       216.7305+-0.9645    ?   217.6661+-1.1812       ?
   <geometric>                          172.4557+-0.7543    ?   172.9061+-0.7622       ?
   <harmonic>                           138.1289+-0.5490    ?   138.3680+-0.5031       ?

                                            TipOfTree                LazyOSR                                     
All benchmarks:
   <arithmetic>                          82.9074+-0.2807    ?    82.9711+-0.3648       ?
   <geometric>                           22.2865+-0.0826         22.1373+-0.0688       
   <harmonic>                             7.0289+-0.0540          6.9485+-0.0334         might be 1.0116x faster

                                            TipOfTree                LazyOSR                                     
Geomean of preferred means:
   <scaled-result>                       50.4747+-0.1371    ^    50.1739+-0.1420       ^ definitely 1.0060x faster
Comment 5 Early Warning System Bot 2011-11-09 14:46:25 PST
Comment on attachment 114364 [details]
the patch

Attachment 114364 [details] did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10404087
Comment 6 Filip Pizlo 2011-11-09 14:57:22 PST
Confirmed results from another machine…


Benchmark report for SunSpider, V8, and Kraken on oldmac.local (MacPro4,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r99757)
"LazyOSR" at /Volumes/Data/pizlo/octonary/OpenSource/WebKitBuild/Release/jsc (r99757)

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                LazyOSR                                     
SunSpider:
   3d-cube                                9.3118+-0.0392    ^     9.1952+-0.0456       ^ definitely 1.0127x faster
   3d-morph                              10.2346+-0.1446         10.0995+-0.0314         might be 1.0134x faster
   3d-raytrace                            9.8547+-0.0569    ^     9.6235+-0.0570       ^ definitely 1.0240x faster
   access-binary-trees                    2.0201+-0.0106    ^     1.9793+-0.0091       ^ definitely 1.0206x faster
   access-fannkuch                        9.4425+-0.0129    ^     9.3486+-0.0238       ^ definitely 1.0100x faster
   access-nbody                           5.4399+-0.0059    ^     5.2808+-0.0128       ^ definitely 1.0301x faster
   access-nsieve                          3.7853+-0.0104          3.7724+-0.0066       
   bitops-3bit-bits-in-byte               1.5597+-0.0256    ?     1.5895+-0.0286       ? might be 1.0191x slower
   bitops-bits-in-byte                    5.9901+-0.0060    !     6.1675+-0.0336       ! definitely 1.0296x slower
   bitops-bitwise-and                     3.9995+-0.0069          3.9900+-0.0035       
   bitops-nsieve-bits                     6.9906+-0.1455          6.9032+-0.0840         might be 1.0127x faster
   controlflow-recursive                  2.8440+-0.0394    ?     2.8646+-0.0400       ?
   crypto-aes                             9.7651+-0.0724    ^     9.3164+-0.0642       ^ definitely 1.0482x faster
   crypto-md5                             3.3641+-0.0102    ^     3.3036+-0.0232       ^ definitely 1.0183x faster
   crypto-sha1                            3.1559+-0.0459    ^     3.0009+-0.0202       ^ definitely 1.0516x faster
   date-format-tofte                     13.2834+-0.1559    ^    13.0351+-0.0751       ^ definitely 1.0190x faster
   date-format-xparb                     12.7551+-0.1480    ^    11.5270+-0.0932       ^ definitely 1.1065x faster
   math-cordic                            8.7817+-0.1024    ?     9.1984+-0.3764       ? might be 1.0475x slower
   math-partial-sums                     12.6786+-0.0406    ?    12.7408+-0.0450       ?
   math-spectral-norm                     3.4554+-0.0073    ^     3.3180+-0.0036       ^ definitely 1.0414x faster
   regexp-dna                            16.6182+-0.2134         16.4619+-0.1279       
   string-base64                          5.1089+-0.0440    ?     5.1959+-0.1666       ? might be 1.0170x slower
   string-fasta                           8.6025+-0.0370    ?     8.6237+-0.0115       ?
   string-tagcloud                       16.6954+-0.3969         16.6808+-0.1369       
   string-unpack-code                    28.3529+-0.1188    ?    28.4580+-0.1054       ?
   string-validate-input                  6.8744+-0.0452          6.8162+-0.0482       

   <arithmetic> *                         8.4986+-0.0377    ^     8.4035+-0.0354       ^ definitely 1.0113x faster
   <geometric>                            6.7983+-0.0255    ^     6.7217+-0.0276       ^ definitely 1.0114x faster
   <harmonic>                             5.3340+-0.0232    ^     5.2825+-0.0240       ^ definitely 1.0098x faster

                                            TipOfTree                LazyOSR                                     
V8:
   crypto                                97.6795+-0.2221    ^    96.5580+-0.3200       ^ definitely 1.0116x faster
   deltablue                            220.9538+-1.7913    ^   217.4101+-0.5540       ^ definitely 1.0163x faster
   earley-boyer                         130.9992+-1.5499        130.9933+-0.9396       
   raytrace                              83.5364+-0.2738    ^    79.9438+-0.3360       ^ definitely 1.0449x faster
   regexp                               149.8602+-0.5903    ^   148.8902+-0.2403       ^ definitely 1.0065x faster
   richards                             171.5156+-0.3911    ^   169.7018+-0.1642       ^ definitely 1.0107x faster
   splay                                108.6413+-1.1656        108.4810+-1.4079       

   <arithmetic>                         137.5980+-0.4077    ^   135.9969+-0.2684       ^ definitely 1.0118x faster
   <geometric> *                        130.9221+-0.3932    ^   129.2452+-0.2975       ^ definitely 1.0130x faster
   <harmonic>                           124.8203+-0.3930    ^   122.9570+-0.3130       ^ definitely 1.0152x faster

                                            TipOfTree                LazyOSR                                     
Kraken:
   ai-astar                             896.3311+-0.5234    ?   897.3885+-1.0888       ?
   audio-beat-detection                 255.2577+-1.0697    ?   256.8485+-1.0682       ?
   audio-dft                            315.6081+-2.8663        315.5922+-3.1477       
   audio-fft                            166.7750+-0.1788    ?   167.2417+-0.7851       ?
   audio-oscillator                     354.2109+-1.7018    ^   350.9050+-0.7410       ^ definitely 1.0094x faster
   imaging-darkroom                     404.0041+-5.4998        403.4374+-5.8335       
   imaging-desaturate                   291.5013+-0.2275        291.2697+-0.0755       
   imaging-gaussian-blur                754.4036+-3.5127        751.7568+-1.7243       
   json-parse-financial                  87.4539+-0.1942    ^    86.7862+-0.2007       ^ definitely 1.0077x faster
   json-stringify-tinderbox              96.1448+-0.7505         95.8490+-0.4159       
   stanford-crypto-aes                  139.1117+-0.4486    !   141.0177+-0.8612       ! definitely 1.0137x slower
   stanford-crypto-ccm                  136.7368+-0.8909    ?   137.3705+-0.9244       ?
   stanford-crypto-pbkdf2               287.2300+-2.6423    ^   281.3833+-2.1771       ^ definitely 1.0208x faster
   stanford-crypto-sha256-iterative     117.9661+-0.2010    !   118.8349+-0.3378       ! definitely 1.0074x slower

   <arithmetic> *                       307.3382+-0.6416        306.8344+-0.5357       
   <geometric>                          239.5804+-0.4489        239.3972+-0.3551       
   <harmonic>                           192.9624+-0.2992    ?   192.9762+-0.2265       ?

                                            TipOfTree                LazyOSR                                     
All benchmarks:
   <arithmetic>                         116.7422+-0.2207    ^   116.3011+-0.1469       ^ definitely 1.0038x faster
   <geometric>                           30.5175+-0.0792    ^    30.2615+-0.0699       ^ definitely 1.0085x faster
   <harmonic>                             9.3943+-0.0402    ^     9.3043+-0.0413       ^ definitely 1.0097x faster

                                            TipOfTree                LazyOSR                                     
Geomean of preferred means:
   <scaled-result>                       69.9290+-0.1705    ^    69.3302+-0.1019       ^ definitely 1.0086x faster
Comment 7 Filip Pizlo 2011-11-09 15:13:10 PST
Created attachment 114374 [details]
the patch

It works and it's ready for review.
Comment 8 WebKit Review Bot 2011-11-09 15:15:34 PST
Attachment 114374 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/CMakeListsEfl.txt', ..." exit_code: 1

Source/JavaScriptCore/assembler/X86Assembler.h:1285:  jmp_m is incorrectly named. Don't use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 9 Early Warning System Bot 2011-11-09 15:26:29 PST
Comment on attachment 114374 [details]
the patch

Attachment 114374 [details] did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10401098
Comment 10 Filip Pizlo 2011-11-09 15:29:31 PST
Created attachment 114378 [details]
the patch

Trying to fix Qt and 32_64.
Comment 11 WebKit Review Bot 2011-11-09 15:31:32 PST
Attachment 114378 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/CMakeListsEfl.txt', ..." exit_code: 1

Source/JavaScriptCore/assembler/X86Assembler.h:1285:  jmp_m is incorrectly named. Don't use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 12 Gavin Barraclough 2011-11-09 16:51:16 PST
Comment on attachment 114378 [details]
the patch

r+ with comments in person.
Comment 13 Filip Pizlo 2011-11-09 17:09:32 PST
Landed in http://trac.webkit.org/changeset/99787