Closed Bug 532578 Opened 16 years ago Closed 16 years ago

Verifier::emitCheckNull is wrong for nanojit-compiled-but-disabled builds

Categories

(Tamarin Graveyard :: Virtual Machine, defect)

defect
Not set
normal

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: stejohns, Assigned: stejohns)

Details

Attachments

(1 file)

Attached patch PatchSplinter Review
The code in emitCheckNull attempts to kill all copies of the value as notNull, but if the JIT is disabled at runtime, all values of Value.ins are NULL, so they all (incorrectly) match... meaning that all values get marked as notNull. This can cause bogus Verify errors.
Attachment #415796 - Attachment is patch: true
Attachment #415796 - Attachment mime type: application/octet-stream → text/plain
Attachment #415796 - Flags: superreview?(edwsmith)
Attachment #415796 - Flags: review?(jodyer)
Evidence that this fix is correct includes that before the verifier refactoring of early this year, emitCheckNull was only called when the jit was enabled. So this code was never even run in interp mode. What I don't understand is how nullability was managed then. IOW, how the verifier semantics of interp and jit modes could be the same. That said, this fix looks reasonable.
Attachment #415796 - Flags: review?(jodyer) → review+
Attachment #415796 - Flags: superreview?(edwsmith) → superreview+
pushed as changeset: 3262:68a6172597ca
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
Assignee: nobody → stejohns
Engineering work item. Marking as verified.
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: