<?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>296270</bug_id>
          
          <creation_ts>2025-07-21 05:17:04 -0700</creation_ts>
          <short_desc>Abstract Interpreter incorrectly optimized CompareLessEq into Constant True when two oprands are undefined.</short_desc>
          <delta_ts>2025-07-22 12:30:50 -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>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=296316</see_also>
          <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="EntryHi">entryhii</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>syg</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2131557</commentid>
    <comment_count>0</comment_count>
    <who name="EntryHi">entryhii</who>
    <bug_when>2025-07-21 05:17:04 -0700</bug_when>
    <thetext>Hello, I found a bug in JavaScriptCore (commit id: 04d2f39a0b7924afd3de78310c80fbc8b6109fd8).

PoC.js:
```
function opt(start, end) {
  for (let j = start; j &lt;= end; j++) {
    function f() { f = start; }
    print(j)
  }
}

for (let i = 0; i &lt; 10; i++) {
  opt(opt, i);
  opt();   // print accidently
  print(i) // for debug
}
```

Reproduce:
1. ./jsc --useConcurrentJIT=0 --jitPolicyScale=0  PoC.js
2. ./jsc --useConcurrentJIT=0 --jitPolicyScale=0.001 PoC.js

Result of Step1:
0
1
2
undefined
3
undefined
4
undefined
5
undefined
6
undefined
7
undefined
8
9

Result of Step 2:
0
1
2
3
4
5
6
7
8
9

Function opt is inlined into global function in FTL. 
In the second opt call, CompareLessEq has two oprands, both of them are Constant undefined. 
Abstract Interpreter incorrectly converts CompareLessEq into Constant True in Constant Folding Optimization. 
Actually, ```undefined &lt;= undefined``` should return false in JavaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2131761</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-07-21 18:29:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/156361256&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2131765</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2025-07-21 18:31:12 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/48360</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2131788</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2025-07-21 22:30:37 -0700</bug_when>
    <thetext>Committed 297726@main (101f7c7836ea): &lt;https://commits.webkit.org/297726@main&gt;

Reviewed commits have been landed. Closing PR #48360 and removing active labels.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>