<?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>48060</bug_id>
          
          <creation_ts>2010-10-21 03:59:35 -0700</creation_ts>
          <short_desc>Speed up op_jeq_null and op_jneq_null in JIT</short_desc>
          <delta_ts>2010-10-27 13:39:48 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gabor Loki">loki</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>297352</commentid>
    <comment_count>0</comment_count>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-10-21 03:59:35 -0700</bug_when>
    <thetext>For both opcodes (op_jeq_null, op_jneq_null) the NullTag and UndefinedTag are checked to control the jump. These values differ only in the lowest bit. So, we can use some arithmetic instructions instead of set and compare instruction sequences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297360</commentid>
    <comment_count>1</comment_count>
      <attachid>71421</attachid>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-10-21 04:10:52 -0700</bug_when>
    <thetext>Created attachment 71421
Speed up op_jeq_null and op_jneq_null in JIT

An artificial test says this construct is 1.1x faster on x86 and 1.25x faster on ARM.

SunSpider says nothing on x86, but it is 1.01x faster on ARM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298137</commentid>
    <comment_count>2</comment_count>
      <attachid>71421</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-22 13:11:26 -0700</bug_when>
    <thetext>Comment on attachment 71421
Speed up op_jeq_null and op_jneq_null in JIT

I think we can do better than this.  Currently there&apos;s
        enum { Int32Tag =        0xffffffff };
        enum { CellTag =         0xfffffffe };
        enum { TrueTag =         0xfffffffd };
        enum { FalseTag =        0xfffffffc };
        enum { NullTag =         0xfffffffb };
        enum { UndefinedTag =    0xfffffffa };
        enum { EmptyValueTag =   0xfffffff9 };
        enum { DeletedValueTag = 0xfffffff8 };

If we reorder these as:
        enum { NullTag =         0xfffffffb };
        enum { UndefinedTag =    0xfffffffe };
        enum { Int32Tag =        0xfffffffd };
        enum { CellTag =         0xfffffffc };
        enum { TrueTag =         0xfffffffb };
        enum { FalseTag =        0xfffffffa };
        enum { EmptyValueTag =   0xfffffff9 };
        enum { DeletedValueTag = 0xfffffff8 };

Then we don&apos;t need any bit logic at all, and can replace it with
addJump(branch32(GreaterOrEqual, regT1, Imm32(JSValue::UndefinedTag)), target);

(or whichever is the unsigned &gt;= condition)

Gavin is there any reason this would not work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298145</commentid>
    <comment_count>3</comment_count>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-10-22 13:29:03 -0700</bug_when>
    <thetext>&gt; If we reorder these as:
&gt;         enum { NullTag =         0xfffffffb };

It should be 0xffffffff (not 0xfffffffb)

&gt;         enum { UndefinedTag =    0xfffffffe };
&gt;         enum { Int32Tag =        0xfffffffd };
&gt;         enum { CellTag =         0xfffffffc };
&gt;         enum { TrueTag =         0xfffffffb };
&gt;         enum { FalseTag =        0xfffffffa };
&gt;         enum { EmptyValueTag =   0xfffffff9 };
&gt;         enum { DeletedValueTag = 0xfffffff8 };

Anyway, it looks good to me, but we have to guard it with an ASSERT as well.
eg.: ASSERT(NullTag == 0xffffffff &amp;&amp; UndefinedTag = 0xfffffffe);
or ASSERT(NullTag + 1 == 0 &amp;&amp; UndefinedTag + 1 == NullTag);
Well, not a very nice one, but it is just an ASSERT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298165</commentid>
    <comment_count>4</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-10-22 14:07:20 -0700</bug_when>
    <thetext>&gt;         enum { Int32Tag =        0xffffffff };
&gt;         enum { CellTag =         0xfffffffe };

If my memory seves my correctly a lot of code depend on these two constants.

Perhaps we can move &quot;down&quot; the &quot;undefined&quot; like constants to the end of the list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298167</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-10-22 14:16:06 -0700</bug_when>
    <thetext>You probably want Geoff or Sam to comment on this, not me.  I only remember a reliance on the values of true &amp; false – (false | 1) == true, but there may well be other ordering issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298168</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-22 14:16:49 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt;         enum { Int32Tag =        0xffffffff };
&gt; &gt;         enum { CellTag =         0xfffffffe };
&gt; 
&gt; If my memory seves my correctly a lot of code depend on these two constants.
&gt; 
&gt; Perhaps we can move &quot;down&quot; the &quot;undefined&quot; like constants to the end of the list.

Adding Sam and Geoff as they know the most about these tags.  To my knowledge though there aren&apos;t any real constraints on these values so we could look at maybe making use of these bits in more interesting ways</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298169</commentid>
    <comment_count>7</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-10-22 14:20:29 -0700</bug_when>
    <thetext>If we do sort this, would be nice to get rid of DeletedValueTag.

We don&apos;t use a special tag for this in JSVALUE64 – the value just needs to not be normally possible – e.g. tag = CellTag payload = 1 or -1 should be fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298174</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-22 14:26:28 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt;         enum { Int32Tag =        0xffffffff };
&gt; &gt;         enum { CellTag =         0xfffffffe };
&gt; 
&gt; If my memory seves my correctly a lot of code depend on these two constants.
&gt; 
&gt; Perhaps we can move &quot;down&quot; the &quot;undefined&quot; like constants to the end of the list.

I was going to say we couldn&apos;t do this, and then i forgot why, now i remembered -- the goal i had was to reduce the null + undefined check to a single branch with no additional logic.  If we moved them down rather than up we&apos;d need to do a lower+upper bound check as we currently identify doubles simply by doing a &lt; DeletedValueTag check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298329</commentid>
    <comment_count>9</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-10-22 23:58:20 -0700</bug_when>
    <thetext>&gt; &gt;         enum { Int32Tag =        0xffffffff };

I remember an optimization:

if ((val1.tag() &amp; val2.tag()) == 0xffffffff) -&gt; both are integer.

And CellTag has only one zero bit at the end of the bit stream:

ALWAYS_INLINE JIT::Jump JIT::emitJumpIfBothJSCells(RegisterID reg1, RegisterID reg2, RegisterID scratch)
{
    move(reg1, scratch);
    orPtr(reg2, scratch);
    return emitJumpIfJSCell(scratch);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300052</commentid>
    <comment_count>10</comment_count>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-10-27 01:04:02 -0700</bug_when>
    <thetext>&gt;         enum { NullTag =         0xffffffff };
&gt;         enum { UndefinedTag =    0xfffffffe };
&gt; 
&gt; Then we don&apos;t need any bit logic at all, and can replace it with
&gt; addJump(branch32(GreaterOrEqual, regT1, Imm32(JSValue::UndefinedTag)), target);

I took a closer look into emit_op_jneq_null and emit_op_jeq_null and there is no check for non-double values. Both functions check MasqueradesAsUndefined bit and NullTag or UndefinedTag to determine the source is null (or not). So, this suggestion will not work. Although we can insert an unsigned comparison to the LowestTag to check for double, but this case will add new comparisons which will influence the execution speed in different ways for different control flow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300159</commentid>
    <comment_count>11</comment_count>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-10-27 05:58:33 -0700</bug_when>
    <thetext>Ohh, the GreaterThanOrEqual comment misled me. No more comparison is needed (ignore my last comment). The patch is coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300163</commentid>
    <comment_count>12</comment_count>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-10-27 06:08:25 -0700</bug_when>
    <thetext>&gt; ALWAYS_INLINE JIT::Jump JIT::emitJumpIfBothJSCells(RegisterID reg1, RegisterID reg2, RegisterID scratch)

It was used by JSValue32 which is obsolete now. So, it can be safely removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300171</commentid>
    <comment_count>13</comment_count>
      <attachid>72025</attachid>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-10-27 06:21:59 -0700</bug_when>
    <thetext>Created attachment 72025
Speed up op_jeq_null and op_jneq_null in JIT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300172</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-27 06:23:11 -0700</bug_when>
    <thetext>Attachment 72025 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/jit/JITOpcodes32_64.cpp:926:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
JavaScriptCore/jit/JITOpcodes32_64.cpp:950:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300175</commentid>
    <comment_count>15</comment_count>
      <attachid>72026</attachid>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-10-27 06:37:52 -0700</bug_when>
    <thetext>Created attachment 72026
Speed up op_jeq_null and op_jneq_null in JIT

Style issue is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300291</commentid>
    <comment_count>16</comment_count>
      <attachid>72026</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-27 09:49:28 -0700</bug_when>
    <thetext>Comment on attachment 72026
Speed up op_jeq_null and op_jneq_null in JIT

Do you have any performance numbers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300481</commentid>
    <comment_count>17</comment_count>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-10-27 12:54:48 -0700</bug_when>
    <thetext>&gt; Do you have any performance numbers?

Same as above (on ARM):
Artificial test for j[n]?eq_null: 1.25x faster
SunSpider: 1.01x faster
  Nonrelated tests are faster, for example:
    nsieve-bits: 1.027x faster
    cordic: 1.053x faster
  No other significant change. There is no significant slowdown.

I am pretty sure that the benchmarks do not hit these cases very often.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300483</commentid>
    <comment_count>18</comment_count>
      <attachid>72026</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-27 12:56:32 -0700</bug_when>
    <thetext>Comment on attachment 72026
Speed up op_jeq_null and op_jneq_null in JIT

can we do similar for x86_64?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300514</commentid>
    <comment_count>19</comment_count>
      <attachid>72026</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-27 13:32:32 -0700</bug_when>
    <thetext>Comment on attachment 72026
Speed up op_jeq_null and op_jneq_null in JIT

Clearing flags on attachment: 72026

Committed r70699: &lt;http://trac.webkit.org/changeset/70699&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300515</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-27 13:32:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300519</commentid>
    <comment_count>21</comment_count>
    <who name="Gabor Loki">loki</who>
    <bug_when>2010-10-27 13:39:48 -0700</bug_when>
    <thetext>(JSValue32_64 on x86)
The same artificial test: 1.12x as fast
SunSpider still says nothing overall.
  3d-cude: 1.025x as fast
  base64: 1.019x as fast
  fasta: 1.011x as fast
  tagcloud: 1.005x as fast
  unpack-code: 1.004x as slow
No other significant change.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71421</attachid>
            <date>2010-10-21 04:10:52 -0700</date>
            <delta_ts>2010-10-27 06:21:59 -0700</delta_ts>
            <desc>Speed up op_jeq_null and op_jneq_null in JIT</desc>
            <filename>0001-Speed-up-op_jeq_null-and-op_jneq_null.patch</filename>
            <type>text/plain</type>
            <size>2667</size>
            <attacher name="Gabor Loki">loki</attacher>
            
              <data encoding="base64">RnJvbSAwOTQ1Yzg2ZGY4OWJlMTU2MzNmMzZlZjMyYjQ3MjFkNjA5MGE1YzQ1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHYWJvciBMb2tpIDxsb2tpQGluZi51LXN6ZWdlZC5odT4KRGF0
ZTogVGh1LCAyMSBPY3QgMjAxMCAxMzowMzoyNiArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIFNwZWVk
IHVwIG9wX2plcV9udWxsIGFuZCBvcF9qbmVxX251bGwuCgpTaWduZWQtb2ZmLWJ5OiBHYWJvciBM
b2tpIDxsb2tpQGluZi51LXN6ZWdlZC5odT4KLS0tCiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICB8ICAgMTUgKysrKysrKysrKysrKysrCiBKYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcCB8ICAgMTQgKysrKysrLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdl
ZCwgMjEgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggOTViZjQ3
NS4uYmM5ZGM4NCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEwLTEwLTIxICBHYWJv
ciBMb2tpICA8bG9raUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00ODA2MAorICAgICAgICBTcGVlZCB1cCBvcF9qZXFfbnVsbCBhbmQgb3Bfam5lcV9udWxsLgor
CisgICAgICAgIEZvciBib3RoIG9wY29kZXMgdGhlIE51bGxUYWcgYW5kIFVuZGVmaW5lZFRhZyBh
cmUgY2hlY2tlZCB0byBjb250cm9sIHRoZQorICAgICAgICBqdW1wLiBUaGVzZSB2YWx1ZXMgZGlm
ZmVyIG9ubHkgaW4gdGhlIGxvd2VzdCBiaXQuIFNvLCB3ZSBjYW4gdXNlIHNvbWUKKyAgICAgICAg
YXJpdGhtZXRpYyBpbnN0cnVjdGlvbnMgaW5zdGVhZCBvZiBzZXQgYW5kIGNvbXBhcmUgaW5zdHJ1
Y3Rpb24gc2VxdWVuY2VzLgorCisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9qbmVxX251bGwpOgorCiAyMDEwLTEwLTIwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgRUZMIGJ1aWxkLgpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCBjM2I3YWMyLi40ODgzYzQ4IDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtOTIzLDExICs5MjMsMTAgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICAvLyBOb3cgaGFuZGxlIHRoZSBpbW1lZGlhdGUgY2FzZXMgLSB1bmRlZmluZWQgJiBudWxs
CiAgICAgaXNJbW1lZGlhdGUubGluayh0aGlzKTsKIAotICAgIHNldDMyKEVxdWFsLCByZWdUMSwg
SW1tMzIoSlNWYWx1ZTo6TnVsbFRhZyksIHJlZ1QyKTsKLSAgICBzZXQzMihFcXVhbCwgcmVnVDEs
IEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHJlZ1QxKTsKLSAgICBvcjMyKHJlZ1QyLCBy
ZWdUMSk7CisgICAgQVNTRVJUKChKU1ZhbHVlOjpOdWxsVGFnIF4gSlNWYWx1ZTo6VW5kZWZpbmVk
VGFnKSA9PSAweDEpOworICAgIG9yMzIoSW1tMzIoMHgxKSwgcmVnVDEpOwogCi0gICAgYWRkSnVt
cChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDEpLCB0YXJnZXQpOworICAgIGFkZEp1bXAoYnJh
bmNoMzIoRXF1YWwsIHJlZ1QxLCBJbW0zMihKU1ZhbHVlOjpOdWxsVGFnIHwgSlNWYWx1ZTo6VW5k
ZWZpbmVkVGFnKSksIHRhcmdldCk7CiAKICAgICB3YXNOb3RJbW1lZGlhdGUubGluayh0aGlzKTsK
IH0KQEAgLTk1MCwxMSArOTQ5LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfbnVsbChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIC8vIE5vdyBoYW5kbGUgdGhlIGltbWVk
aWF0ZSBjYXNlcyAtIHVuZGVmaW5lZCAmIG51bGwKICAgICBpc0ltbWVkaWF0ZS5saW5rKHRoaXMp
OwogCi0gICAgc2V0MzIoRXF1YWwsIHJlZ1QxLCBJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSwgcmVn
VDIpOwotICAgIHNldDMyKEVxdWFsLCByZWdUMSwgSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFn
KSwgcmVnVDEpOwotICAgIG9yMzIocmVnVDIsIHJlZ1QxKTsKKyAgICBBU1NFUlQoKEpTVmFsdWU6
Ok51bGxUYWcgXiBKU1ZhbHVlOjpVbmRlZmluZWRUYWcpID09IDB4MSk7CisgICAgb3IzMihJbW0z
MigweDEpLCByZWdUMSk7CiAKLSAgICBhZGRKdW1wKGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMSks
IHRhcmdldCk7CisgICAgYWRkSnVtcChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIEltbTMyKEpT
VmFsdWU6Ok51bGxUYWcgfCBKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKSwgdGFyZ2V0KTsKIAogICAg
IHdhc05vdEltbWVkaWF0ZS5saW5rKHRoaXMpOwogfQotLSAKMS43LjAuNAoK
</data>
<flag name="review"
          id="61464"
          type_id="1"
          status="-"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="61465"
          type_id="3"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72025</attachid>
            <date>2010-10-27 06:21:59 -0700</date>
            <delta_ts>2010-10-27 06:37:52 -0700</delta_ts>
            <desc>Speed up op_jeq_null and op_jneq_null in JIT</desc>
            <filename>0001-Speed-up-op_jeq_null-and-op_jneq_null.patch</filename>
            <type>text/plain</type>
            <size>3713</size>
            <attacher name="Gabor Loki">loki</attacher>
            
              <data encoding="base64">RnJvbSA1ZDIwNTFlNjIwYWFmYWFkMDZmNjM4ZGRiYTgxNDg2ZmY1Yjc0M2FiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHYWJvciBMb2tpIDxsb2tpQGluZi51LXN6ZWdlZC5odT4KRGF0
ZTogV2VkLCAyNyBPY3QgMjAxMCAxNToxOTowOSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIFNwZWVk
IHVwIG9wX2plcV9udWxsIGFuZCBvcF9qbmVxX251bGwuCgpTaWduZWQtb2ZmLWJ5OiBHYWJvciBM
b2tpIDxsb2tpQGluZi51LXN6ZWdlZC5odT4KLS0tCiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICB8ICAgMTcgKysrKysrKysrKysrKysrKysKIEphdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwIHwgICAxNCArKysrLS0tLS0tLS0tLQogSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmggICAgICAgfCAgIDEyICsrKysrKy0tLS0tLQogMyBmaWxlcyBj
aGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTk1YzBkMy4uYTk2YWE2ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTEwLTI3
ICBHYWJvciBMb2tpICA8bG9raUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODA2MAorICAgICAgICBTcGVlZCB1cCBvcF9qZXFfbnVsbCBhbmQgb3Bfam5lcV9u
dWxsLgorCisgICAgICAgIEZvciBib3RoIG9wY29kZXMgdGhlIE51bGxUYWcgYW5kIFVuZGVmaW5l
ZFRhZyBhcmUgY2hlY2tlZCB0byBjb250cm9sIHRoZQorICAgICAgICBqdW1wLiBUaGVzZSB2YWx1
ZXMgY2FuIGJlIHNpbXBseSBjaGVja2VkIGJ5IEFib3ZlT3JFcXVhbCBvciBCZWxvdworICAgICAg
ICBjb25kaXRpb24gaWYgdGhleSBhcmUgdGhlIHR3byBoaWdoZXN0IHVuc2lnbmVkIGludGVnZXJz
IGZyb20gSlNWYWx1ZSdzCisgICAgICAgIFRhZyBmaWVsZC4KKworICAgICAgICAqIGppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251bGwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKiBydW50aW1l
L0pTVmFsdWUuaDoKKwogMjAxMC0xMC0yNiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIEludGVycHJldGVyIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKaW5kZXggYzNiN2FjMi4uMTFiZmFmYSAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTkyMywxMSArOTIzLDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfamVxX251bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAvLyBOb3cg
aGFuZGxlIHRoZSBpbW1lZGlhdGUgY2FzZXMgLSB1bmRlZmluZWQgJiBudWxsCiAgICAgaXNJbW1l
ZGlhdGUubGluayh0aGlzKTsKIAotICAgIHNldDMyKEVxdWFsLCByZWdUMSwgSW1tMzIoSlNWYWx1
ZTo6TnVsbFRhZyksIHJlZ1QyKTsKLSAgICBzZXQzMihFcXVhbCwgcmVnVDEsIEltbTMyKEpTVmFs
dWU6OlVuZGVmaW5lZFRhZyksIHJlZ1QxKTsKLSAgICBvcjMyKHJlZ1QyLCByZWdUMSk7Ci0KLSAg
ICBhZGRKdW1wKGJyYW5jaFRlc3QzMihOb25aZXJvLCByZWdUMSksIHRhcmdldCk7CisgICAgQVNT
RVJUKEpTVmFsdWU6OlVuZGVmaW5lZFRhZyArIDEgPT0gSlNWYWx1ZTo6TnVsbFRhZyAmJiBKU1Zh
bHVlOjpOdWxsVGFnICsgMSA9PSAwKTsKKyAgICBhZGRKdW1wKGJyYW5jaDMyKEFib3ZlT3JFcXVh
bCwgcmVnVDEsIEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZykpLCB0YXJnZXQpOwogCiAgICAg
d2FzTm90SW1tZWRpYXRlLmxpbmsodGhpcyk7CiB9CkBAIC05NTAsMTEgKzk0Nyw4IEBAIHZvaWQg
SklUOjplbWl0X29wX2puZXFfbnVsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIC8vIE5vdyBoYW5kbGUgdGhlIGltbWVkaWF0ZSBjYXNlcyAtIHVuZGVmaW5lZCAmIG51bGwK
ICAgICBpc0ltbWVkaWF0ZS5saW5rKHRoaXMpOwogCi0gICAgc2V0MzIoRXF1YWwsIHJlZ1QxLCBJ
bW0zMihKU1ZhbHVlOjpOdWxsVGFnKSwgcmVnVDIpOwotICAgIHNldDMyKEVxdWFsLCByZWdUMSwg
SW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVnVDEpOwotICAgIG9yMzIocmVnVDIsIHJl
Z1QxKTsKLQotICAgIGFkZEp1bXAoYnJhbmNoVGVzdDMyKFplcm8sIHJlZ1QxKSwgdGFyZ2V0KTsK
KyAgICBBU1NFUlQoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnICsgMSA9PSBKU1ZhbHVlOjpOdWxsVGFn
ICYmIEpTVmFsdWU6Ok51bGxUYWcgKyAxID09IDApOworICAgIGFkZEp1bXAoYnJhbmNoMzIoQmVs
b3csIHJlZ1QxLCBJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKSwgdGFyZ2V0KTsKIAogICAg
IHdhc05vdEltbWVkaWF0ZS5saW5rKHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaApp
bmRleCAwNTYwYmMwLi41ZTU5ZTA3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaApAQCAtMjIz
LDEyICsyMjMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KiBzeW50aGVz
aXplT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAg
ICAgICAgZW51bSB7IEludDMyVGFnID0gICAgICAgIDB4ZmZmZmZmZmYgfTsKLSAgICAgICAgZW51
bSB7IENlbGxUYWcgPSAgICAgICAgIDB4ZmZmZmZmZmUgfTsKLSAgICAgICAgZW51bSB7IFRydWVU
YWcgPSAgICAgICAgIDB4ZmZmZmZmZmQgfTsKLSAgICAgICAgZW51bSB7IEZhbHNlVGFnID0gICAg
ICAgIDB4ZmZmZmZmZmMgfTsKLSAgICAgICAgZW51bSB7IE51bGxUYWcgPSAgICAgICAgIDB4ZmZm
ZmZmZmIgfTsKLSAgICAgICAgZW51bSB7IFVuZGVmaW5lZFRhZyA9ICAgIDB4ZmZmZmZmZmEgfTsK
KyAgICAgICAgZW51bSB7IE51bGxUYWcgPSAgICAgICAgIDB4ZmZmZmZmZmYgfTsKKyAgICAgICAg
ZW51bSB7IFVuZGVmaW5lZFRhZyA9ICAgIDB4ZmZmZmZmZmUgfTsKKyAgICAgICAgZW51bSB7IElu
dDMyVGFnID0gICAgICAgIDB4ZmZmZmZmZmQgfTsKKyAgICAgICAgZW51bSB7IENlbGxUYWcgPSAg
ICAgICAgIDB4ZmZmZmZmZmMgfTsKKyAgICAgICAgZW51bSB7IFRydWVUYWcgPSAgICAgICAgIDB4
ZmZmZmZmZmIgfTsKKyAgICAgICAgZW51bSB7IEZhbHNlVGFnID0gICAgICAgIDB4ZmZmZmZmZmEg
fTsKICAgICAgICAgZW51bSB7IEVtcHR5VmFsdWVUYWcgPSAgIDB4ZmZmZmZmZjkgfTsKICAgICAg
ICAgZW51bSB7IERlbGV0ZWRWYWx1ZVRhZyA9IDB4ZmZmZmZmZjggfTsKICAgICAgICAgCi0tIAox
LjcuMC40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72026</attachid>
            <date>2010-10-27 06:37:52 -0700</date>
            <delta_ts>2010-10-27 13:32:32 -0700</delta_ts>
            <desc>Speed up op_jeq_null and op_jneq_null in JIT</desc>
            <filename>0001-Speed-up-op_jeq_null-and-op_jneq_null.patch</filename>
            <type>text/plain</type>
            <size>3713</size>
            <attacher name="Gabor Loki">loki</attacher>
            
              <data encoding="base64">RnJvbSA4NDdjNjliZjZhODFmNTAwYTQ0YzM4ODYwODBjMzUxMWU0YmEzNjU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHYWJvciBMb2tpIDxsb2tpQGluZi51LXN6ZWdlZC5odT4KRGF0
ZTogV2VkLCAyNyBPY3QgMjAxMCAxNTozMzoxOSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIFNwZWVk
IHVwIG9wX2plcV9udWxsIGFuZCBvcF9qbmVxX251bGwuCgpTaWduZWQtb2ZmLWJ5OiBHYWJvciBM
b2tpIDxsb2tpQGluZi51LXN6ZWdlZC5odT4KLS0tCiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICB8ICAgMTcgKysrKysrKysrKysrKysrKysKIEphdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwIHwgICAxNCArKysrLS0tLS0tLS0tLQogSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmggICAgICAgfCAgIDEyICsrKysrKy0tLS0tLQogMyBmaWxlcyBj
aGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTk1YzBkMy4uYTk2YWE2ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTEwLTI3
ICBHYWJvciBMb2tpICA8bG9raUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODA2MAorICAgICAgICBTcGVlZCB1cCBvcF9qZXFfbnVsbCBhbmQgb3Bfam5lcV9u
dWxsLgorCisgICAgICAgIEZvciBib3RoIG9wY29kZXMgdGhlIE51bGxUYWcgYW5kIFVuZGVmaW5l
ZFRhZyBhcmUgY2hlY2tlZCB0byBjb250cm9sIHRoZQorICAgICAgICBqdW1wLiBUaGVzZSB2YWx1
ZXMgY2FuIGJlIHNpbXBseSBjaGVja2VkIGJ5IEFib3ZlT3JFcXVhbCBvciBCZWxvdworICAgICAg
ICBjb25kaXRpb24gaWYgdGhleSBhcmUgdGhlIHR3byBoaWdoZXN0IHVuc2lnbmVkIGludGVnZXJz
IGZyb20gSlNWYWx1ZSdzCisgICAgICAgIFRhZyBmaWVsZC4KKworICAgICAgICAqIGppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251bGwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKiBydW50aW1l
L0pTVmFsdWUuaDoKKwogMjAxMC0xMC0yNiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIEludGVycHJldGVyIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKaW5kZXggYzNiN2FjMi4uOGY0N2JmNyAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTkyMywxMSArOTIzLDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfamVxX251bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAvLyBOb3cg
aGFuZGxlIHRoZSBpbW1lZGlhdGUgY2FzZXMgLSB1bmRlZmluZWQgJiBudWxsCiAgICAgaXNJbW1l
ZGlhdGUubGluayh0aGlzKTsKIAotICAgIHNldDMyKEVxdWFsLCByZWdUMSwgSW1tMzIoSlNWYWx1
ZTo6TnVsbFRhZyksIHJlZ1QyKTsKLSAgICBzZXQzMihFcXVhbCwgcmVnVDEsIEltbTMyKEpTVmFs
dWU6OlVuZGVmaW5lZFRhZyksIHJlZ1QxKTsKLSAgICBvcjMyKHJlZ1QyLCByZWdUMSk7Ci0KLSAg
ICBhZGRKdW1wKGJyYW5jaFRlc3QzMihOb25aZXJvLCByZWdUMSksIHRhcmdldCk7CisgICAgQVNT
RVJUKChKU1ZhbHVlOjpVbmRlZmluZWRUYWcgKyAxID09IEpTVmFsdWU6Ok51bGxUYWcpICYmICEo
SlNWYWx1ZTo6TnVsbFRhZyArIDEpKTsKKyAgICBhZGRKdW1wKGJyYW5jaDMyKEFib3ZlT3JFcXVh
bCwgcmVnVDEsIEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZykpLCB0YXJnZXQpOwogCiAgICAg
d2FzTm90SW1tZWRpYXRlLmxpbmsodGhpcyk7CiB9CkBAIC05NTAsMTEgKzk0Nyw4IEBAIHZvaWQg
SklUOjplbWl0X29wX2puZXFfbnVsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIC8vIE5vdyBoYW5kbGUgdGhlIGltbWVkaWF0ZSBjYXNlcyAtIHVuZGVmaW5lZCAmIG51bGwK
ICAgICBpc0ltbWVkaWF0ZS5saW5rKHRoaXMpOwogCi0gICAgc2V0MzIoRXF1YWwsIHJlZ1QxLCBJ
bW0zMihKU1ZhbHVlOjpOdWxsVGFnKSwgcmVnVDIpOwotICAgIHNldDMyKEVxdWFsLCByZWdUMSwg
SW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVnVDEpOwotICAgIG9yMzIocmVnVDIsIHJl
Z1QxKTsKLQotICAgIGFkZEp1bXAoYnJhbmNoVGVzdDMyKFplcm8sIHJlZ1QxKSwgdGFyZ2V0KTsK
KyAgICBBU1NFUlQoKEpTVmFsdWU6OlVuZGVmaW5lZFRhZyArIDEgPT0gSlNWYWx1ZTo6TnVsbFRh
ZykgJiYgIShKU1ZhbHVlOjpOdWxsVGFnICsgMSkpOworICAgIGFkZEp1bXAoYnJhbmNoMzIoQmVs
b3csIHJlZ1QxLCBJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKSwgdGFyZ2V0KTsKIAogICAg
IHdhc05vdEltbWVkaWF0ZS5saW5rKHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaApp
bmRleCAwNTYwYmMwLi41ZTU5ZTA3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaApAQCAtMjIz
LDEyICsyMjMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KiBzeW50aGVz
aXplT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAg
ICAgICAgZW51bSB7IEludDMyVGFnID0gICAgICAgIDB4ZmZmZmZmZmYgfTsKLSAgICAgICAgZW51
bSB7IENlbGxUYWcgPSAgICAgICAgIDB4ZmZmZmZmZmUgfTsKLSAgICAgICAgZW51bSB7IFRydWVU
YWcgPSAgICAgICAgIDB4ZmZmZmZmZmQgfTsKLSAgICAgICAgZW51bSB7IEZhbHNlVGFnID0gICAg
ICAgIDB4ZmZmZmZmZmMgfTsKLSAgICAgICAgZW51bSB7IE51bGxUYWcgPSAgICAgICAgIDB4ZmZm
ZmZmZmIgfTsKLSAgICAgICAgZW51bSB7IFVuZGVmaW5lZFRhZyA9ICAgIDB4ZmZmZmZmZmEgfTsK
KyAgICAgICAgZW51bSB7IE51bGxUYWcgPSAgICAgICAgIDB4ZmZmZmZmZmYgfTsKKyAgICAgICAg
ZW51bSB7IFVuZGVmaW5lZFRhZyA9ICAgIDB4ZmZmZmZmZmUgfTsKKyAgICAgICAgZW51bSB7IElu
dDMyVGFnID0gICAgICAgIDB4ZmZmZmZmZmQgfTsKKyAgICAgICAgZW51bSB7IENlbGxUYWcgPSAg
ICAgICAgIDB4ZmZmZmZmZmMgfTsKKyAgICAgICAgZW51bSB7IFRydWVUYWcgPSAgICAgICAgIDB4
ZmZmZmZmZmIgfTsKKyAgICAgICAgZW51bSB7IEZhbHNlVGFnID0gICAgICAgIDB4ZmZmZmZmZmEg
fTsKICAgICAgICAgZW51bSB7IEVtcHR5VmFsdWVUYWcgPSAgIDB4ZmZmZmZmZjkgfTsKICAgICAg
ICAgZW51bSB7IERlbGV0ZWRWYWx1ZVRhZyA9IDB4ZmZmZmZmZjggfTsKICAgICAgICAgCi0tIAox
LjcuMC40Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>