<?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>135026</bug_id>
          
          <creation_ts>2014-07-17 14:41:26 -0700</creation_ts>
          <short_desc>REGRESSION: New int52 test failures on ARM64, possibly due to r171096</short_desc>
          <delta_ts>2014-07-19 14:18:14 -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>INVALID</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1023113</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-07-17 14:41:26 -0700</bug_when>
    <thetext>The test failures below are happening on ARM64 systems.  This is possibly due to r171096.  

  stress/dead-fiat-double-to-int52-then-exit-not-int52.js.always-trigger-copy-phase
  stress/dead-fiat-double-to-int52-then-exit-not-int52.js.default
  stress/dead-fiat-double-to-int52-then-exit-not-int52.js.dfg-eager
  stress/dead-fiat-double-to-int52-then-exit-not-int52.js.dfg-eager-no-cjit-validate
  stress/dead-fiat-double-to-int52-then-exit-not-int52.js.no-cjit-validate-phases
  stress/dead-fiat-double-to-int52-then-exit-not-int52.js.no-llint
  stress/dead-fiat-double-to-int52.js.always-trigger-copy-phase
  stress/dead-fiat-double-to-int52.js.default
  stress/dead-fiat-double-to-int52.js.dfg-eager
  stress/dead-fiat-double-to-int52.js.dfg-eager-no-cjit-validate
  stress/dead-fiat-double-to-int52.js.no-cjit-validate-phases
  stress/dead-fiat-double-to-int52.js.no-llint
  stress/dead-fiat-int32-to-int52.js.always-trigger-copy-phase
  stress/dead-fiat-int32-to-int52.js.default
  stress/dead-fiat-int32-to-int52.js.dfg-eager
  stress/dead-fiat-int32-to-int52.js.dfg-eager-no-cjit-validate
  stress/dead-fiat-int32-to-int52.js.no-cjit-validate-phases
  stress/dead-fiat-int32-to-int52.js.no-llint
  stress/dead-fiat-value-to-int52-double-path.js.always-trigger-copy-phase
  stress/dead-fiat-value-to-int52-double-path.js.default
  stress/dead-fiat-value-to-int52-double-path.js.dfg-eager
  stress/dead-fiat-value-to-int52-double-path.js.dfg-eager-no-cjit-validate
  stress/dead-fiat-value-to-int52-double-path.js.no-cjit-validate-phases
  stress/dead-fiat-value-to-int52-double-path.js.no-llint
  stress/dead-fiat-value-to-int52-then-exit-not-double.js.always-trigger-copy-phase
  stress/dead-fiat-value-to-int52-then-exit-not-double.js.default
  stress/dead-fiat-value-to-int52-then-exit-not-double.js.dfg-eager
  stress/dead-fiat-value-to-int52-then-exit-not-double.js.dfg-eager-no-cjit-validate
  stress/dead-fiat-value-to-int52-then-exit-not-double.js.no-cjit-validate-phases
  stress/dead-fiat-value-to-int52-then-exit-not-double.js.no-llint
  stress/dead-fiat-value-to-int52-then-exit-not-int52.js.always-trigger-copy-phase
  stress/dead-fiat-value-to-int52-then-exit-not-int52.js.default
  stress/dead-fiat-value-to-int52-then-exit-not-int52.js.dfg-eager
  stress/dead-fiat-value-to-int52-then-exit-not-int52.js.dfg-eager-no-cjit-validate
  stress/dead-fiat-value-to-int52-then-exit-not-int52.js.no-cjit-validate-phases
  stress/dead-fiat-value-to-int52-then-exit-not-int52.js.no-llint
  stress/dead-fiat-value-to-int52.js.always-trigger-copy-phase
  stress/dead-fiat-value-to-int52.js.default
  stress/dead-fiat-value-to-int52.js.dfg-eager
  stress/dead-fiat-value-to-int52.js.dfg-eager-no-cjit-validate
  stress/dead-fiat-value-to-int52.js.no-cjit-validate-phases
  stress/dead-fiat-value-to-int52.js.no-llint
  stress/fiat-double-to-int52-then-exit-not-int52.js.always-trigger-copy-phase
  stress/fiat-double-to-int52-then-exit-not-int52.js.default
  stress/fiat-double-to-int52-then-exit-not-int52.js.dfg-eager
  stress/fiat-double-to-int52-then-exit-not-int52.js.dfg-eager-no-cjit-validate
  stress/fiat-double-to-int52-then-exit-not-int52.js.no-cjit-validate-phases
  stress/fiat-double-to-int52-then-exit-not-int52.js.no-llint
  stress/fiat-double-to-int52-then-fail-to-fold.js.always-trigger-copy-phase
  stress/fiat-double-to-int52-then-fail-to-fold.js.default
  stress/fiat-double-to-int52-then-fail-to-fold.js.dfg-eager
  stress/fiat-double-to-int52-then-fail-to-fold.js.dfg-eager-no-cjit-validate
  stress/fiat-double-to-int52-then-fail-to-fold.js.no-cjit-validate-phases
  stress/fiat-double-to-int52-then-fail-to-fold.js.no-llint
  stress/fiat-double-to-int52-then-fold.js.always-trigger-copy-phase
  stress/fiat-double-to-int52-then-fold.js.default
  stress/fiat-double-to-int52-then-fold.js.dfg-eager
  stress/fiat-double-to-int52-then-fold.js.dfg-eager-no-cjit-validate
  stress/fiat-double-to-int52-then-fold.js.no-cjit-validate-phases
  stress/fiat-double-to-int52-then-fold.js.no-llint
  stress/fiat-double-to-int52.js.always-trigger-copy-phase
  stress/fiat-double-to-int52.js.default
  stress/fiat-double-to-int52.js.dfg-eager
  stress/fiat-double-to-int52.js.dfg-eager-no-cjit-validate
  stress/fiat-double-to-int52.js.no-cjit-validate-phases
  stress/fiat-double-to-int52.js.no-llint
  stress/fiat-int32-to-int52.js.always-trigger-copy-phase
  stress/fiat-int32-to-int52.js.default
  stress/fiat-int32-to-int52.js.dfg-eager
  stress/fiat-int32-to-int52.js.dfg-eager-no-cjit-validate
  stress/fiat-int32-to-int52.js.no-cjit-validate-phases
  stress/fiat-int32-to-int52.js.no-llint
  stress/fiat-value-to-int52-double-path.js.always-trigger-copy-phase
  stress/fiat-value-to-int52-double-path.js.default
  stress/fiat-value-to-int52-double-path.js.dfg-eager
  stress/fiat-value-to-int52-double-path.js.dfg-eager-no-cjit-validate
  stress/fiat-value-to-int52-double-path.js.no-cjit-validate-phases
  stress/fiat-value-to-int52-double-path.js.no-llint
  stress/fiat-value-to-int52-then-exit-not-double.js.always-trigger-copy-phase
  stress/fiat-value-to-int52-then-exit-not-double.js.default
  stress/fiat-value-to-int52-then-exit-not-double.js.dfg-eager
  stress/fiat-value-to-int52-then-exit-not-double.js.dfg-eager-no-cjit-validate
  stress/fiat-value-to-int52-then-exit-not-double.js.no-cjit-validate-phases
  stress/fiat-value-to-int52-then-exit-not-double.js.no-llint
  stress/fiat-value-to-int52-then-exit-not-int52.js.always-trigger-copy-phase
  stress/fiat-value-to-int52-then-exit-not-int52.js.default
  stress/fiat-value-to-int52-then-exit-not-int52.js.dfg-eager
  stress/fiat-value-to-int52-then-exit-not-int52.js.dfg-eager-no-cjit-validate
  stress/fiat-value-to-int52-then-exit-not-int52.js.no-cjit-validate-phases
  stress/fiat-value-to-int52-then-exit-not-int52.js.no-llint
  stress/fiat-value-to-int52-then-fail-to-fold.js.always-trigger-copy-phase
  stress/fiat-value-to-int52-then-fail-to-fold.js.default
  stress/fiat-value-to-int52-then-fail-to-fold.js.dfg-eager
  stress/fiat-value-to-int52-then-fail-to-fold.js.dfg-eager-no-cjit-validate
  stress/fiat-value-to-int52-then-fail-to-fold.js.no-cjit-validate-phases
  stress/fiat-value-to-int52-then-fail-to-fold.js.no-llint
  stress/fiat-value-to-int52-then-fold.js.always-trigger-copy-phase
  stress/fiat-value-to-int52-then-fold.js.default
  stress/fiat-value-to-int52-then-fold.js.dfg-eager
  stress/fiat-value-to-int52-then-fold.js.dfg-eager-no-cjit-validate
  stress/fiat-value-to-int52-then-fold.js.no-cjit-validate-phases
  stress/fiat-value-to-int52-then-fold.js.no-llint
  stress/fiat-value-to-int52.js.always-trigger-copy-phase
  stress/fiat-value-to-int52.js.default
  stress/fiat-value-to-int52.js.dfg-eager
  stress/fiat-value-to-int52.js.dfg-eager-no-cjit-validate
  stress/fiat-value-to-int52.js.no-cjit-validate-phases
  stress/fiat-value-to-int52.js.no-llint
  stress/int52-force-osr-exit-path.js.always-trigger-copy-phase
  stress/int52-force-osr-exit-path.js.default
  stress/int52-force-osr-exit-path.js.dfg-eager
  stress/int52-force-osr-exit-path.js.dfg-eager-no-cjit-validate
  stress/int52-force-osr-exit-path.js.no-cjit-validate-phases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023115</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-07-17 14:49:37 -0700</bug_when>
    <thetext>Here is the output from one failure, stress/int52-force-osr-exit-path.js.dfg-eager-no-cjit-validate:

 Found an Int52RepUse to a double result: @27 -&gt; Check:Int52Rep:@23&lt;Double&gt;

 DFG for foo#BW9ZEJ:[0x10048af40-&gt;0x10048b3c0-&gt;0x1007cfb70, DFGFunctionCall, 36 (NeverInline)]:
   Fixpoint state: BeforeFixpoint; Form: ThreadedCPS; Unification state: GloballyUnified; Ref count state: EverythingIsLive

 Block #0 (bc#0):  (OSR target)
   Execution count: 1.000000
   Predecessors:
   Dominated by: #0
   Dominates: #0 #1 #2
   vars before: &lt;empty&gt;
   var links: arg4:@4 arg3:@3 arg2:@2 arg1:@1 arg0:@0
    0:           &lt; 1:-&gt;      SetArgument(arg0(a), W:SideState, bc#0)  predicting Otherobj
    1:           &lt; 1:-&gt;      SetArgument(IsFlushed, arg1(B&lt;Int32&gt;/FlushedInt32), W:SideState, bc#0)  predicting Int32
    2:           &lt; 1:-&gt;      SetArgument(IsFlushed, arg2(C&lt;Int32&gt;/FlushedInt32), W:SideState, bc#0)  predicting Int32
    3:           &lt; 1:-&gt;      SetArgument(IsFlushed, arg3(D&lt;Boolean&gt;/FlushedBoolean), W:SideState, bc#0)  predicting Bool
    4:           &lt; 1:-&gt;      SetArgument(IsFlushed, arg4(E&lt;Final&gt;/FlushedCell), W:SideState, bc#0)  predicting Final
    5:           &lt; 1:-&gt;      JSConstant(JS|PureInt, Other, $1 = Undefined, bc#0)
    6:           &lt; 1:-&gt;      MovHint(@5, loc0, W:SideState, bc#0)
    7:           &lt; 1:-&gt;      SetLocal(@5, CanExit, loc0(F~&lt;Other&gt;/FlushedJSValue), W:Variables(-1), bc#0)  predicting Other
    8:           &lt; 1:-&gt;      GetLocal(@1, JS|PureNum|UseAsOther|CanExit, Int32, arg1(B&lt;Int32&gt;/FlushedInt32), R:Variables(7), bc#1)  predicting Int32
    9:           &lt; 1:-&gt;      GetLocal(@2, JS|PureNum|UseAsOther|CanExit, Int32, arg2(C&lt;Int32&gt;/FlushedInt32), R:Variables(8), bc#1)  predicting Int32
   49:           &lt; 1:-&gt;      Int52Rep(Check:Int32:@8, Int52|PureInt|CanExit, Int32, bc#1)
   50:           &lt; 1:-&gt;      Int52Rep(Check:Int32:@9, Int52|PureInt|CanExit, Int32, bc#1)
   10:           &lt; 1:-&gt;      ArithAdd(Check:Int52Rep:@49&lt;Int52&gt;, Check:Int52Rep:@50&lt;Int52&gt;, Int52|PureNum|UseAsOther|MayOverflowInBaseline|MayOverflowInDFG|CanExit, Int52, CheckOverflow, bc#1)
   51:           &lt;!0:-&gt;      Phantom(@9, MustGen|CanExit, bc#1)
   52:           &lt;!0:-&gt;      Phantom(@8, MustGen|CanExit, bc#1)
   11:           &lt; 1:-&gt;      MovHint(Check:Int52Rep:@10&lt;Int52&gt;, loc0, W:SideState, bc#1)
   12:           &lt; 1:-&gt;      SetLocal(Check:Int52Rep:@10&lt;Int52&gt;, CanExit, loc0(G&lt;Int52&gt;/FlushedInt52), W:Variables(-1), bc#6)  predicting Int52
   13:           &lt; 1:-&gt;      GetLocal(@3, JS|UseAsOther|CanExit, Bool, arg3(D&lt;Boolean&gt;/FlushedBoolean), R:Variables(9), bc#6)  predicting Bool
   14:           &lt;!0:-&gt;      Branch(Check:Boolean:@13, MustGen|CanExit, T:#1/w:1.000000, F:#2/w:1.000000, W:SideState, bc#6)
   vars after: &lt;empty&gt;
   var links: arg4:@4 arg3:@13 arg2:@9 arg1:@8 arg0:@0 loc0:@12

 Block #1 (bc#9):
   Execution count: 1.000000
   Predecessors: #0
   Dominated by: #0 #1
   Dominates: #1
   Phi Nodes: @44&lt;1&gt;-&gt;(@12), @45&lt;1&gt;-&gt;(@4), @46&lt;1&gt;-&gt;(@1), @47&lt;1&gt;-&gt;(@2), @48&lt;1&gt;-&gt;(@3)
   vars before: &lt;empty&gt;
   var links: arg4:@45 arg3:@48 arg2:@47 arg1:@46 loc0:@44
   15:           &lt; 1:-&gt;      GetLocal(@44, Int52|PureNum|UseAsOther|CanExit, Int52, loc0(G&lt;Int52&gt;/FlushedInt52), R:Variables(-1), bc#9)  predicting Int52
   16:           &lt; 1:-&gt;      MovHint(Check:Int52Rep:@15&lt;Int52&gt;, loc1, W:SideState, bc#9)
   17:           &lt; 1:-&gt;      SetLocal(@53, CanExit, loc1(I~&lt;Int52&gt;/FlushedJSValue), W:Variables(-2), bc#12)  predicting Int52
   18:           &lt;!0:-&gt;      ForceOSRExit(MustGen|CanExit, W:SideState, bc#12)
   19:           &lt; 1:-&gt;      GetLocal(@45, JS|UseAsOther|CanExit, Final, arg4(E&lt;Final&gt;/FlushedCell), R:Variables(10), bc#12)  predicting Final
   20:           &lt;!0:-&gt;      GetById(Check:Cell:@19, JS|MustGen|Clobbers|PureNum|UseAsOther|CanExit, id0{f}, R:World, W:World, bc#12)  predicting None
   21:           &lt; 1:-&gt;      MovHint(@20, loc2, W:SideState, bc#12)
   22:           &lt; 1:-&gt;      SetLocal(@20, CanExit, loc2(K~/FlushedJSValue), W:Variables(-3), bc#21)  predicting None
   23:           &lt; 1:-&gt;      ArithSub(Check:DoubleRep:@55&lt;Double&gt;, Check:DoubleRep:@56&lt;Double&gt;, Double|PureNum|UseAsOther|CanExit, NotSet, bc#21)
   24:           &lt; 1:-&gt;      MovHint(Check:DoubleRep:@23&lt;Double&gt;, loc1, W:SideState, bc#21)
   25:           &lt; 1:-&gt;      SetLocal(@59, CanExit, loc1(L~/FlushedJSValue), W:Variables(-2), bc#26)  predicting None
   26:           &lt; 1:-&gt;      MovHint(Check:DoubleRep:@23&lt;Double&gt;, loc0, W:SideState, bc#26)
   27:           &lt; 1:-&gt;      SetLocal(Check:Int52Rep:@23&lt;Double&gt;, CanExit, loc0(G&lt;Int52&gt;/FlushedInt52), W:Variables(-1), bc#29)  predicting Int52
   28:           &lt;!0:-&gt;      Jump(MustGen|CanExit, T:#2, W:SideState, bc#29)
   vars after: &lt;empty&gt;
   var links: arg4:@19 arg3:@48 arg2:@47 arg1:@46 loc0:@27 loc1:@25 loc2:@22

 Block #2 (bc#29):
   Execution count: 1.000000
   Predecessors: #0 #1
   Dominated by: #0 #2
   Dominates: #2
   Phi Nodes: @39&lt;1&gt;-&gt;(@27, @12), @40&lt;1&gt;-&gt;(@45, @4), @41&lt;1&gt;-&gt;(@48, @3), @42&lt;1&gt;-&gt;(@47, @2), @43&lt;1&gt;-&gt;(@46, @1)
   vars before: &lt;empty&gt;
   var links: arg4:@34 arg3:@35 arg2:@36 arg1:@37 loc0:@39
   29:           &lt; 1:-&gt;      GetLocal(@39, Int52|PureNum|UseAsOther|CanExit, Int52, loc0(G&lt;Int52&gt;/FlushedInt52), R:Variables(-1), bc#29)  predicting Int52
   30:           &lt; 1:-&gt;      JSConstant(JS|PureNum|UseAsOther, Int32, $0 = Int32: 1, bc#29)
   31:           &lt; 1:-&gt;      ArithAdd(Check:Int52Rep:@29&lt;Int52&gt;, Check:Int52Rep:@30, Int52|UseAsOther|MayOverflowInBaseline|CanExit, Int52, CheckOverflow, bc#29)
   32:           &lt; 1:-&gt;      MovHint(@31&lt;Int52&gt;, loc1, W:SideState, bc#29)
   33:           &lt; 1:-&gt;      SetLocal(@31&lt;Int52&gt;, CanExit, loc1(O~&lt;Int52&gt;/FlushedJSValue), W:Variables(-2), bc#34)  predicting Int52
   34:           &lt;!0:-&gt;      Flush(@40, MustGen|IsFlushed, arg4(E&lt;Final&gt;/FlushedCell), W:SideState, bc#34)  predicting Final
   35:           &lt;!0:-&gt;      Flush(@41, MustGen|IsFlushed, arg3(D&lt;Boolean&gt;/FlushedBoolean), W:SideState, bc#34)  predicting Bool
   36:           &lt;!0:-&gt;      Flush(@42, MustGen|IsFlushed, arg2(C&lt;Int32&gt;/FlushedInt32), W:SideState, bc#34)  predicting Int32
   37:           &lt;!0:-&gt;      Flush(@43, MustGen|IsFlushed, arg1(B&lt;Int32&gt;/FlushedInt32), W:SideState, bc#34)  predicting Int32
   38:           &lt;!0:-&gt;      Return(@31&lt;Int52&gt;, MustGen|CanExit, W:SideState, bc#34)
   vars after: &lt;empty&gt;
   var links: arg4:@34 arg3:@35 arg2:@36 arg1:@37 loc0:@29&lt;Int52&gt; loc1:@33

 1   0x186a02224 &lt;redacted&gt;
 2   0x1868b3f74 &lt;redacted&gt;
 3   0x1868b3c98 &lt;redacted&gt;
 4   0x1868b3c30 &lt;redacted&gt;
 5   0x186a3d6b0 &lt;redacted&gt;
 6   0x186a3d308 &lt;redacted&gt;
 7   0x186a0120c &lt;redacted&gt;
 8   0x186b1a014 &lt;redacted&gt;
 9   0x1432c8c5c
 10  0x1432ca200
 11  0x186ba3454 &lt;redacted&gt;
 12  0x186b10c3c &lt;redacted&gt;
 13  0x186852d84 &lt;rRunning regress/script-tests/constant-test.js.no-llint
[2014-07-15 12:49:48] INFO: edacted&gt;
 14  0x186850e30 JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, JSC::JSValue*)
 15  0x1000f7cb8
 16  0x1000f7648
 17  0x196772a08 &lt;redacted&gt;
 ./test_script_1950: line 2: 16616 Segmentation fault: 11  &quot;$@&quot; /System/Library/Frameworks/JavaScriptCore.framework/Resources/jsc --useFTLJIT\=false --validateGraph\=true --thresholdForJITAfterWarmUp\=10 --thresholdForJITSoon\=10 --thresholdForOptimizeAfterWarmUp\=20 --thresholdForOptimizeAfterLongWarmUp\=20 --thresholdForOptimizeSoon\=20 --thresholdForFTLOptimizeAfterWarmUp\=20 --thresholdForFTLOptimizeSoon\=20 --enableConcurrentJIT\=false --thresholdForJITAfterWarmUp\=100 int52-force-osr-exit-path.js
 ERROR: Unexpected exit code: 139</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023482</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-07-19 14:18:14 -0700</bug_when>
    <thetext>The test failures were due to running new tests on builds that didn&apos;t include the corresponding changes.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>