<?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>100620</bug_id>
          
          <creation_ts>2012-10-28 17:00:15 -0700</creation_ts>
          <short_desc>There should not be blind spots in array length array profiling</short_desc>
          <delta_ts>2012-10-29 09:52:32 -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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>100636</dependson>
          <blocked>98606</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>753009</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-28 17:00:15 -0700</bug_when>
    <thetext>Currently if you have a program like:

for (thousand times) thingy
for (thousand times) thingy(array.length)

There is the risk that we&apos;ll end up tiering into the baseline JIT before the LLInt would have a chance to profile array.length, and we may tier all the way to the DFG before the baseline JIT had a chance to patch (but after it executed) array.length. Hence the DFG will not know whether the array.length access is just unprofiled, or legitimately accesses something that isn&apos;t really a length.

The solution is to ensure that statements of the form &quot;blah.length&quot; get array length profiling in the baseline JIT even before the patching machinery kicks in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753010</commentid>
    <comment_count>1</comment_count>
      <attachid>171145</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-28 17:07:03 -0700</bug_when>
    <thetext>Created attachment 171145
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753011</commentid>
    <comment_count>2</comment_count>
      <attachid>171145</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-28 17:13:29 -0700</bug_when>
    <thetext>Comment on attachment 171145
the patch

Attachment 171145 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14606964</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753012</commentid>
    <comment_count>3</comment_count>
      <attachid>171145</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-28 17:14:23 -0700</bug_when>
    <thetext>Comment on attachment 171145
the patch

Attachment 171145 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14615912</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753015</commentid>
    <comment_count>4</comment_count>
      <attachid>171145</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-10-28 17:25:48 -0700</bug_when>
    <thetext>Comment on attachment 171145
the patch

Attachment 171145 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14609924</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753016</commentid>
    <comment_count>5</comment_count>
      <attachid>171145</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-28 17:34:27 -0700</bug_when>
    <thetext>Comment on attachment 171145
the patch

Attachment 171145 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14617874</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753022</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-28 18:28:48 -0700</bug_when>
    <thetext>I&apos;ve fixed the 32-bit stuffs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753027</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-28 19:18:34 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/132757</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753118</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-29 00:39:24 -0700</bug_when>
    <thetext>The following test cases started crashing after this patch landed:
  jquery/manipulation.html
  jquery/traversing.html


Backtrace:
crash log for DumpRenderTree (pid 860):
STDOUT: &lt;empty&gt;
STDERR: ASSERTION FAILED: ArrayMode(Array::Arguments).alreadyChecked(m_state.forNode(node.child1()))
STDERR: /home/buildslave-1/webkit-buildslave/efl-linux-64-debug/build/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp(3247) : void JSC::DFG::SpeculativeJIT::compileGetByValOnArguments(JSC::DFG::Node&amp;)
STDERR: 1   0x7f56d6262474 JSC::DFG::SpeculativeJIT::compileGetByValOnArguments(JSC::DFG::Node&amp;)
STDERR: 2   0x7f56d6285456 JSC::DFG::SpeculativeJIT::compile(JSC::DFG::Node&amp;)
STDERR: 3   0x7f56d6259602 JSC::DFG::SpeculativeJIT::compile(JSC::DFG::BasicBlock&amp;)
STDERR: 4   0x7f56d6259d87 JSC::DFG::SpeculativeJIT::compile()
STDERR: 5   0x7f56d622a1ce JSC::DFG::JITCompiler::compileBody(JSC::DFG::SpeculativeJIT&amp;)
STDERR: 6   0x7f56d622b163 JSC::DFG::JITCompiler::compileFunction(JSC::JITCode&amp;, JSC::MacroAssemblerCodePtr&amp;)
STDERR: 7   0x7f56d621dfab JSC::DFG::compile(JSC::DFG::CompileMode, JSC::ExecState*, JSC::CodeBlock*, JSC::JITCode&amp;, JSC::MacroAssemblerCodePtr*, unsigned int)
STDERR: 8   0x7f56d621d900 JSC::DFG::tryCompileFunction(JSC::ExecState*, JSC::CodeBlock*, JSC::JITCode&amp;, JSC::MacroAssemblerCodePtr&amp;, unsigned int)
STDERR: 9   0x7f56d63add8f JSC::jitCompileFunctionIfAppropriate(JSC::ExecState*, WTF::OwnPtr&lt;JSC::FunctionCodeBlock&gt;&amp;, JSC::JITCode&amp;, JSC::MacroAssemblerCodePtr&amp;, JSC::WriteBarrier&lt;JSC::SharedSymbolTable&gt;&amp;, JSC::JITCode::JITType, unsigned int, JSC::JITCompilationEffort)
STDERR: 10  0x7f56d63ae08a JSC::prepareFunctionForExecution(JSC::ExecState*, WTF::OwnPtr&lt;JSC::FunctionCodeBlock&gt;&amp;, JSC::JITCode&amp;, JSC::MacroAssemblerCodePtr&amp;, JSC::WriteBarrier&lt;JSC::SharedSymbolTable&gt;&amp;, JSC::JITCode::JITType, unsigned int, JSC::CodeSpecializationKind)
STDERR: 11  0x7f56d63abf71 JSC::FunctionExecutable::compileForCallInternal(JSC::ExecState*, JSC::JSScope*, JSC::JITCode::JITType, unsigned int)
STDERR: 12  0x7f56d63ab39b JSC::FunctionExecutable::compileOptimizedForCall(JSC::ExecState*, JSC::JSScope*, unsigned int)
STDERR: 13  0x7f56d614ad85 JSC::FunctionExecutable::compileOptimizedFor(JSC::ExecState*, JSC::JSScope*, unsigned int, JSC::CodeSpecializationKind)
STDERR: 14  0x7f56d6146e38 JSC::FunctionCodeBlock::compileOptimized(JSC::ExecState*, JSC::JSScope*, unsigned int)
STDERR: 15  0x7f56d63177bd
STDERR: 16  0x7f56d6313be0
STDERR: 17  0x7f5682780058</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753541</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-10-29 09:52:32 -0700</bug_when>
    <thetext>Bug 100636 tracks the regression.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171145</attachid>
            <date>2012-10-28 17:07:03 -0700</date>
            <delta_ts>2012-10-28 17:34:27 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>fixarraylength_1.patch</filename>
            <type>text/plain</type>
            <size>3893</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMyNzU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDEyLTEwLTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlcmUgc2hvdWxkIG5vdCBiZSBibGluZCBzcG90cyBpbiBhcnJheSBsZW5ndGggYXJyYXkgcHJv
ZmlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
IGRvbid0IHRoaW5rIHRoaXMgaGFzIGFueSBwZXJmb3JtYW5jZSBpbXBhY3QuIEJ1dCBpdCdzIGdv
b2QgdG8gbm90IGhhdmUgcmFuZG9tCisgICAgICAgIHByb2dyYW1zIG9jY2FzaW9uYWxseSBlbWl0
IGEgR2V0QnlJZCBmb3IgYXJyYXkgbGVuZ3RoIGFjY2Vzc2VzLgorCisgICAgICAgICogaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlR2V0QnlJZEhv
dFBhdGgpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxl
bmd0aCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKToKKwogMjAxMi0xMC0yOCAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIG1ha2UgYWx3
YXlzLXRydWUgZW51bS10by1pbnQgY29tcGFyaXNvbnMgdXNlIGNhc3RzLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CShyZXZpc2lvbiAxMzI3NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjksNiArNDY5LDExIEBAIHZv
aWQgSklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgoKQogICAgIC8vIHRvIGFycmF5LWxlbmd0aCAv
IHByb3RvdHlwZSBhY2Nlc3MgdHJhbnBvbGluZXMsIGFuZCBmaW5hbGx5IHdlIGFsc28gdGhlIHRo
ZSBwcm9wZXJ0eS1tYXAgYWNjZXNzIG9mZnNldCBhcyBhIGxhYmVsCiAgICAgLy8gdG8ganVtcCBi
YWNrIHRvIGlmIG9uZSBvZiB0aGVzZSB0cmFtcG9saWVzIGZpbmRzIGEgbWF0Y2guCiAgICAgCisg
ICAgaWYgKCppZGVudCA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBj
YW5CZU9wdGltaXplZCgpKSB7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKKyAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5n
U2l0ZUZvckJ5dGVjb2RlSW5kZXgocmVnVDEsIHJlZ1QyLCBtX2J5dGVjb2RlT2Zmc2V0KTsKKyAg
ICB9CisKICAgICBCRUdJTl9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlR2V0QnlJZEhv
dFBhdGgpOwogICAgIAogICAgIExhYmVsIGhvdFBhdGhCZWdpbih0aGlzKTsKQEAgLTc1MSw3ICs3
NTYsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgCiAg
ICAgLy8gQ2hlY2sgZm9yIGFycmF5CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVG
b3JCeXRlY29kZUluZGV4KHJlZ1QyLCByZWdUMywgc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXgpOwog
ICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMiwgVHJ1c3Rl
ZEltbTMyKElzQXJyYXkpKTsKICAgICBKdW1wIGZhaWx1cmVDYXNlczIgPSBicmFuY2hUZXN0MzIo
WmVybywgcmVnVDIsIFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzaykpOwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJ
KHJldmlzaW9uIDEzMjc0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIocmVzdWx0VlJlZyk7CiB9CiAKLXZvaWQgSklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgoaW50
IGJhc2VWUmVnLCBJZGVudGlmaWVyKikKK3ZvaWQgSklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgo
aW50IGJhc2VWUmVnLCBJZGVudGlmaWVyKiBpZGVudCkKIHsKICAgICAvLyBBcyBmb3IgcHV0X2J5
X2lkLCBnZXRfYnlfaWQgcmVxdWlyZXMgdGhlIG9mZnNldCBvZiB0aGUgU3RydWN0dXJlIGFuZCB0
aGUgb2Zmc2V0IG9mIHRoZSBhY2Nlc3MgdG8gYmUgcGF0Y2hlZC4KICAgICAvLyBBZGRpdGlvbmFs
bHksIGZvciBnZXRfYnlfaWQgd2UgbmVlZCBwYXRjaCB0aGUgb2Zmc2V0IG9mIHRoZSBicmFuY2gg
dG8gdGhlIHNsb3cgY2FzZSAod2UgcGF0Y2ggdGhpcyB0byBqdW1wCkBAIC01MjUsNiArNTI1LDEx
IEBAIHZvaWQgSklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgoaW50IGJhc2UKICAgICAvLyB0byBq
dW1wIGJhY2sgdG8gaWYgb25lIG9mIHRoZXNlIHRyYW1wb2xpZXMgZmluZHMgYSBtYXRjaC4KIAog
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOworICAgIAor
ICAgIGlmICgqaWRlbnQgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYg
Y2FuQmVPcHRpbWl6ZWQoKSkgeworICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7CisgICAgICAgIGVtaXRBcnJheVByb2ZpbGlu
Z1NpdGVGb3JCeXRlY29kZUluZGV4KHJlZ1QxLCByZWdUMiwgbV9ieXRlY29kZU9mZnNldCk7Cisg
ICAgfQogCiAgICAgQkVHSU5fVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZUdldEJ5SWRI
b3RQYXRoKTsKIApAQCAtNzg4LDcgKzc5Myw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVBh
dGNoR2V0QXJyYXlMZW4KIAogICAgIC8vIENoZWNrIGVheCBpcyBhbiBhcnJheQogICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAg
ICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleChyZWdUMiwgcmVnVDEsIHN0
dWJJbmZvLT5ieXRlY29kZUluZGV4KTsKICAgICBKdW1wIGZhaWx1cmVDYXNlczEgPSBicmFuY2hU
ZXN0MzIoWmVybywgcmVnVDIsIFRydXN0ZWRJbW0zMihJc0FycmF5KSk7CiAgICAgSnVtcCBmYWls
dXJlQ2FzZXMyID0gYnJhbmNoVGVzdDMyKFplcm8sIHJlZ1QyLCBUcnVzdGVkSW1tMzIoSW5kZXhp
bmdTaGFwZU1hc2spKTsKIAo=
</data>
<flag name="review"
          id="184950"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="184951"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>