<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>158619</bug_id>
          
          <creation_ts>2016-06-10 10:00:33 -0700</creation_ts>
          <short_desc>[JSC] Inline JSC::toInt32 to improve kraken</short_desc>
          <delta_ts>2016-06-13 09:51:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1201257</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-10 10:00:33 -0700</bug_when>
    <thetext>Linux perf tool analysis on several kraken benchmarks shows that JSC::toInt32 is frequently called.
But, the function JSC::toInt32 itself is small one. It&apos;s worth inlining.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201261</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-10 10:10:24 -0700</bug_when>
    <thetext>Seems good. I&apos;ll check Octane, SunSpider, ASMBench and upload the patch.

Benchmark report for Kraken on hanayamata.

VMs tested:
&quot;baseline&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf-master/Release/bin/jsc
&quot;patched&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf/Release/bin/jsc

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

ai-astar                                96.084+-0.548             96.015+-0.523         
audio-beat-detection                    48.621+-1.138             48.357+-1.020         
audio-dft                              123.803+-0.373            123.549+-0.109         
audio-fft                               37.399+-0.050             37.381+-0.039         
audio-oscillator                        53.682+-0.071      ?      53.718+-0.082         ?
imaging-darkroom                        87.673+-0.063      ?      87.724+-0.060         ?
imaging-desaturate                      56.400+-0.064             56.333+-0.041         
imaging-gaussian-blur                   79.772+-1.849      ?      79.936+-1.394         ?
json-parse-financial                    44.649+-0.208      ?      44.997+-0.302         ?
json-stringify-tinderbox                27.110+-0.056             26.812+-0.428           might be 1.0111x faster
stanford-crypto-aes                     43.989+-0.157      ^      43.001+-0.078         ^ definitely 1.0230x faster
stanford-crypto-ccm                     44.338+-0.688      ?      44.588+-0.686         ?
stanford-crypto-pbkdf2                 108.420+-1.044      ^     106.231+-0.437         ^ definitely 1.0206x faster
stanford-crypto-sha256-iterative        35.538+-0.077      ^      35.314+-0.037         ^ definitely 1.0063x faster

&lt;arithmetic&gt;                            63.391+-0.168             63.140+-0.140           might be 1.0040x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201491</commentid>
    <comment_count>2</comment_count>
      <attachid>281075</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-10 21:13:33 -0700</bug_when>
    <thetext>Created attachment 281075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201492</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-10 21:16:47 -0700</bug_when>
    <thetext>Performance results. mandreel seems noise. To ensure that, we retake the mandreel 100 times, and the result is the following.

Benchmark report for Octane on hanayamata.

VMs tested:
&quot;baseline&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf-master/Release/bin/jsc
&quot;patched&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf/Release/bin/jsc

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

mandreel       x2      49.08879+-0.28178         48.86048+-0.10656       

&lt;geometric&gt;            49.08879+-0.28178         48.86048+-0.10656         might be 1.0047x faster




Benchmark report for SunSpider, Octane, Kraken, and AsmBench on hanayamata.

VMs tested:
&quot;baseline&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf-master/Release/bin/jsc
&quot;patched&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf/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                                    6.1564+-0.2165            6.0395+-0.0198          might be 1.0194x faster
   3d-morph                                  25.7981+-0.1100     ?     25.9357+-0.1825        ?
   3d-raytrace                                7.4267+-0.5293            6.8834+-0.2116          might be 1.0789x faster
   access-binary-trees                        2.3713+-0.0980     ?      2.4013+-0.1151        ? might be 1.0127x slower
   access-fannkuch                            6.9854+-0.3202            6.7167+-0.2763          might be 1.0400x faster
   access-nbody                               2.8520+-0.0103     ?      2.9024+-0.0567        ? might be 1.0177x slower
   access-nsieve                              3.2326+-0.0544            3.2281+-0.0483
   bitops-3bit-bits-in-byte                   1.2229+-0.0422     ?      1.2335+-0.0501        ?
   bitops-bits-in-byte                        2.8118+-0.1010            2.7639+-0.0888          might be 1.0173x faster
   bitops-bitwise-and                         2.0064+-0.0246            1.9841+-0.0082          might be 1.0112x faster
   bitops-nsieve-bits                         3.5306+-0.2168            3.3985+-0.1914          might be 1.0389x faster
   controlflow-recursive                      2.8202+-0.0975     ?      2.8671+-0.1323        ? might be 1.0166x slower
   crypto-aes                                 5.2740+-0.1032     ?      5.3000+-0.2027        ?
   crypto-md5                                 2.7913+-0.1429            2.7811+-0.1261
   crypto-sha1                                2.5246+-0.0264     !      2.6164+-0.0640        ! definitely 1.0364x slower
   date-format-tofte                         10.3640+-0.1394     ?     10.4484+-0.1300        ?
   date-format-xparb                          6.0335+-0.1035     ?      6.0831+-0.1376        ?
   math-cordic                                3.0874+-0.0865     ?      3.1688+-0.1189        ? might be 1.0264x slower
   math-partial-sums                         10.5272+-0.0396     ?     10.5978+-0.1326        ?
   math-spectral-norm                         2.1891+-0.0521     ?      2.2340+-0.0519        ? might be 1.0205x slower
   regexp-dna                                 7.3567+-0.0223     ?      7.3860+-0.0869        ?
   string-base64                              3.9486+-0.0283     ?      4.0317+-0.0774        ? might be 1.0211x slower
   string-fasta                               6.6015+-0.2154            6.4747+-0.1874          might be 1.0196x faster
   string-tagcloud                            9.7379+-0.0710            9.6021+-0.1486          might be 1.0141x faster
   string-unpack-code                        19.7744+-0.0478     ?     19.8322+-0.2298        ?
   string-validate-input                      4.2980+-0.1012     ?      4.3578+-0.1089        ? might be 1.0139x slower

   &lt;arithmetic&gt;                               6.2201+-0.0308            6.2026+-0.0274          might be 1.0028x faster

                                                 baseline                  patched
Octane:
   encrypt                                   0.17962+-0.00241    ?     0.18033+-0.00120       ?
   decrypt                                   2.98068+-0.01640    ?     3.00958+-0.04567       ?
   deltablue                        x2       0.15236+-0.00144          0.15025+-0.00117         might be 1.0141x faster
   earley                                    0.33712+-0.00074    ?     0.33722+-0.00079       ?
   boyer                                     5.32422+-0.00564    ?     5.32558+-0.00841       ?
   navier-stokes                    x2       4.78881+-0.00693    ?     4.79320+-0.01528       ?
   raytrace                         x2       0.93551+-0.00362          0.93233+-0.00309
   richards                         x2       0.09723+-0.00092    ?     0.09801+-0.00167       ?
   splay                            x2       0.39334+-0.00123    ?     0.39364+-0.00119       ?
   regexp                           x2      18.71392+-0.06857         18.65126+-0.05944
   pdfjs                            x2      42.39686+-0.35091         42.31642+-0.30435
   mandreel                         x2      48.68664+-0.15582    !    49.25694+-0.29339       ! definitely 1.0117x slower
   gbemu                            x2      39.31304+-1.31894         38.79220+-1.50068         might be 1.0134x faster
   closure                                   0.60327+-0.00395          0.60178+-0.00309
   jquery                                    8.02553+-0.02883    ?     8.08426+-0.14237       ?
   box2d                            x2      14.63042+-0.09236    ?    14.69277+-0.19818       ?
   zlib                             x2     368.45610+-5.24313        364.03090+-2.28827         might be 1.0122x faster
   typescript                       x2     810.87181+-4.19509        810.07914+-4.30712

   &lt;geometric&gt;                               5.90654+-0.01651          5.90027+-0.01901         might be 1.0011x faster

                                                 baseline                  patched
Kraken:
   ai-astar                                   95.966+-1.109      ?      96.090+-0.925         ?
   audio-beat-detection                       47.492+-1.701             46.657+-1.232           might be 1.0179x faster
   audio-dft                                 123.721+-0.402      ?     124.373+-0.666         ?
   audio-fft                                  37.322+-0.036             37.276+-0.015
   audio-oscillator                           53.789+-0.285             53.722+-0.157
   imaging-darkroom                           88.159+-0.917             87.730+-0.094
   imaging-desaturate                         56.332+-0.064      ?      56.345+-0.104         ?
   imaging-gaussian-blur                      80.524+-2.687             79.091+-2.555           might be 1.0181x faster
   json-parse-financial                       44.610+-0.441      ?      44.791+-0.325         ?
   json-stringify-tinderbox                   27.087+-0.035      ^      26.609+-0.144         ^ definitely 1.0180x faster
   stanford-crypto-aes                        43.669+-0.210      ^      42.862+-0.115         ^ definitely 1.0188x faster
   stanford-crypto-ccm                        45.213+-1.424             44.490+-1.290           might be 1.0162x faster
   stanford-crypto-pbkdf2                    107.665+-0.581      ^     106.229+-0.807         ^ definitely 1.0135x faster
   stanford-crypto-sha256-iterative           35.470+-0.112             35.351+-0.078

   &lt;arithmetic&gt;                               63.359+-0.230             62.972+-0.281           might be 1.0061x faster

                                                 baseline                  patched
AsmBench:
   towers.c                                 280.7607+-10.5500         276.5852+-2.2406          might be 1.0151x faster
   n-body.c                                 930.6878+-6.5519          924.9891+-6.5493
   float-mm.c                               718.3752+-4.3448     ?    723.1201+-5.6769        ?
   container.cpp                           3029.7668+-37.4858    ?   3048.7741+-25.0556       ?
   quicksort.c                              439.4318+-1.6382          439.2427+-1.8137
   gcc-loops.cpp                           4163.1676+-18.3908    ?   4175.9266+-52.8059       ?
   bigfib.cpp                               456.7496+-6.6840     ?    457.0188+-5.5533        ?
   hash-map                                 153.3622+-1.5466     ?    153.5558+-1.7462        ?
   dry.c                                    478.1047+-12.4209         477.8930+-9.9328

   &lt;geometric&gt;                              688.1226+-3.0102          688.0901+-2.4242          might be 1.0000x faster

                                                 baseline                  patched
Geomean of preferred means:
   &lt;scaled-result&gt;                           35.5738+-0.0610           35.4851+-0.0812          might be 1.0025x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201493</commentid>
    <comment_count>4</comment_count>
      <attachid>281075</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-10 21:33:39 -0700</bug_when>
    <thetext>Comment on attachment 281075
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=281075&amp;action=review

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:1062
&gt; +ALWAYS_INLINE int32_t toInt32(double number)

It may be good to change this ALWAYS_INLINE to inline to rely on the compiler&apos;s decision. I&apos;ll check this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201496</commentid>
    <comment_count>5</comment_count>
      <attachid>281075</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-10 21:57:48 -0700</bug_when>
    <thetext>Comment on attachment 281075
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=281075&amp;action=review

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:1062
&gt;&gt; +ALWAYS_INLINE int32_t toInt32(double number)
&gt; 
&gt; It may be good to change this ALWAYS_INLINE to inline to rely on the compiler&apos;s decision. I&apos;ll check this.

Performance results recommend us to use ALWAYS_INLINE for this toInt32 function. So use ALWAYS_INLINE. 

Benchmark report for Kraken on hanayamata.

VMs tested:
&quot;baseline&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf-master/Release/bin/jsc
&quot;patched&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf/Release/bin/jsc
&quot;always&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf2/Release/bin/jsc

Collected 100 samples per benchmark/VM, with 100 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                    always                always v. baseline    

stanford-crypto-pbkdf2       107.863+-0.376      ^     106.828+-0.409            106.087+-0.450         ^ definitely 1.0167x faster

&lt;arithmetic&gt;                 107.863+-0.376      ^     106.828+-0.409            106.087+-0.450         ^ definitely 1.0167x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201501</commentid>
    <comment_count>6</comment_count>
      <attachid>281075</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-06-10 22:06:46 -0700</bug_when>
    <thetext>Comment on attachment 281075
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=281075&amp;action=review

r=me with fix.

&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:1062
&gt;&gt;&gt; +ALWAYS_INLINE int32_t toInt32(double number)
&gt;&gt; 
&gt;&gt; It may be good to change this ALWAYS_INLINE to inline to rely on the compiler&apos;s decision. I&apos;ll check this.
&gt; 
&gt; Performance results recommend us to use ALWAYS_INLINE for this toInt32 function. So use ALWAYS_INLINE. 
&gt; 
&gt; Benchmark report for Kraken on hanayamata.
&gt; 
&gt; VMs tested:
&gt; &quot;baseline&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf-master/Release/bin/jsc
&gt; &quot;patched&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf/Release/bin/jsc
&gt; &quot;always&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf2/Release/bin/jsc
&gt; 
&gt; Collected 100 samples per benchmark/VM, with 100 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
&gt; Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
&gt; timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.
&gt; 
&gt;                                  baseline                  patched                    always                always v. baseline    
&gt; 
&gt; stanford-crypto-pbkdf2       107.863+-0.376      ^     106.828+-0.409            106.087+-0.450         ^ definitely 1.0167x faster
&gt; 
&gt; &lt;arithmetic&gt;                 107.863+-0.376      ^     106.828+-0.409            106.087+-0.450         ^ definitely 1.0167x faster

I know that this function came from JSCJSValue.cpp, but I think a better place to put it is in runtime/MathCommon.h since it doesn&apos;t have anything to do with JSValues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201502</commentid>
    <comment_count>7</comment_count>
      <attachid>281075</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-10 22:10:02 -0700</bug_when>
    <thetext>Comment on attachment 281075
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=281075&amp;action=review

&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:1062
&gt;&gt;&gt;&gt; +ALWAYS_INLINE int32_t toInt32(double number)
&gt;&gt;&gt; 
&gt;&gt;&gt; It may be good to change this ALWAYS_INLINE to inline to rely on the compiler&apos;s decision. I&apos;ll check this.
&gt;&gt; 
&gt;&gt; Performance results recommend us to use ALWAYS_INLINE for this toInt32 function. So use ALWAYS_INLINE. 
&gt;&gt; 
&gt;&gt; Benchmark report for Kraken on hanayamata.
&gt;&gt; 
&gt;&gt; VMs tested:
&gt;&gt; &quot;baseline&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf-master/Release/bin/jsc
&gt;&gt; &quot;patched&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf/Release/bin/jsc
&gt;&gt; &quot;always&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf2/Release/bin/jsc
&gt;&gt; 
&gt;&gt; Collected 100 samples per benchmark/VM, with 100 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
&gt;&gt; Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
&gt;&gt; timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.
&gt;&gt; 
&gt;&gt;                                  baseline                  patched                    always                always v. baseline    
&gt;&gt; 
&gt;&gt; stanford-crypto-pbkdf2       107.863+-0.376      ^     106.828+-0.409            106.087+-0.450         ^ definitely 1.0167x faster
&gt;&gt; 
&gt;&gt; &lt;arithmetic&gt;                 107.863+-0.376      ^     106.828+-0.409            106.087+-0.450         ^ definitely 1.0167x faster
&gt; 
&gt; I know that this function came from JSCJSValue.cpp, but I think a better place to put it is in runtime/MathCommon.h since it doesn&apos;t have anything to do with JSValues.

Right! I&apos;ll move this to MathCommon.h (And that is also the better place to put operationToInt32 since operationMathPow resides there).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201508</commentid>
    <comment_count>8</comment_count>
      <attachid>281075</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-10 22:29:10 -0700</bug_when>
    <thetext>Comment on attachment 281075
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=281075&amp;action=review

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:1062
&gt;&gt;&gt;&gt;&gt; +ALWAYS_INLINE int32_t toInt32(double number)
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; It may be good to change this ALWAYS_INLINE to inline to rely on the compiler&apos;s decision. I&apos;ll check this.
&gt;&gt;&gt; 
&gt;&gt;&gt; Performance results recommend us to use ALWAYS_INLINE for this toInt32 function. So use ALWAYS_INLINE. 
&gt;&gt;&gt; 
&gt;&gt;&gt; Benchmark report for Kraken on hanayamata.
&gt;&gt;&gt; 
&gt;&gt;&gt; VMs tested:
&gt;&gt;&gt; &quot;baseline&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf-master/Release/bin/jsc
&gt;&gt;&gt; &quot;patched&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf/Release/bin/jsc
&gt;&gt;&gt; &quot;always&quot; at /home/yusukesuzuki/dev/WebKit/WebKitBuild/perf2/Release/bin/jsc
&gt;&gt;&gt; 
&gt;&gt;&gt; Collected 100 samples per benchmark/VM, with 100 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
&gt;&gt;&gt; Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
&gt;&gt;&gt; timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.
&gt;&gt;&gt; 
&gt;&gt;&gt;                                  baseline                  patched                    always                always v. baseline    
&gt;&gt;&gt; 
&gt;&gt;&gt; stanford-crypto-pbkdf2       107.863+-0.376      ^     106.828+-0.409            106.087+-0.450         ^ definitely 1.0167x faster
&gt;&gt;&gt; 
&gt;&gt;&gt; &lt;arithmetic&gt;                 107.863+-0.376      ^     106.828+-0.409            106.087+-0.450         ^ definitely 1.0167x faster
&gt;&gt; 
&gt;&gt; I know that this function came from JSCJSValue.cpp, but I think a better place to put it is in runtime/MathCommon.h since it doesn&apos;t have anything to do with JSValues.
&gt; 
&gt; Right! I&apos;ll move this to MathCommon.h (And that is also the better place to put operationToInt32 since operationMathPow resides there).

Looking into MathCommon, it includes several headers to gain some define flags. But I think these flags should be moved to WTF/Compiler.h.
I&apos;ll create a new patch later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201509</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-10 22:30:20 -0700</bug_when>
    <thetext>Committed r201964: &lt;http://trac.webkit.org/changeset/201964&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201516</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-10 23:00:20 -0700</bug_when>
    <thetext>Committed r201966: &lt;http://trac.webkit.org/changeset/201966&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201611</commentid>
    <comment_count>11</comment_count>
      <attachid>281075</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-11 12:35:02 -0700</bug_when>
    <thetext>Comment on attachment 281075
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=281075&amp;action=review

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:1057
&gt; +// of the resulting bit-pattern (as such this metod is also called to implement

Typo here &quot;metod&quot;.

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:1071
&gt; +    // Note this case handles 0, -0, and all infinte, NaN, &amp; denormal value.

Typo here &quot;infinte&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201865</commentid>
    <comment_count>12</comment_count>
      <attachid>281075</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-13 09:47:28 -0700</bug_when>
    <thetext>Comment on attachment 281075
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=281075&amp;action=review

Thanks! I&apos;ll land the follow up patch that fixes pointed typos.

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:1057
&gt;&gt; +// of the resulting bit-pattern (as such this metod is also called to implement
&gt; 
&gt; Typo here &quot;metod&quot;.

Thanks! Fixed in the follow up patch.

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:1071
&gt;&gt; +    // Note this case handles 0, -0, and all infinte, NaN, &amp; denormal value.
&gt; 
&gt; Typo here &quot;infinte&quot;

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201866</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-13 09:51:05 -0700</bug_when>
    <thetext>Committed r201993: &lt;http://trac.webkit.org/changeset/201993&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281075</attachid>
            <date>2016-06-10 21:13:33 -0700</date>
            <delta_ts>2016-06-10 22:06:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158619-20160611131503.patch</filename>
            <type>text/plain</type>
            <size>13604</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxOTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MzMzNjhiZjljMjcyNjE4MWQxOGIwNWIyNmY0ZmIyYmUyOGRmZmJiLi5lMmVhMTg5ODBjYmIzYmJk
YmI0YTg1ODFiMjgzNjIzMTRkYWYyMTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxNi0wNi0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBJbmxpbmUgSlNDOjp0b0ludDMyIHRvIGltcHJvdmUga3Jh
a2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg2
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXZl
cmFsIGtyYWtlbiBiZW5jaG1hcmtzIHNob3cgdGhhdCBKU0M6OnRvSW50MzIgaXMgZnJlcXVlbnRs
eSBjYWxsZWQuCisgICAgICAgIEZvciBleGFtcGxlLCBzdGFuZm9yZC1jcnlwdG8tcGJrZGYyIHJl
cG9ydHMgdGhhdCB0aGUgaG90dGVzdCBydW50aW1lIGZ1bmN0aW9uIGlzIEpTQzo6dG9JbnQzMi4K
KworICAgICAgICBUaGUgZGF0YSBpcyBiZWxvdyAodGFrZW4gYnkgTGludXggcGVyZiB0b29scyku
CisgICAgICAgIDUuNTAlICBqc2MgICAgICBsaWJKYXZhU2NyaXB0Q29yZS5zby4xLjAuMCAgWy5d
IF9aTjNKU0M3dG9JbnQzMkVkCisgICAgICAgIDMuOTYlICBqc2MgICAgICBsaWJKYXZhU2NyaXB0
Q29yZS5zby4xLjAuMCAgWy5dIF9aTjNKU0MyMGFycmF5UHJvdG9GdW5jQ29uY2F0RVBOU185RXhl
Y1N0YXRlRQorICAgICAgICAyLjQ4JSAganNjICAgICAgbGliSmF2YVNjcmlwdENvcmUuc28uMS4w
LjAgIFsuXSBfWk4zSlNDMTlhcnJheVByb3RvRnVuY1NsaWNlRVBOU185RXhlY1N0YXRlRQorICAg
ICAgICAxLjY5JSAganNjICAgICAgbGliSmF2YVNjcmlwdENvcmUuc28uMS4wLjAgIFsuXSBfWk5L
M0pTQzlTdHJ1Y3R1cmUyN2hvbGVzTXVzdEZvcndhcmRUb1Byb3RvdHlwZUVSTlNfMlZNRQorCisg
ICAgICAgIFRoaXMgaXMgYmVjYXVzZSBvZiBDb21tb25TbG93UGF0aHMnIGJpdCBvcGVyYXRpb25z
J3MgSlNWYWx1ZTo6dG9JbnQzMi4KKyAgICAgICAgRHVlIHRvIHRoZSBzbG93IHBhdGgsIGluIGB2
YWx1ZSB8IDBgLCBgdmFsdWVgIG1heSBiZSBhIGRvdWJsZSBudW1iZXIgdmFsdWUuIEluIHRoYXQg
Y2FzZSwgSlNDOjp0b0ludDMyIGlzIGNhbGxlZC4KKworICAgICAgICBXaGlsZSBKU0M6OnRvSW4z
MiBpcyBob3QsIHRoZSBmdW5jdGlvbiBpdHNlbGYgaXMgdmVyeSBzbWFsbC4gSXQncyB3b3J0aCBp
bmxpbmluZy4KKworICAgICAgICBUaGlzIGNoYW5nZSBvZmZlcnMgdGhlIGZvbGxvd2luZyBrcmFr
ZW4gaW1wcm92ZW1lbnRzLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgIHBhdGNoZWQKKyAg
ICAgICAgS3Jha2VuOgorICAgICAgICAgICBhdWRpby1iZWF0LWRldGVjdGlvbiAgICAgICAgICAg
ICAgICAgICAgICAgNDcuNDkyKy0xLjcwMSAgICAgICAgICAgICA0Ni42NTcrLTEuMjMyICAgICAg
ICAgICBtaWdodCBiZSAxLjAxNzl4IGZhc3RlcgorICAgICAgICAgICBzdGFuZm9yZC1jcnlwdG8t
YWVzICAgICAgICAgICAgICAgICAgICAgICAgNDMuNjY5Ky0wLjIxMCAgICAgIF4gICAgICA0Mi44
NjIrLTAuMTE1ICAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDE4OHggZmFzdGVyCisgICAgICAgICAg
IHN0YW5mb3JkLWNyeXB0by1jY20gICAgICAgICAgICAgICAgICAgICAgICA0NS4yMTMrLTEuNDI0
ICAgICAgICAgICAgIDQ0LjQ5MCstMS4yOTAgICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2MnggZmFz
dGVyCisgICAgICAgICAgIHN0YW5mb3JkLWNyeXB0by1wYmtkZjIgICAgICAgICAgICAgICAgICAg
IDEwNy42NjUrLTAuNTgxICAgICAgXiAgICAgMTA2LjIyOSstMC44MDcgICAgICAgICBeIGRlZmlu
aXRlbHkgMS4wMTM1eCBmYXN0ZXIKKworICAgICAgICBUaGlzIHBhdGNoIG9ubHkgZm9jdXNlZCBv
biB0aGUgY2FsbCB0byB0b0ludDMyIGZyb20gdGhlIHJ1bnRpbWUgZnVuY3Rpb25zLgorICAgICAg
ICBTbyBKU0M6OnRvSW50MzIgY2FsbHMgZnJvbSB0aGUgYmFzZWxpbmUgLyBERkcgcmVtYWluLgor
ICAgICAgICBXZSBlbnN1cmUgdGhhdCBKSVQgY29kZSB1c2VzIG9wZXJhdGlvblRvSW50MzIgaW5z
dGVhZCBvZiBKU0M6OnRvSW50MzIgc2luY2UgSlNDOjp0b0ludDMyIGlzIG5vdyBtYXJrZWQgYXMg
QUxXQVlTX0lOTElORS4KKyAgICAgICAgTGludXggcGVyZiBwcm9maWxlciBhbHNvIGZpbmRzIHRo
YXQgdGhpcyBgb3BlcmF0aW9uVG9JbnQzMmAgaXMgZnJlcXVlbnRseSBjYWxsZWQgaW4gdGhlIGFi
b3ZlIGJlbmNobWFya3MuCisgICAgICAgIEl0IG1heSBiZSBnb29kIHRvIGludHJvZHVjZSBhc20g
ZW1pdCBmb3IgdGhhdCBpbnN0ZWFkIG9mIGNhbGxpbmcgSlNDOjp0b0ludDMyIG9wZXJhdGlvbiBp
biB0aGUgc2VwYXJhdGVkIHBhdGNoLgorCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9J
bnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpkb3VibGVUb0ludDMyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c2Vuc2libGVEb3VibGVUb0ludDMy
KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAo
SlNDOjp0b0ludDMyKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OnRvSW50MzIpOgorCiAyMDE2LTA2LTA5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2xlYW4gdXAgSmF2
YVNjcmlwdENvcmUudmN4cHJvaiBkaXJlY3RvcnkgYWZ0ZXIgc3dpdGNoaW5nIHRvIENNYWtlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRl
eCAwNTgxYWNkMjM4MDE5MmI0ZGE2ZDg2MDU2OGFkNzFjZjVlNDZkMmIzLi4wZmZiMmI1NTViMDkw
ZGU2NjA1OTAxNmYxNTk1ZjY4ODQ0YjNhNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMjExNCw3ICsyMTE0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMihOb2RlKiBub2RlKQogICAgICAgICBH
UFJSZWcgZ3ByID0gcmVzdWx0LmdwcigpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RU
cnVuY2F0ZWRUb0ludGVnZXIgPSBtX2ppdC5icmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoZnBy
LCBncHIsIEpJVENvbXBpbGVyOjpCcmFuY2hJZlRydW5jYXRlRmFpbGVkKTsKICAgICAgICAgCi0g
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChub3RUcnVuY2F0ZWRUb0lu
dGVnZXIsIHRoaXMsIHRvSW50MzIsIGdwciwgZnByLCBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hl
Y2tSZXF1aXJlbWVudDo6Q2hlY2tOb3ROZWVkZWQpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKG5vdFRydW5jYXRlZFRvSW50ZWdlciwgdGhpcywgb3BlcmF0aW9u
VG9JbnQzMiwgZ3ByLCBmcHIsIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
OjpDaGVja05vdE5lZWRlZCkpOwogICAgICAgICAKICAgICAgICAgaW50MzJSZXN1bHQoZ3ByLCBu
b2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE2NSw3ICsyMTY1LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMihOb2RlKiBub2RlKQogICAgICAgICAgICAgdW5i
b3hEb3VibGUoZ3ByLCByZXN1bHRHcHIsIGZwcik7CiAKICAgICAgICAgICAgIHNpbGVudFNwaWxs
QWxsUmVnaXN0ZXJzKHJlc3VsdEdwcik7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKHRvSW50
MzIsIHJlc3VsdEdwciwgZnByKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VG9JbnQzMiwgcmVzdWx0R3ByLCBmcHIpOwogICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lz
dGVycyhyZXN1bHRHcHIpOwogCiAgICAgICAgICAgICBjb252ZXJ0ZWQuYXBwZW5kKG1faml0Lmp1
bXAoKSk7CkBAIC0yMjI0LDcgKzIyMjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVUb0ludDMyKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgdW5ib3hEb3VibGUodGFn
R1BSLCBwYXlsb2FkR1BSLCBmcHIsIHNjcmF0Y2guZnByKCkpOwogCiAgICAgICAgICAgICAgICAg
c2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R3ByKTsKLSAgICAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKHRvSW50MzIsIHJlc3VsdEdwciwgZnByKTsKKyAgICAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblRvSW50MzIsIHJlc3VsdEdwciwgZnByKTsKICAgICAgICAgICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdwcik7CiAKICAgICAgICAgICAgICAg
ICBjb252ZXJ0ZWQuYXBwZW5kKG1faml0Lmp1bXAoKSk7CkBAIC0yNzY0LDcgKzI3NjQsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJl
ZyBiYXNlLCBHUFJSZWcgcHJvcGVydAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGZhaWxlZCA9IG1faml0LmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMigKICAgICAgICAg
ICAgICAgICAgICAgZnByLCBncHIsIE1hY3JvQXNzZW1ibGVyOjpCcmFuY2hJZlRydW5jYXRlRmFp
bGVkKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoZmFpbGVkLCB0aGlzLCB0b0ludDMyLCBncHIsIGZwciwgTmVlZFRv
U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTm90TmVlZGVkKSk7CisgICAg
ICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGZhaWxlZCwgdGhp
cywgb3BlcmF0aW9uVG9JbnQzMiwgZ3ByLCBmcHIsIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVj
a1JlcXVpcmVtZW50OjpDaGVja05vdE5lZWRlZCkpOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGZpeGVkLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgICAgICB2YWx1ZS5hZG9w
dChyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCmluZGV4IGVhY2YyNGE2MGMzMjk2NDUxODFiODRlNDZkYzM1MDllOGZlYmY5Y2UuLmEzNmY0
ZTBjNTg5YzcyMWZhOGVjYzY2NDM0OTg3MmUzZDc2YWZmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTkwOTEsNyArOTA5MSw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAg
ICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwot
ICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQuY2FsbChtX291dC5pbnQz
MiwgbV9vdXQub3BlcmF0aW9uKHRvSW50MzIpLCBkb3VibGVWYWx1ZSkpKTsKKyAgICAgICAgcmVz
dWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmNhbGwobV9vdXQuaW50MzIsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25Ub0ludDMyKSwgZG91YmxlVmFsdWUpKSk7CiAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtOTEyMCw3ICs5MTIwLDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQu
YXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCi0gICAgICAgICAgICBtX291dC5jYWxsKG1fb3V0
LmludDMyLCBtX291dC5vcGVyYXRpb24odG9JbnQzMiksIGRvdWJsZVZhbHVlKSk7CisgICAgICAg
ICAgICBtX291dC5jYWxsKG1fb3V0LmludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uVG9J
bnQzMiksIGRvdWJsZVZhbHVlKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
ICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMTc0
NWQ2ZTIzN2NjMDA5MmQzNjZkM2YxN2IwZTg1YzY0MTZmZWJhMS4uOGNkZDViMGQ0ZDY1NzI5MDJh
MWJmMmNkZmI3YjE0MTRkMjEzMTJjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCkBAIC0yMzQyLDYgKzIzNDIsMTEgQEAgaW50MzJfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNoZWNrSWZFeGNlcHRpb25Jc1VuY2F0Y2hhYmxlQW5kTm90aWZ5UHJvZmls
ZXIoRXgKICAgICAgICAgcmV0dXJuIDA7CiB9CiAKK2ludDMyX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25Ub0ludDMyKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gSlNDOjp0b0ludDMyKHZh
bHVlKTsKK30KKwogfSAvLyBleHRlcm4gIkMiCiAKIC8vIE5vdGU6IGdldEhvc3RDYWxsUmV0dXJu
VmFsdWVXaXRoRXhlY1N0YXRlKCkgbmVlZHMgdG8gYmUgcGxhY2VkIGJlZm9yZSB0aGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggYTk3MjZlYmQ2YjY4MTlk
ZWFkNmRjYzRlM2E1MDBiZDk5MWVkMDAyNC4uZTVhNDBkMDcyNGRjYTUwNDVhZjkwMjY1NjY0ODY0
OWQzZDMxMmYwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
QEAgLTQxOSw2ICs0MTksOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlU3ViUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdQogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJMb2coRXhlY1N0YXRlKikgV1RGX0lO
VEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2Nlc3NTaGFkb3dDaGlja2Vu
TG9nKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIAoraW50MzJfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRvSW50MzIoZG91YmxlKTsKKwogfSAvLyBleHRlcm4gIkMiCiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApp
bmRleCBjYTRmNTU4YTBkMzhiN2Y4MTM1YjhlMWM3ZTY5ZTUzYTJmZDExOGE4Li5kZGYzYjVmZjU3
NmQwNzA5MzA1MDgxZGE5MzUxMjJlZTA1NTA5MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMzE0LDUxICszMTQsNiBAQCB2b2lkIEpTVmFs
dWU6OmR1bXBGb3JCYWNrdHJhY2UoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgb3V0
LnByaW50KCJJTlZBTElEIik7CiB9CiAKLS8vIFRoaXMgaW4gdGhlIFRvSW50MzIgb3BlcmF0aW9u
IGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5LjUgb2YgdGhlIEVDTUEtMjYyIHNwZWMuCi0vLyBOb3Rl
IHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgaWRlbnRpY2FsIHRvIFRvVUludDMyIG90aGVyIHRoYW4g
dG8gaW50ZXJwcmV0YXRpb24KLS8vIG9mIHRoZSByZXN1bHRpbmcgYml0LXBhdHRlcm4gKGFzIHN1
Y2ggdGhpcyBtZXRvZCBpcyBhbHNvIGNhbGxlZCB0byBpbXBsZW1lbnQKLS8vIFRvVUludDMyKS4K
LS8vCi0vLyBUaGUgb3BlcmF0aW9uIGNhbiBiZSBkZXNjaWJlZCBhcyByb3VuZCB0b3dhcmRzIHpl
cm8sIHRoZW4gc2VsZWN0IHRoZSAzMiBsZWFzdAotLy8gYml0cyBvZiB0aGUgcmVzdWx0aW5nIHZh
bHVlIGluIDJzLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24uCi1pbnQzMl90IHRvSW50MzIoZG91
YmxlIG51bWJlcikKLXsKLSAgICBpbnQ2NF90IGJpdHMgPSBXVEY6OmJpdHdpc2VfY2FzdDxpbnQ2
NF90PihudW1iZXIpOwotICAgIGludDMyX3QgZXhwID0gKHN0YXRpY19jYXN0PGludDMyX3Q+KGJp
dHMgPj4gNTIpICYgMHg3ZmYpIC0gMHgzZmY7Ci0KLSAgICAvLyBJZiBleHBvbmVudCA8IDAgdGhl
cmUgd2lsbCBiZSBubyBiaXRzIHRvIHRoZSBsZWZ0IG9mIHRoZSBkZWNpbWFsIHBvaW50Ci0gICAg
Ly8gYWZ0ZXIgcm91bmRpbmc7IGlmIHRoZSBleHBvbmVudCBpcyA+IDgzIHRoZW4gbm8gYml0cyBv
ZiBwcmVjaXNpb24gY2FuIGJlCi0gICAgLy8gbGVmdCBpbiB0aGUgbG93IDMyLWJpdCByYW5nZSBv
ZiB0aGUgcmVzdWx0IChJRUVFLTc1NCBkb3VibGVzIGhhdmUgNTIgYml0cwotICAgIC8vIG9mIGZy
YWN0aW9uYWwgcHJlY2lzaW9uKS4KLSAgICAvLyBOb3RlIHRoaXMgY2FzZSBoYW5kbGVzIDAsIC0w
LCBhbmQgYWxsIGluZmludGUsIE5hTiwgJiBkZW5vcm1hbCB2YWx1ZS4gCi0gICAgaWYgKGV4cCA8
IDAgfHwgZXhwID4gODMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gU2VsZWN0IHRoZSBh
cHByb3ByaWF0ZSAzMi1iaXRzIGZyb20gdGhlIGZsb2F0aW5nIHBvaW50IG1hbnRpc3NhLiAgSWYg
dGhlCi0gICAgLy8gZXhwb25lbnQgaXMgNTIgdGhlbiB0aGUgYml0cyB3ZSBuZWVkIHRvIHNlbGVj
dCBhcmUgYWxyZWFkeSBhbGlnbmVkIHRvIHRoZQotICAgIC8vIGxvd2VzdCBiaXRzIG9mIHRoZSA2
NC1iaXQgaW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiB0Z2hlIG51bWJlciwgbm8gbmVlZAotICAg
IC8vIHRvIHNoaWZ0LiAgSWYgdGhlIGV4cG9uZW50IGlzIGdyZWF0ZXIgdGhhbiA1MiB3ZSBuZWVk
IHRvIHNoaWZ0IHRoZSB2YWx1ZQotICAgIC8vIGxlZnQgYnkgKGV4cCAtIDUyKSwgaWYgdGhlIHZh
bHVlIGlzIGxlc3MgdGhhbiA1MiB3ZSBuZWVkIHRvIHNoaWZ0IHJpZ2h0Ci0gICAgLy8gYWNjb3Jk
aW5nbHkuCi0gICAgaW50MzJfdCByZXN1bHQgPSAoZXhwID4gNTIpCi0gICAgICAgID8gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oYml0cyA8PCAoZXhwIC0gNTIpKQotICAgICAgICA6IHN0YXRpY19jYXN0
PGludDMyX3Q+KGJpdHMgPj4gKDUyIC0gZXhwKSk7Ci0KLSAgICAvLyBJRUVFLTc1NCBkb3VibGUg
cHJlY2lzaW9uIHZhbHVlcyBhcmUgc3RvcmVkIG9taXR0aW5nIGFuIGltcGxpY2l0IDEgYmVmb3Jl
Ci0gICAgLy8gdGhlIGRlY2ltYWwgcG9pbnQ7IHdlIG5lZWQgdG8gcmVpbnNlcnQgdGhpcyBub3cu
ICBXZSBtYXkgYWxzbyB0aGUgc2hpZnRlZAotICAgIC8vIGludmFsaWQgYml0cyBpbnRvIHRoZSBy
ZXN1bHQgdGhhdCBhcmUgbm90IGEgcGFydCBvZiB0aGUgbWFudGlzc2EgKHRoZSBzaWduCi0gICAg
Ly8gYW5kIGV4cG9uZW50IGJpdHMgZnJvbSB0aGUgZmxvYXRpbmdwb2ludCByZXByZXNlbnRhdGlv
bik7IG1hc2sgdGhlc2Ugb3V0LgotICAgIGlmIChleHAgPCAzMikgewotICAgICAgICBpbnQzMl90
IG1pc3NpbmdPbmUgPSAxIDw8IGV4cDsKLSAgICAgICAgcmVzdWx0ICY9IG1pc3NpbmdPbmUgLSAx
OwotICAgICAgICByZXN1bHQgKz0gbWlzc2luZ09uZTsKLSAgICB9Ci0KLSAgICAvLyBJZiB0aGUg
aW5wdXQgdmFsdWUgd2FzIG5lZ2F0aXZlICh3ZSBjb3VsZCB0ZXN0IGVpdGhlciAnbnVtYmVyJyBv
ciAnYml0cycsCi0gICAgLy8gYnV0IHRlc3RpbmcgJ2JpdHMnIGlzIGxpa2VseSBmYXN0ZXIpIGlu
dmVydCB0aGUgcmVzdWx0IGFwcHJvcHJpYXRlbHkuCi0gICAgcmV0dXJuIGJpdHMgPCAwID8gLXJl
c3VsdCA6IHJlc3VsdDsKLX0KLQogYm9vbCBKU1ZhbHVlOjppc1ZhbGlkQ2FsbGVlKCkKIHsKICAg
ICByZXR1cm4gYXNPYmplY3QoYXNDZWxsKCkpLT5nbG9iYWxPYmplY3QoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IGNmY2Iz
NWZhMTA4YTNhODI5ZjgyYTgxYWI0ODcxMjFjZjY3MTk0NGEuLjZiYjI4NGUxMDM1NDM1ZDIxYWUw
OTZiMTgzY2RlYmQxZTc5MTlkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtMTA1Miw2ICsxMDUyLDUxIEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1RoaXNWYWx1ZUFsdGVyZWQoY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90
LCBKU09iamVjdCogYmFzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIFRoaXMgaW4gdGhlIFRv
SW50MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5LjUgb2YgdGhlIEVDTUEtMjYy
IHNwZWMuCisvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgaWRlbnRpY2FsIHRvIFRvVUlu
dDMyIG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KKy8vIG9mIHRoZSByZXN1bHRpbmcgYml0
LXBhdHRlcm4gKGFzIHN1Y2ggdGhpcyBtZXRvZCBpcyBhbHNvIGNhbGxlZCB0byBpbXBsZW1lbnQK
Ky8vIFRvVUludDMyKS4KKy8vCisvLyBUaGUgb3BlcmF0aW9uIGNhbiBiZSBkZXNjaWJlZCBhcyBy
b3VuZCB0b3dhcmRzIHplcm8sIHRoZW4gc2VsZWN0IHRoZSAzMiBsZWFzdAorLy8gYml0cyBvZiB0
aGUgcmVzdWx0aW5nIHZhbHVlIGluIDJzLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24uCitBTFdB
WVNfSU5MSU5FIGludDMyX3QgdG9JbnQzMihkb3VibGUgbnVtYmVyKQoreworICAgIGludDY0X3Qg
Yml0cyA9IFdURjo6Yml0d2lzZV9jYXN0PGludDY0X3Q+KG51bWJlcik7CisgICAgaW50MzJfdCBl
eHAgPSAoc3RhdGljX2Nhc3Q8aW50MzJfdD4oYml0cyA+PiA1MikgJiAweDdmZikgLSAweDNmZjsK
KworICAgIC8vIElmIGV4cG9uZW50IDwgMCB0aGVyZSB3aWxsIGJlIG5vIGJpdHMgdG8gdGhlIGxl
ZnQgb2YgdGhlIGRlY2ltYWwgcG9pbnQKKyAgICAvLyBhZnRlciByb3VuZGluZzsgaWYgdGhlIGV4
cG9uZW50IGlzID4gODMgdGhlbiBubyBiaXRzIG9mIHByZWNpc2lvbiBjYW4gYmUKKyAgICAvLyBs
ZWZ0IGluIHRoZSBsb3cgMzItYml0IHJhbmdlIG9mIHRoZSByZXN1bHQgKElFRUUtNzU0IGRvdWJs
ZXMgaGF2ZSA1MiBiaXRzCisgICAgLy8gb2YgZnJhY3Rpb25hbCBwcmVjaXNpb24pLgorICAgIC8v
IE5vdGUgdGhpcyBjYXNlIGhhbmRsZXMgMCwgLTAsIGFuZCBhbGwgaW5maW50ZSwgTmFOLCAmIGRl
bm9ybWFsIHZhbHVlLgorICAgIGlmIChleHAgPCAwIHx8IGV4cCA+IDgzKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIC8vIFNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgMzItYml0cyBmcm9tIHRoZSBm
bG9hdGluZyBwb2ludCBtYW50aXNzYS4gSWYgdGhlCisgICAgLy8gZXhwb25lbnQgaXMgNTIgdGhl
biB0aGUgYml0cyB3ZSBuZWVkIHRvIHNlbGVjdCBhcmUgYWxyZWFkeSBhbGlnbmVkIHRvIHRoZQor
ICAgIC8vIGxvd2VzdCBiaXRzIG9mIHRoZSA2NC1iaXQgaW50ZWdlciByZXByZXNlbnRhdGlvbiBv
ZiB0Z2hlIG51bWJlciwgbm8gbmVlZAorICAgIC8vIHRvIHNoaWZ0LiBJZiB0aGUgZXhwb25lbnQg
aXMgZ3JlYXRlciB0aGFuIDUyIHdlIG5lZWQgdG8gc2hpZnQgdGhlIHZhbHVlCisgICAgLy8gbGVm
dCBieSAoZXhwIC0gNTIpLCBpZiB0aGUgdmFsdWUgaXMgbGVzcyB0aGFuIDUyIHdlIG5lZWQgdG8g
c2hpZnQgcmlnaHQKKyAgICAvLyBhY2NvcmRpbmdseS4KKyAgICBpbnQzMl90IHJlc3VsdCA9IChl
eHAgPiA1MikKKyAgICAgICAgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihiaXRzIDw8IChleHAgLSA1
MikpCisgICAgICAgIDogc3RhdGljX2Nhc3Q8aW50MzJfdD4oYml0cyA+PiAoNTIgLSBleHApKTsK
KworICAgIC8vIElFRUUtNzU0IGRvdWJsZSBwcmVjaXNpb24gdmFsdWVzIGFyZSBzdG9yZWQgb21p
dHRpbmcgYW4gaW1wbGljaXQgMSBiZWZvcmUKKyAgICAvLyB0aGUgZGVjaW1hbCBwb2ludDsgd2Ug
bmVlZCB0byByZWluc2VydCB0aGlzIG5vdy4gV2UgbWF5IGFsc28gdGhlIHNoaWZ0ZWQKKyAgICAv
LyBpbnZhbGlkIGJpdHMgaW50byB0aGUgcmVzdWx0IHRoYXQgYXJlIG5vdCBhIHBhcnQgb2YgdGhl
IG1hbnRpc3NhICh0aGUgc2lnbgorICAgIC8vIGFuZCBleHBvbmVudCBiaXRzIGZyb20gdGhlIGZs
b2F0aW5ncG9pbnQgcmVwcmVzZW50YXRpb24pOyBtYXNrIHRoZXNlIG91dC4KKyAgICBpZiAoZXhw
IDwgMzIpIHsKKyAgICAgICAgaW50MzJfdCBtaXNzaW5nT25lID0gMSA8PCBleHA7CisgICAgICAg
IHJlc3VsdCAmPSBtaXNzaW5nT25lIC0gMTsKKyAgICAgICAgcmVzdWx0ICs9IG1pc3NpbmdPbmU7
CisgICAgfQorCisgICAgLy8gSWYgdGhlIGlucHV0IHZhbHVlIHdhcyBuZWdhdGl2ZSAod2UgY291
bGQgdGVzdCBlaXRoZXIgJ251bWJlcicgb3IgJ2JpdHMnLAorICAgIC8vIGJ1dCB0ZXN0aW5nICdi
aXRzJyBpcyBsaWtlbHkgZmFzdGVyKSBpbnZlcnQgdGhlIHJlc3VsdCBhcHByb3ByaWF0ZWx5Lgor
ICAgIHJldHVybiBiaXRzIDwgMCA/IC1yZXN1bHQgOiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gSlNWYWx1ZUlubGluZXNfaAo=
</data>
<flag name="review"
          id="304942"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>