Closed Bug 878435 Opened 12 years ago Closed 12 years ago

OdinMonkey: (0 > (0x80000000 | 0)) is wrong

Categories

(Core :: JavaScript Engine, defect)

x86_64
macOS
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla24

People

(Reporter: jruderman, Assigned: bbouvier)

References

Details

(Keywords: testcase)

Attachments

(1 file)

function g() { "use asm"; function f() { return (0 > (0x80000000 | 0)) | 0; } return f; } print(g()()); asm.js result: 0 normal result: 1
Looking at the code showed that the constant 0 was directly put in the output register. This happened because the comparison was folded during GVN. The only single problem is that the comparison occurred on *unsigned* int32 values, hence the patch.
Assignee: general → bbouvier
Status: NEW → ASSIGNED
Attachment #759513 - Flags: review?(luke)
Comment on attachment 759513 [details] [diff] [review] proposed fix + test case D'oh! Fixnums are both signed and unsigned... nice find and perfect fix!
Attachment #759513 - Flags: review?(luke) → review+
Going to go out on a limb that opt builds don't care for disassemble.
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla24
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: