<?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>141903</bug_id>
          
          <creation_ts>2015-02-23 05:45:14 -0800</creation_ts>
          <short_desc>Add calleeSaveRegisters() implementation for ARM Traditional</short_desc>
          <delta_ts>2015-02-26 01:20:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>108645</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Csaba Osztrogonác">ossy</reporter>
          <assigned_to name="Csaba Osztrogonác">ossy</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1071176</commentid>
    <comment_count>0</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-23 05:45:14 -0800</bug_when>
    <thetext>Add calleeSaveRegisters() implementation for ARM Traditional</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071177</commentid>
    <comment_count>1</comment_count>
      <attachid>247112</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-23 05:45:28 -0800</bug_when>
    <thetext>Created attachment 247112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071178</commentid>
    <comment_count>2</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-23 06:00:00 -0800</bug_when>
    <thetext>AAPCS (http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042e/IHI0042E_aapcs.pdf) says that r4-r11 are callee-saved registers,
only the role of r9 isn&apos;t clear.

&quot;The role of register r9 is platform specific. A virtual platform may assign
any role to this register and must document this usage. For example, it may
designate it as the static base (SB) in a position-independent data model,
or it may designate it as the thread register (TR) in an environment with
thread-local storage. The usage of this register may require that the value
held is persistent across all calls. A virtual platform that has no need for
such a special register may designate r9 as an additional callee-saved variable
register, v6.&quot;

But it seems GCC ARM EABI handles r9 as callee-saved register:
https://github.com/gcc-mirror/gcc/blob/master/gcc/config/arm/arm.h#L775

I checked some disassembly of example codes and JSC too,
and can confirm that r4-r11 registers are callee-saved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071180</commentid>
    <comment_count>3</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-23 06:13:21 -0800</bug_when>
    <thetext>You omitted the fp/r7 from ARM Thumb2 callee-saved register list:
http://trac.webkit.org/browser/trunk/Source/JavaScriptCore/jit/RegisterSet.cpp#L84

But registersToPreserve() explicitly removes fp from the list:
http://trac.webkit.org/browser/branches/jsCStack/Source/JavaScriptCore/jit/RegisterPreservationWrapperGenerator.cpp#L37

I think it is confusing to omit r11/fp on ARM Traditional and r7/fp
on ARM Thumb2, since these registers are general callee-saved registers.
ARM EABI doesn&apos;t specify a dedicated frame pointer, additionally GCC omits
using frame pointer with O1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072318</commentid>
    <comment_count>4</comment_count>
      <attachid>247112</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-26 01:20:43 -0800</bug_when>
    <thetext>Comment on attachment 247112
Patch

Clearing flags on attachment: 247112

Committed r180667: &lt;http://trac.webkit.org/changeset/180667&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072319</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-26 01:20:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247112</attachid>
            <date>2015-02-23 05:45:28 -0800</date>
            <delta_ts>2015-02-26 01:20:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141903-20150223054514.patch</filename>
            <type>text/plain</type>
            <size>1728</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjM1MzQ0ODZlYmI4ZGEyMTFlZmRhN2IyZjU2ZmVhMDM0MzEwOWRjLi45ZjU0YWRiNzAwMGQzMWIx
MjlmZmY0MDBjY2I1MTBlYWY5NGIyMTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNS0wMi0yMyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQu
b3JnPgorCisgICAgICAgIEFkZCBjYWxsZWVTYXZlUmVnaXN0ZXJzKCkgaW1wbGVtZW50YXRpb24g
Zm9yIEFSTSBUcmFkaXRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQxOTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3Rl
clNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisKIDIwMTUtMDItMjEgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBHZW5lcmF0
ZSBQcmV2aWV3cyBtb3JlIG9mdGVuIGZvciBSZW1vdGVPYmplY3QgaW50ZXJhY3Rpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKaW5kZXggNjA4ZWJkNTgxOGZiYjFi
YTI5ZDc3YTdmOTY0YjhhNDc2ZDgzOTBlZi4uMDNkMGYyZTEyYjU2OWYzMWI2MjcwOWZkYWMzOTRl
ZThiM2E0YWEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3Rl
clNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAK
QEAgLTg5LDYgKzg5LDE1IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVn
aXN0ZXJzKCkKICAgICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjkpOwogICAgIHJlc3VsdC5z
ZXQoQVJNUmVnaXN0ZXJzOjpyMTApOwogICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyMTEp
OworI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKKyAgICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVy
czo6cjQpOworICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyNSk7CisgICAgcmVzdWx0LnNl
dChBUk1SZWdpc3RlcnM6OnI2KTsKKyAgICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjcpOwor
ICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyOCk7CisgICAgcmVzdWx0LnNldChBUk1SZWdp
c3RlcnM6OnI5KTsKKyAgICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjEwKTsKKyAgICByZXN1
bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjExKTsKICNlbGlmIENQVShBUk02NCkKICAgICAvLyBXZSBk
b24ndCBpbmNsdWRlIExSIGluIHRoZSBzZXQgb2YgY2FsbGVlLXNhdmUgcmVnaXN0ZXJzIGV2ZW4g
dGhvdWdoIGl0IHRlY2huaWNhbGx5IGJlbG9uZ3MKICAgICAvLyB0aGVyZS4gVGhpcyBpcyBiZWNh
dXNlIHdlIHVzZSB0aGlzIHNldCB0byBkZXNjcmliZSB0aGUgc2V0IG9mIHJlZ2lzdGVycyB0aGF0
IG5lZWQgdG8gYmUgc2F2ZWQK
</data>

          </attachment>
      

    </bug>

</bugzilla>