[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