[Webkit-unassigned] [Bug 266942] New: generateWasm.py: return value can be wrong due IEEE 754 precision

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sat Dec 30 16:59:11 PST 2023


https://bugs.webkit.org/show_bug.cgi?id=266942

            Bug ID: 266942
           Summary: generateWasm.py: return value can be wrong due IEEE
                    754 precision
           Product: WebKit
           Version: WebKit Local Build
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: JavaScriptCore
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: conrad+webkitbugzilla at kostecki.com

The assert function currently checks, if power number raised to the number fits memorybits.

This seems not always work on every system, as it happens, that the float numbers are not correctly rounded.
I suspect, that this is related to the IEEE 754 precision. It looks like, that 'math.log' always produced a float.

This patch adds an int, so its being rounded to a full number and works on my system, where otherwise the rounding would fail. The return method also returns the result as an int.

Example:
* start python (tested with 3.11 and 3.12)
$ import math

$ 2 ** 3
= 8

$ 2.0 ** 3.0
= 7.999999999999999

$ int(2.0) ** int(3.0)
= 8

$ 2 ** int(3.0)
= 8


diff --git a/Source/JavaScriptCore/wasm/generateWasm.py b/Source/JavaScriptCore/wasm/generateWasm.py
index 434223d346a0d..7a99210b60a21 100755
--- a/Source/JavaScriptCore/wasm/generateWasm.py
+++ b/Source/JavaScriptCore/wasm/generateWasm.py
@@ -136,5 +136,5 @@ def memoryLog2Alignment(op):
         if not match:
             print(op["name"])
         memoryBits = int(match.group(2) if match.group(2) else match.group(1))
-    assert 2 ** math.log(memoryBits, 2) == memoryBits
+    assert 2 ** int(math.log(memoryBits, 2)) == memoryBits
     return str(int(math.log(memoryBits / 8, 2)))

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20231231/1c18e20f/attachment.htm>


More information about the webkit-unassigned mailing list