<?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>133952</bug_id>
          
          <creation_ts>2014-06-16 14:27:23 -0700</creation_ts>
          <short_desc>fix css jit register usage on armv7</short_desc>
          <delta_ts>2014-06-17 10:50:34 -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>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>
          
          <blocked>133961</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1015960</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-16 14:27:23 -0700</bug_when>
    <thetext>I did a few things wrong with registers on armv7 in the css jit.  This not only passes the tests, but it doesn&apos;t crash when running https://www.webkit.org/blog-files/css-jit-introduction/html5-single-page-microbenchmark.html

Also, I&apos;m not sure that my register allocation in modulo for arm64 and armv7 is counted correctly.  Does this need to be changed somewhere, too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015962</commentid>
    <comment_count>1</comment_count>
      <attachid>233180</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-16 14:31:59 -0700</bug_when>
    <thetext>Created attachment 233180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016025</commentid>
    <comment_count>2</comment_count>
      <attachid>233180</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-06-16 17:45:58 -0700</bug_when>
    <thetext>Comment on attachment 233180
Patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1423
&gt; -        load32(left, dataTempRegister);
&gt; -        return branch32(cond, dataTempRegister, right);
&gt; +        // use addressTempRegister incase the branch32 we call uses dataTempRegister. :-/
&gt; +        load32(left, addressTempRegister);
&gt; +        return branch32(cond, addressTempRegister, right);

I don&apos;t get this. We know exactly which branch32() we want to use (Jump branch32(RelationalCondition cond, RegisterID left, RegisterID right)). What am I missing?

&gt; Source/WebCore/cssjit/SelectorCompiler.cpp:1096
&gt; +    // r6 is tempRegister in RegisterAllocator.h and addressTempRegister in MacroAssemblerARMv7.h and must be preserved by the callee.
&gt; +    prologueRegisters.append(JSC::ARMRegisters::r6);

I did not think of that. One more reason I hate the registers implicitly used by the MacroAssembler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016075</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-16 22:58:44 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 233180 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=233180&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1423
&gt; &gt; -        load32(left, dataTempRegister);
&gt; &gt; -        return branch32(cond, dataTempRegister, right);
&gt; &gt; +        // use addressTempRegister incase the branch32 we call uses dataTempRegister. :-/
&gt; &gt; +        load32(left, addressTempRegister);
&gt; &gt; +        return branch32(cond, addressTempRegister, right);
&gt; 
&gt; I don&apos;t get this. We know exactly which branch32() we want to use (Jump branch32(RelationalCondition cond, RegisterID left, RegisterID right)). What am I missing?
I think you&apos;re right.  I&apos;ll test it in the morning without this change.  For some reason I though it was necessary, but now I&apos;m not sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016162</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-17 10:47:10 -0700</bug_when>
    <thetext>I confirmed that branchPtr is used and works without this change, so I&apos;m committing the non-JavaScriptCore part of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016165</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2014-06-17 10:50:34 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/170059</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233180</attachid>
            <date>2014-06-16 14:31:59 -0700</date>
            <delta_ts>2014-06-16 17:45:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133952-20140616143136.patch</filename>
            <type>text/plain</type>
            <size>5020</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwMDI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE0LTA2LTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgRml4IGNzcyBqaXQgcmVnaXN0ZXIgdXNhZ2Ugb24gYXJtdjcuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM5NTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJy
YW5jaFB0cik6CisgICAgICAgIFVzZSBhZGRyZXNzVGVtcFJlZ2lzdGVyIGluc3RlYWQgb2YgZGF0
YVRlbXBSZWdpc3RlciBsaWtlIHRoZSBvdGhlciBicmFuY2hlcy4KKwogMjAxNC0wNi0xNiAgSnVl
cmdlbiBSaWJ1dHprYSAgPGp1ZXJnZW5AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSB0aGUg
b3JkZXIgb2YgdGhlIGFsaWFzIGFuYWx5c2lzIHBhc3NlcyB0byBhbGlnbiB3aXRoIHRoZSBvcHQg
cGlwZWxpbmUgb2YgTExWTQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHJldmlzaW9uIDE2OTk1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDE4LDggKzE0MTgsOSBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5j
aFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBSZWdpc3RlcklE
IHJpZ2h0KQogICAgIHsKLSAgICAgICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwot
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQpOwor
ICAgICAgICAvLyB1c2UgYWRkcmVzc1RlbXBSZWdpc3RlciBpbmNhc2UgdGhlIGJyYW5jaDMyIHdl
IGNhbGwgdXNlcyBkYXRhVGVtcFJlZ2lzdGVyLiA6LS8KKyAgICAgICAgbG9hZDMyKGxlZnQsIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgYWRkcmVz
c1RlbXBSZWdpc3RlciwgcmlnaHQpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwMDI3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDYtMTYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXggY3NzIGpp
dCByZWdpc3RlciB1c2FnZSBvbiBhcm12Ny4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMzk1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogY3Nzaml0L1JlZ2lzdGVyQWxsb2NhdG9yLmg6CisgICAgICAg
IExpc3QgcjcgYXMgYSBjYWxsZWUgc2F2ZWQgcmVnaXN0ZXIsIHdoaWNoIGl0IGlzLgorICAgICAg
ICAqIGNzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVQcm9sb2d1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlRXBpbG9ndWUpOgorICAgICAgICBTYXZlIHI2LCB3aGljaCBpcyB1c2VkIGFzIGEg
dGVtcG9yYXJ5IHJlZ2lzdGVyIGFuZCBtdXN0IGJlIHByZXNlcnZlZC4KKwogMjAxNC0wNi0xNiAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZC4gQWRkIG1vcmUgR1N0cmVhbWVyLXNwZWNpZmljIGhlYWRlciBuYW1lcyB0aGF0IGFyZSByZXF1
aXJlZApJbmRleDogU291cmNlL1dlYkNvcmUvY3Nzaml0L1JlZ2lzdGVyQWxsb2NhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nzaml0L1JlZ2lzdGVyQWxsb2NhdG9yLmgJKHJl
dmlzaW9uIDE2OTk1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9SZWdpc3RlckFsbG9jYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMyArNjIsMTQgQEAgc3RhdGljIGNvbnN0IEpTQzo6
TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdAogICAgIEpTQzo6QVJNUmVnaXN0ZXJzOjpyMSwKICAgICBK
U0M6OkFSTVJlZ2lzdGVyczo6cjIsCiAgICAgSlNDOjpBUk1SZWdpc3RlcnM6OnIzLAotICAgIEpT
Qzo6QVJNUmVnaXN0ZXJzOjpyNywgLy8gcjcgaXMgZnAsIGFuZCBpdCdzIHB1c2hlZCBpbiB0aGUg
cHJvbG9ndWUgYW5kIHBvcHBlZCBpbiB0aGUgZXBpbG9ndWUgc28gd2UgY2FuIHVzZSBpdCB3aXRo
b3V0IHNhdmluZyBpdCBhcyBsb25nIGFzIHdlIGhhdmUgYSBwcm9sb2d1ZS4KIH07CiBzdGF0aWMg
Y29uc3QgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjYWxsZWVTYXZlZFJlZ2lzdGVy
c1tdID0gewogICAgIEpTQzo6QVJNUmVnaXN0ZXJzOjpyNCwKICAgICBKU0M6OkFSTVJlZ2lzdGVy
czo6cjUsCisgICAgSlNDOjpBUk1SZWdpc3RlcnM6OnI3LAogfTsKLXN0YXRpYyBjb25zdCBKU0M6
Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHRlbXBSZWdpc3RlciA9IEpTQzo6QVJNUmVnaXN0
ZXJzOjpyMTI7IC8vIGlwCisvLyByNiBpcyBhbHNvIHVzZWQgYXMgYWRkcmVzc1RlbXBSZWdpc3Rl
ciBpbiB0aGUgbWFjcm8gYXNzZW1ibGVyLiBJdCBpcyBzYXZlZCBpbiB0aGUgcHJvbG9ndWUgYW5k
IHJlc3RvcmVkIGluIHRoZSBlcGlsb2d1ZS4KK3N0YXRpYyBjb25zdCBKU0M6Ok1hY3JvQXNzZW1i
bGVyOjpSZWdpc3RlcklEIHRlbXBSZWdpc3RlciA9IEpTQzo6QVJNUmVnaXN0ZXJzOjpyNjsKICNl
bGlmIENQVShYODZfNjQpCiBzdGF0aWMgY29uc3QgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0
ZXJJRCBjYWxsZXJTYXZlZFJlZ2lzdGVyc1tdID0gewogICAgIEpTQzo6WDg2UmVnaXN0ZXJzOjpl
YXgsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCShy
ZXZpc2lvbiAxNjk5NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOTIsNyArMTA5Miw4IEBAIGlubGluZSBib29sIFNl
bGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXIKICNlbGlmIENQVShBUk1fVEhVTUIyKQogICAgIFZl
Y3RvcjxKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklELCAyPiBwcm9sb2d1ZVJlZ2lzdGVy
czsKICAgICBwcm9sb2d1ZVJlZ2lzdGVycy5hcHBlbmQoSlNDOjpBUk1SZWdpc3RlcnM6OmxyKTsK
LSAgICBwcm9sb2d1ZVJlZ2lzdGVycy5hcHBlbmQoSlNDOjpBUk1SZWdpc3RlcnM6OmZwKTsgLy8g
ZnAgaXMgdXNlZCBhcyBhIGNhbGxlciBzYXZlZCByZWdpc3RlciBiZWNhdXNlIHdlIGFsd2F5cyBo
YXZlIGEgcHJvbG9ndWUgZm9yIG5vdy4KKyAgICAvLyByNiBpcyB0ZW1wUmVnaXN0ZXIgaW4gUmVn
aXN0ZXJBbGxvY2F0b3IuaCBhbmQgYWRkcmVzc1RlbXBSZWdpc3RlciBpbiBNYWNyb0Fzc2VtYmxl
ckFSTXY3LmggYW5kIG11c3QgYmUgcHJlc2VydmVkIGJ5IHRoZSBjYWxsZWUuCisgICAgcHJvbG9n
dWVSZWdpc3RlcnMuYXBwZW5kKEpTQzo6QVJNUmVnaXN0ZXJzOjpyNik7CiAgICAgbV9wcm9sb2d1
ZVN0YWNrUmVmZXJlbmNlcyA9IG1fc3RhY2tBbGxvY2F0b3IucHVzaChwcm9sb2d1ZVJlZ2lzdGVy
cyk7CiAgICAgcmV0dXJuIHRydWU7CiAjZWxpZiBDUFUoWDg2XzY0KSAmJiBDU1NfU0VMRUNUT1Jf
SklUX0RFQlVHR0lORwpAQCAtMTExNCw3ICsxMTE1LDcgQEAgaW5saW5lIHZvaWQgU2VsZWN0b3JD
b2RlR2VuZXJhdG9yOjpnZW5lcgogI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgVmVjdG9yPEpT
Qzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQsIDI+IHByb2xvZ3VlUmVnaXN0ZXJzOwogICAg
IHByb2xvZ3VlUmVnaXN0ZXJzLmFwcGVuZChKU0M6OkFSTVJlZ2lzdGVyczo6bHIpOwotICAgIHBy
b2xvZ3VlUmVnaXN0ZXJzLmFwcGVuZChKU0M6OkFSTVJlZ2lzdGVyczo6ZnApOworICAgIHByb2xv
Z3VlUmVnaXN0ZXJzLmFwcGVuZChKU0M6OkFSTVJlZ2lzdGVyczo6cjYpOwogICAgIG1fc3RhY2tB
bGxvY2F0b3IucG9wKG1fcHJvbG9ndWVTdGFja1JlZmVyZW5jZXMsIHByb2xvZ3VlUmVnaXN0ZXJz
KTsKICNlbGlmIENQVShYODZfNjQpICYmIENTU19TRUxFQ1RPUl9KSVRfREVCVUdHSU5HCiAgICAg
VmVjdG9yPEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQsIDE+IHByb2xvZ3VlUmVnaXN0
ZXI7Cg==
</data>
<flag name="review"
          id="257670"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>