<?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>74899</bug_id>
          
          <creation_ts>2011-12-19 16:41:35 -0800</creation_ts>
          <short_desc>If we detect that we can use the JIT, don&apos;t use computed opcode lookups</short_desc>
          <delta_ts>2011-12-19 18:42:50 -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>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>524285</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-19 16:41:35 -0800</bug_when>
    <thetext>When building with both interpreter and JIT enabled, we emit bytecode that uses jump locations for opcodes. The JIT then has to decode these into opcodes.

Instead, if we detect that we have both the interpreter and the JIT, and the JIT is enabled, we should opt to use regular opcodes at run-time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524286</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-19 16:41:57 -0800</bug_when>
    <thetext>&lt;rdar://problem/10604551&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524291</commentid>
    <comment_count>2</comment_count>
      <attachid>119950</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-19 16:46:17 -0800</bug_when>
    <thetext>Created attachment 119950
the patch

Performance results forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524293</commentid>
    <comment_count>3</comment_count>
      <attachid>119950</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-12-19 16:50:12 -0800</bug_when>
    <thetext>Comment on attachment 119950
the patch

Please add extra assert as discussed and make comment less philosophical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524331</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-19 17:32:23 -0800</bug_when>
    <thetext>Here&apos;s the performance when running in the default desktop mode (JIT compiled in, interpreter not compiled in).



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

VMs tested:
&quot;TipOfTreeJIT&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r103278)
&quot;EasyOpcodesJIT&quot; at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc (r103278)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime()
function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in
milliseconds.

                                           TipOfTreeJIT           EasyOpcodesJIT                                 
SunSpider:
   3d-cube                                7.5395+-0.0507          7.5279+-0.0481       
   3d-morph                              10.0457+-0.0509         10.0344+-0.0451       
   3d-raytrace                            9.0963+-0.0739    ?     9.1780+-0.0750       ?
   access-binary-trees                    1.9389+-0.0175    ?     1.9456+-0.0343       ?
   access-fannkuch                        9.1671+-0.0126    ?     9.2053+-0.0535       ?
   access-nbody                           4.7911+-0.0426          4.7491+-0.0187       
   access-nsieve                          3.9309+-0.0785          3.8620+-0.0602         might be 1.0179x faster
   bitops-3bit-bits-in-byte               1.5001+-0.0147    ?     1.5138+-0.0214       ?
   bitops-bits-in-byte                    6.1256+-0.0175    ?     6.1523+-0.0412       ?
   bitops-bitwise-and                     3.9886+-0.0234    ?     4.0116+-0.0414       ?
   bitops-nsieve-bits                     6.9498+-0.0897          6.8302+-0.0374         might be 1.0175x faster
   controlflow-recursive                  2.8409+-0.0183    ?     2.8578+-0.0147       ?
   crypto-aes                             9.2483+-0.0530    ?     9.3507+-0.1194       ? might be 1.0111x slower
   crypto-md5                             3.0288+-0.0508          3.0133+-0.0266       
   crypto-sha1                            2.6884+-0.0302          2.6757+-0.0166       
   date-format-tofte                     13.3116+-0.1481    ^    12.9479+-0.1100       ^ definitely 1.0281x faster
   date-format-xparb                     12.9034+-0.1811         12.8167+-0.1253       
   math-cordic                            8.7532+-0.0772    ^     8.6436+-0.0290       ^ definitely 1.0127x faster
   math-partial-sums                     12.6132+-0.0291    ?    12.6511+-0.0314       ?
   math-spectral-norm                     3.1847+-0.0296          3.1827+-0.0111       
   regexp-dna                            10.7769+-0.0793    ?    11.0031+-0.2361       ? might be 1.0210x slower
   string-base64                          5.2207+-0.0507    ?     5.2888+-0.0693       ? might be 1.0130x slower
   string-fasta                           8.8432+-0.0537          8.7658+-0.0426       
   string-tagcloud                       15.0136+-0.0979    ?    15.3506+-0.3029       ? might be 1.0224x slower
   string-unpack-code                    25.6618+-0.2349         25.5322+-0.0692       
   string-validate-input                  6.9126+-0.0915    ?     7.0594+-0.1381       ? might be 1.0212x slower

   &lt;arithmetic&gt; *                         7.9260+-0.0342    ?     7.9288+-0.0291       ? might be 1.0004x slower
   &lt;geometric&gt;                            6.4232+-0.0267    ?     6.4267+-0.0252       ? might be 1.0005x slower
   &lt;harmonic&gt;                             5.0726+-0.0214    ?     5.0779+-0.0234       ? might be 1.0011x slower

                                           TipOfTreeJIT           EasyOpcodesJIT                                 
V8:
   crypto                                93.1876+-0.2248    ?    93.5095+-0.5503       ?
   deltablue                            205.2260+-1.7771        204.5077+-0.8356       
   earley-boyer                         120.2805+-1.5788        119.8886+-1.4950       
   raytrace                              64.2879+-1.2143         63.5429+-0.6459         might be 1.0117x faster
   regexp                               147.2019+-0.3245    ?   147.4583+-0.8038       ?
   richards                             168.9736+-0.6030    !   171.0569+-0.5521       ! definitely 1.0123x slower
   splay                                108.6977+-1.6918    ?   110.4101+-2.6557       ? might be 1.0158x slower

   &lt;arithmetic&gt;                         129.6936+-0.4921    ?   130.0534+-0.4275       ? might be 1.0028x slower
   &lt;geometric&gt; *                        121.8796+-0.5721    ?   122.1335+-0.5029       ? might be 1.0021x slower
   &lt;harmonic&gt;                           114.0059+-0.7270    ?   114.0755+-0.5778       ? might be 1.0006x slower

                                           TipOfTreeJIT           EasyOpcodesJIT                                 
Kraken:
   ai-astar                             896.7456+-0.6032    ?   897.3953+-1.2333       ?
   audio-beat-detection                 233.3495+-1.2969        232.7196+-1.2799       
   audio-dft                            351.8302+-4.2714    ^   341.6509+-4.9691       ^ definitely 1.0298x faster
   audio-fft                            146.2062+-1.5776        145.7038+-1.5617       
   audio-oscillator                     345.1878+-2.6331        345.1877+-3.0111       
   imaging-darkroom                     361.6388+-7.4628    ?   362.0052+-7.5605       ?
   imaging-desaturate                   288.4202+-0.9100    ?   288.4794+-1.4778       ?
   imaging-gaussian-blur                630.8954+-0.4635    ?   633.3607+-2.7304       ?
   json-parse-financial                  86.7778+-0.4234         85.9769+-0.4040       
   json-stringify-tinderbox              99.7308+-0.4471         99.6821+-0.6314       
   stanford-crypto-aes                  141.0035+-0.6337    ?   142.2376+-1.8364       ?
   stanford-crypto-ccm                  138.0768+-1.1320        137.9783+-0.9424       
   stanford-crypto-pbkdf2               280.7540+-2.1327        280.6523+-2.4349       
   stanford-crypto-sha256-iterative     117.3794+-0.2535    ^   116.2762+-0.1576       ^ definitely 1.0095x faster

   &lt;arithmetic&gt; *                       294.1426+-0.6597        293.5219+-0.5650         might be 1.0021x faster
   &lt;geometric&gt;                          232.5926+-0.5120        231.9035+-0.5539         might be 1.0030x faster
   &lt;harmonic&gt;                           189.7743+-0.3474        189.1337+-0.5410         might be 1.0034x faster

                                           TipOfTreeJIT           EasyOpcodesJIT                                 
All benchmarks:
   &lt;arithmetic&gt;                         111.3176+-0.2360        111.1879+-0.1975         might be 1.0012x faster
   &lt;geometric&gt;                           29.0036+-0.0892         28.9956+-0.0799         might be 1.0003x faster
   &lt;harmonic&gt;                             8.9340+-0.0371    ?     8.9428+-0.0403       ? might be 1.0010x slower

                                           TipOfTreeJIT           EasyOpcodesJIT                                 
Geomean of preferred means:
   &lt;scaled-result&gt;                       65.7421+-0.1891    ?    65.7493+-0.1397       ? might be 1.0001x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524350</commentid>
    <comment_count>5</comment_count>
      <attachid>119966</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-19 18:21:58 -0800</bug_when>
    <thetext>Created attachment 119966
the patch

Fixed some build issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524352</commentid>
    <comment_count>6</comment_count>
      <attachid>119967</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-19 18:22:48 -0800</bug_when>
    <thetext>Created attachment 119967
the patch

Ooops, previous patch disabled the JIT!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524356</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-19 18:39:40 -0800</bug_when>
    <thetext>Here&apos;s the performance of compiling both JIT and interpreter and disabling the former at run-time.


Benchmark report for SunSpider on oldmac (MacPro4,1).

VMs tested:
&quot;TipOfTreeInt&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r103278)
&quot;EasyOpcodesInt&quot; at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc (r103278)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc()
between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the
jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution
times with 95% confidence intervals in milliseconds.

                                TipOfTreeInt           EasyOpcodesInt                                 

3d-cube                       35.0553+-0.1691         35.0126+-0.1015       
3d-morph                      42.2603+-0.0718    ?    42.7716+-0.7008       ? might be 1.0121x slower
3d-raytrace                   43.7560+-0.2087    ?    44.0274+-0.1054       ?
access-binary-trees           13.1961+-0.0515    ?    13.3273+-0.1467       ?
access-fannkuch               95.2489+-0.3364    ?    96.3547+-1.4339       ? might be 1.0116x slower
access-nbody                  41.7445+-0.0699    ?    41.9914+-0.2718       ?
access-nsieve                 20.4432+-0.0201         20.4422+-0.0198       
bitops-3bit-bits-in-byte      31.7849+-0.7682         30.8484+-0.4725         might be 1.0304x faster
bitops-bits-in-byte           35.5646+-0.1286         35.5140+-0.0635       
bitops-bitwise-and            32.8943+-0.0627    ?    32.9551+-0.0928       ?
bitops-nsieve-bits            41.6181+-0.0303    ?    41.6376+-0.0543       ?
controlflow-recursive         18.4945+-0.0153    !    18.9301+-0.3852       ! definitely 1.0236x slower
crypto-aes                    31.0078+-0.0857    !    31.3228+-0.0776       ! definitely 1.0102x slower
crypto-md5                    21.3093+-0.3618    ?    21.3548+-0.0678       ?
crypto-sha1                   22.0936+-0.1347         22.0175+-0.1325       
date-format-tofte             23.6500+-0.1102    ?    24.0068+-0.5084       ? might be 1.0151x slower
date-format-xparb             20.0848+-0.4344    ^    18.9634+-0.2544       ^ definitely 1.0591x faster
math-cordic                   57.2663+-0.5728         56.4751+-0.2504         might be 1.0140x faster
math-partial-sums             41.2285+-2.5409         39.3597+-0.2126         might be 1.0475x faster
math-spectral-norm            29.6713+-0.0317    ^    29.4547+-0.0423       ^ definitely 1.0074x faster
regexp-dna                   202.7959+-0.7097    ^   190.3918+-0.4315       ^ definitely 1.0652x faster
string-base64                 21.0234+-0.0906    ?    21.1149+-0.1061       ?
string-fasta                  27.1034+-0.0347    ^    26.9153+-0.0750       ^ definitely 1.0070x faster
string-tagcloud               36.4908+-0.1104    !    37.3402+-0.1309       ! definitely 1.0233x slower
string-unpack-code            57.6505+-0.2517    !    60.7206+-0.1348       ! definitely 1.0533x slower
string-validate-input         17.9087+-0.2036    ?    18.1085+-0.2440       ? might be 1.0112x slower

&lt;arithmetic&gt; *                40.8210+-0.1367    ^    40.4369+-0.0657       ^ definitely 1.0095x faster
&lt;geometric&gt;                   33.4126+-0.1207         33.3621+-0.0488         might be 1.0015x faster
&lt;harmonic&gt;                    29.3947+-0.1009         29.3911+-0.0512         might be 1.0001x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524358</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-19 18:42:50 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/103292</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119950</attachid>
            <date>2011-12-19 16:46:17 -0800</date>
            <delta_ts>2011-12-19 18:21:58 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>simpleopcodes_patch_1.diff</filename>
            <type>text/plain</type>
            <size>5211</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMjgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDExLTEyLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SWYgd2UgZGV0ZWN0IHRoYXQgd2UgY2FuIHVzZSB0aGUgSklULCBkb24ndCB1c2UgY29tcHV0ZWQg
b3Bjb2RlIGxvb2t1cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc0ODk5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDYwNDU1MT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVy
cHJldGVyLmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGUpOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEp
OgorCiAyMDExLTEyLTE5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTAzMjUwLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDAsMTMgKzU0MCw0MyBAQCBDYWxsRnJh
bWUqIGxvYWRWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyCiBJbnRlcnByZXRlcjo6SW50ZXJwcmV0
ZXIoKQogICAgIDogbV9zYW1wbGVFbnRyeURlcHRoKDApCiAgICAgLCBtX3JlZW50cnlEZXB0aCgw
KQorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAsIG1faW5pdGlhbGl6ZWQoZmFsc2UpCisjZW5k
aWYKKyAgICAsIG1fZW5hYmxlZChmYWxzZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19J
TlRFUlBSRVRFUikKLSAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAwLCAw
KTsKK30KIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCi0gICAg
ICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNvZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bj
b2RlSUQ+KGkpKTsKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQp
Cit7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisgICAgaWYgKGNhblVz
ZUpJVCkgeworICAgICAgICAvLyBJZiB0aGUgaW50ZXJwcmV0ZXIgaXMgCisgICAgICAgIAorICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7CisgICAgICAgICAg
ICBPcGNvZGUgb3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KGkpKTsKKyAgICAgICAgICAgIG1fb3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CisgICAgICAg
ICAgICBtX29wY29kZUlEVGFibGUuYWRkKG9wY29kZSwgaSk7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAwLCAwKTsK
KyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kp
CisgICAgICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0sIHN0YXRp
Y19jYXN0PE9wY29kZUlEPihpKSk7CisgICAgICAgIAorICAgICAgICBtX2VuYWJsZWQgPSB0cnVl
OworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CisjaWYgRU5BQkxF
KElOVEVSUFJFVEVSKQorICAgIG1fZW5hYmxlZCA9IHRydWU7CisjZWxzZQorICAgIG1fZW5hYmxl
ZCA9IGZhbHNlOworI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQ
UkVURVIpCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwor
I2VuZGlmCiAKICNpZiBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQogICAgIGVuYWJsZVNhbXBsZXIo
KTsKQEAgLTE2NTMsNiArMTY4Myw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVj
dXRlKEV4ZWMKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CiAgICAgCisgICAgQVNT
RVJUKG1faW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVChtX2VuYWJsZWQpOworICAgIAogI2lmIEVO
QUJMRShKSVQpCiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIC8vIE1peGluZyBJbnRlcnBy
ZXRlciArIEpJVCBpcyBub3Qgc3VwcG9ydGVkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDEwMzI3OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC05NCwyNiArOTQsMzIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBDYWNoZWRDYWxsOwogICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAg
ICAgICAgCisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCk7CiAKICAgICAg
ICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVybiBtX3JlZ2lzdGVyRmlsZTsg
fQogICAgICAgICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCBpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQot
ICAgICAgICAgICAgICAgIHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKLSAgICAgICAgICAgICNl
bHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIGlkOwotICAgICAgICAgICAgI2VuZGlmCisgICAg
ICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpCisgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVUYWJsZVtpZF07CisjZWxz
ZQorICAgICAgICAgICAgcmV0dXJuIGlkOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBP
cGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7Ci0gICAgICAgICAg
ICAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCi0gICAgICAgICAgICAgICAg
QVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBtX29wY29k
ZUlEVGFibGUuZ2V0KG9wY29kZSk7Ci0gICAgICAgICAgICAjZWxzZQotICAgICAgICAgICAgICAg
IHJldHVybiBvcGNvZGU7Ci0gICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgIEFTU0VSVCht
X2luaXRpYWxpemVkKTsKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyAg
ICAgICAgICAgIGlmICghbV9lbmFibGVkKQorICAgICAgICAgICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSk7CisgICAgICAgICAg
ICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CisgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVJ
RFRhYmxlLmdldChvcGNvZGUpOworI2Vsc2UKKyAgICAgICAgICAgIHJldHVybiBvcGNvZGU7Cisj
ZW5kaWYKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKQEAgLTE4
Niw2ICsxOTIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZSBtX29wY29kZVRh
YmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bjb2RlIGZvciBjb21waWxp
bmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29wY29kZUlEVGFibGU7IC8v
IE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwogI2VuZGlmCisKKyNpZiAh
QVNTRVJUX0RJU0FCTEVECisgICAgICAgIGJvb2wgbV9pbml0aWFsaXplZDsKKyNlbmRpZgorICAg
ICAgICBib29sIG1fZW5hYmxlZDsKICAgICB9OwogCiAgICAgLy8gVGhpcyB2YWx1ZSBtdXN0IG5v
dCBiZSBhbiBvYmplY3QgdGhhdCB3b3VsZCByZXF1aXJlIHRoaXMgY29udmVyc2lvbiAoV2ViQ29y
ZSdzIGdsb2JhbCBvYmplY3QpLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcs
NiArMjI3LDggQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAg
IGppdFN0dWJzID0gYWRvcHRQdHIobmV3IEpJVFRodW5rcyh0aGlzKSk7CiAjZW5kaWYKIAorICAg
IGludGVycHJldGVyLT5pbml0aWFsaXplKGNhblVzZUpJVCgpKTsKKwogICAgIGhlYXAubm90aWZ5
SXNTYWZlVG9Db2xsZWN0KCk7CiB9CiAK
</data>
<flag name="review"
          id="120091"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119966</attachid>
            <date>2011-12-19 18:21:58 -0800</date>
            <delta_ts>2011-12-19 18:22:48 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>simpleopcodes_patch_2.diff</filename>
            <type>text/plain</type>
            <size>5960</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMjgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDExLTEyLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SWYgd2UgZGV0ZWN0IHRoYXQgd2UgY2FuIHVzZSB0aGUgSklULCBkb24ndCB1c2UgY29tcHV0ZWQg
b3Bjb2RlIGxvb2t1cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc0ODk5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDYwNDU1MT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVy
cHJldGVyLmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGUpOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEp
OgorCiAyMDExLTEyLTE5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTAzMjUwLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDAsMTMgKzU0MCw0MyBAQCBDYWxsRnJh
bWUqIGxvYWRWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyCiBJbnRlcnByZXRlcjo6SW50ZXJwcmV0
ZXIoKQogICAgIDogbV9zYW1wbGVFbnRyeURlcHRoKDApCiAgICAgLCBtX3JlZW50cnlEZXB0aCgw
KQorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAsIG1faW5pdGlhbGl6ZWQoZmFsc2UpCisjZW5k
aWYKKyAgICAsIG1fZW5hYmxlZChmYWxzZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19J
TlRFUlBSRVRFUikKLSAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAwLCAw
KTsKK30KIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCi0gICAg
ICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNvZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bj
b2RlSUQ+KGkpKTsKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQp
Cit7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisgICAgaWYgKGNhblVz
ZUpJVCkgeworICAgICAgICAvLyBJZiB0aGUgSklUIGlzIHByZXNlbnQsIGRvbid0IHVzZSBqdW1w
IGRlc3RpbmF0aW9ucyBmb3Igb3Bjb2Rlcy4KKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsKKyAgICAgICAgICAgIE9wY29kZSBvcGNvZGUg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkpOworICAgICAg
ICAgICAgbV9vcGNvZGVUYWJsZVtpXSA9IG9wY29kZTsKKyAgICAgICAgICAgIG1fb3Bjb2RlSURU
YWJsZS5hZGQob3Bjb2RlLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwg
MCwgMCk7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlE
czsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxlLmFkZChtX29wY29kZVRhYmxlW2ld
LCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworICAgICAgICAKKyAgICAgICAgbV9lbmFibGVk
ID0gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjYW5Vc2VKSVQpOworI2lm
IEVOQUJMRShJTlRFUlBSRVRFUikKKyAgICBtX2VuYWJsZWQgPSB0cnVlOworI2Vsc2UKKyAgICBt
X2VuYWJsZWQgPSBmYWxzZTsKKyNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShDT01QVVRFRF9HT1RP
X0lOVEVSUFJFVEVSKQorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBtX2luaXRpYWxpemVkID0g
dHJ1ZTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKICAgICBlbmFibGVT
YW1wbGVyKCk7CkBAIC0xNjUzLDYgKzE2ODMsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2
YXRlRXhlY3V0ZShFeGVjCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQogICAgIAor
ICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKKyAgICBBU1NFUlQobV9lbmFibGVkKTsKKyAgICAK
ICNpZiBFTkFCTEUoSklUKQogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAvLyBNaXhpbmcg
SW50ZXJwcmV0ZXIgKyBKSVQgaXMgbm90IHN1cHBvcnRlZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMDMyNzgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtOTQsMjYgKzk0LDM1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBm
cmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKICAgICBwdWJsaWM6CiAgICAgICAgIEludGVycHJldGVy
KCk7CisgICAgICAgIAorICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpOwog
CiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCkgeyByZXR1cm4gbV9yZWdpc3Rl
ckZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBS
RVRFUikKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVUYWJsZVtpZF07Ci0gICAgICAg
ICAgICAjZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBpZDsKLSAgICAgICAgICAgICNlbmRp
ZgorICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOworI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKQorICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlVGFibGVbaWRd
OworI2Vsc2UKKyAgICAgICAgICAgIHJldHVybiBpZDsKKyNlbmRpZgogICAgICAgICB9CiAKICAg
ICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewotICAg
ICAgICAgICAgI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQotICAgICAgICAg
ICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
bV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOwotICAgICAgICAgICAgI2Vsc2UKLSAgICAgICAg
ICAgICAgICByZXR1cm4gb3Bjb2RlOwotICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICBB
U1NFUlQobV9pbml0aWFsaXplZCk7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpCisgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CisgICAgICAgICAgICBp
ZiAoIW1fZW5hYmxlZCkgeworICAgICAgICAgICAgICAgIE9wY29kZUlEIHJlc3VsdCA9IHN0YXRp
Y19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxzZQorICAgICAgICAg
ICAgcmV0dXJuIG9wY29kZTsKKyNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBpc09w
Y29kZShPcGNvZGUpOwpAQCAtMTg2LDYgKzE5NSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNvZGVJRCA9
PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+
IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGls
aW5nCiAjZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgYm9vbCBtX2luaXRp
YWxpemVkOworI2VuZGlmCisgICAgICAgIGJvb2wgbV9lbmFibGVkOwogICAgIH07CiAKICAgICAv
LyBUaGlzIHZhbHVlIG11c3Qgbm90IGJlIGFuIG9iamVjdCB0aGF0IHdvdWxkIHJlcXVpcmUgdGhp
cyBjb252ZXJzaW9uIChXZWJDb3JlJ3MgZ2xvYmFsIG9iamVjdCkuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDEwMzI3
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyNyw2ICsyMjcsOCBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0
YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKHRo
aXMpKTsKICNlbmRpZgogCisgICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+Y2FuVXNl
SklUKCkpOworCiAgICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTAzMjc4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw4IEBACiAvKiBJbmNsdWRlIGNvbXBpbGVyIHNwZWNpZmljIG1hY3JvcyAqLwogI2luY2x1
ZGUgIkNvbXBpbGVyLmgiCiAKKyNkZWZpbmUgRU5BQkxFX0pJVCAwCisKIC8qID09PT0gUExBVEZP
Uk0gaGFuZGxlcyBPUywgb3BlcmF0aW5nIGVudmlyb25tZW50LCBncmFwaGljcyBBUEksIGFuZAog
ICAgQ1BVLiBUaGlzIG1hY3JvIHdpbGwgYmUgcGhhc2VkIG91dCBpbiBmYXZvciBvZiBwbGF0Zm9y
bSBhZGFwdGF0aW9uCiAgICBtYWNyb3MsIHBvbGljeSBkZWNpc2lvbiBtYWNyb3MsIGFuZCB0b3At
bGV2ZWwgcG9ydCBkZWZpbml0aW9ucy4gPT09PSAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119967</attachid>
            <date>2011-12-19 18:22:48 -0800</date>
            <delta_ts>2011-12-19 18:22:48 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>simpleopcodes_patch_2.diff</filename>
            <type>text/plain</type>
            <size>5408</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMjgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDExLTEyLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SWYgd2UgZGV0ZWN0IHRoYXQgd2UgY2FuIHVzZSB0aGUgSklULCBkb24ndCB1c2UgY29tcHV0ZWQg
b3Bjb2RlIGxvb2t1cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc0ODk5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDYwNDU1MT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVy
cHJldGVyLmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGUpOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEp
OgorCiAyMDExLTEyLTE5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTAzMjUwLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAxMDMyNzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDAsMTMgKzU0MCw0MyBAQCBDYWxsRnJh
bWUqIGxvYWRWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyCiBJbnRlcnByZXRlcjo6SW50ZXJwcmV0
ZXIoKQogICAgIDogbV9zYW1wbGVFbnRyeURlcHRoKDApCiAgICAgLCBtX3JlZW50cnlEZXB0aCgw
KQorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAsIG1faW5pdGlhbGl6ZWQoZmFsc2UpCisjZW5k
aWYKKyAgICAsIG1fZW5hYmxlZChmYWxzZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19J
TlRFUlBSRVRFUikKLSAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAwLCAw
KTsKK30KIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCi0gICAg
ICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNvZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bj
b2RlSUQ+KGkpKTsKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQp
Cit7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisgICAgaWYgKGNhblVz
ZUpJVCkgeworICAgICAgICAvLyBJZiB0aGUgSklUIGlzIHByZXNlbnQsIGRvbid0IHVzZSBqdW1w
IGRlc3RpbmF0aW9ucyBmb3Igb3Bjb2Rlcy4KKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsKKyAgICAgICAgICAgIE9wY29kZSBvcGNvZGUg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkpOworICAgICAg
ICAgICAgbV9vcGNvZGVUYWJsZVtpXSA9IG9wY29kZTsKKyAgICAgICAgICAgIG1fb3Bjb2RlSURU
YWJsZS5hZGQob3Bjb2RlLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwg
MCwgMCk7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlE
czsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxlLmFkZChtX29wY29kZVRhYmxlW2ld
LCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworICAgICAgICAKKyAgICAgICAgbV9lbmFibGVk
ID0gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjYW5Vc2VKSVQpOworI2lm
IEVOQUJMRShJTlRFUlBSRVRFUikKKyAgICBtX2VuYWJsZWQgPSB0cnVlOworI2Vsc2UKKyAgICBt
X2VuYWJsZWQgPSBmYWxzZTsKKyNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShDT01QVVRFRF9HT1RP
X0lOVEVSUFJFVEVSKQorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBtX2luaXRpYWxpemVkID0g
dHJ1ZTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKICAgICBlbmFibGVT
YW1wbGVyKCk7CkBAIC0xNjUzLDYgKzE2ODMsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2
YXRlRXhlY3V0ZShFeGVjCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQogICAgIAor
ICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKKyAgICBBU1NFUlQobV9lbmFibGVkKTsKKyAgICAK
ICNpZiBFTkFCTEUoSklUKQogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAvLyBNaXhpbmcg
SW50ZXJwcmV0ZXIgKyBKSVQgaXMgbm90IHN1cHBvcnRlZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMDMyNzgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtOTQsMjYgKzk0LDM1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBm
cmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKICAgICBwdWJsaWM6CiAgICAgICAgIEludGVycHJldGVy
KCk7CisgICAgICAgIAorICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpOwog
CiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCkgeyByZXR1cm4gbV9yZWdpc3Rl
ckZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBS
RVRFUikKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVUYWJsZVtpZF07Ci0gICAgICAg
ICAgICAjZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBpZDsKLSAgICAgICAgICAgICNlbmRp
ZgorICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOworI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKQorICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlVGFibGVbaWRd
OworI2Vsc2UKKyAgICAgICAgICAgIHJldHVybiBpZDsKKyNlbmRpZgogICAgICAgICB9CiAKICAg
ICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewotICAg
ICAgICAgICAgI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQotICAgICAgICAg
ICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
bV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOwotICAgICAgICAgICAgI2Vsc2UKLSAgICAgICAg
ICAgICAgICByZXR1cm4gb3Bjb2RlOwotICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICBB
U1NFUlQobV9pbml0aWFsaXplZCk7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpCisgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CisgICAgICAgICAgICBp
ZiAoIW1fZW5hYmxlZCkgeworICAgICAgICAgICAgICAgIE9wY29kZUlEIHJlc3VsdCA9IHN0YXRp
Y19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxzZQorICAgICAgICAg
ICAgcmV0dXJuIG9wY29kZTsKKyNlbmRpZgogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBpc09w
Y29kZShPcGNvZGUpOwpAQCAtMTg2LDYgKzE5NSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNvZGVJRCA9
PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+
IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGls
aW5nCiAjZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgYm9vbCBtX2luaXRp
YWxpemVkOworI2VuZGlmCisgICAgICAgIGJvb2wgbV9lbmFibGVkOwogICAgIH07CiAKICAgICAv
LyBUaGlzIHZhbHVlIG11c3Qgbm90IGJlIGFuIG9iamVjdCB0aGF0IHdvdWxkIHJlcXVpcmUgdGhp
cyBjb252ZXJzaW9uIChXZWJDb3JlJ3MgZ2xvYmFsIG9iamVjdCkuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDEwMzI3
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyNyw2ICsyMjcsOCBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0
YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKHRo
aXMpKTsKICNlbmRpZgogCisgICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+Y2FuVXNl
SklUKCkpOworCiAgICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>