Closed Bug 604334 Opened 14 years ago Closed 10 years ago

tests/32-bit/many_params.in failed on SPARC

Categories

(Core Graveyard :: Nanojit, defect)

Sun
OpenSolaris
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: ginnchen+exoracle, Assigned: ginnchen+exoracle)

Details

(Whiteboard: fixed-in-nanojit, fixed-in-tamarin)

Attachments

(1 file, 1 obsolete file)

Currently asm_param only supports less than 6 params.
argRegs[a] bounds exceeded when a is 6.
Attached patch patch (obsolete) — Splinter Review
Assignee: nobody → ginn.chen
Status: NEW → ASSIGNED
Attachment #484261 - Flags: review?(edwsmith)
Attachment #484261 - Flags: review?(edwsmith) → review?(wmaddox)
Delegating review to Bill who has a keener eye for Sparc than I do.
Comment on attachment 484261 [details] [diff] [review]
patch

It looks like that in NativeSparc.cpp, calls to underrunProtect() are lifted to the asm_foo() routines rather than performed in the emitters for the individual instructions, e.g., the LDSW32.  I think you need one here, or at least need to convince me (and document in a comment) why one is not required in this case.
Attachment #484261 - Flags: review?(wmaddox) → review-
Attached patch patch v2Splinter Review
Thanks for the catch.
I'll check other places for underrunprotect and fix them in other patches.
Attachment #484261 - Attachment is obsolete: true
Attachment #485239 - Flags: review?(wmaddox)
Comment on attachment 485239 [details] [diff] [review]
patch v2

Lifting underrunProtect() to contexts in which the actual length of the emitted code is not obvious seems asking for trouble.  On i386, the low-level instruction emitters take care of this, rather than the 'asm_foo' routines.
Perhaps we should consider this approach on Sparc as well.
Attachment #485239 - Flags: review?(wmaddox) → review+
Agreed.  You'll want to keep underrunProtect close to the location that actually emits the machine code, ideally in the emitters only.

If you need to protect a sequence of instructions (e.g a location that will be patched later), then placing it outside is ok, but be very careful that the code in between can absolutely honour the implied contract.  You'll probably also want to comment on that type of usage.
http://hg.mozilla.org/projects/nanojit-central/rev/5a600b5166ea
Whiteboard: fixed-in-nanojit
(In reply to comment #6)
> Agreed.  You'll want to keep underrunProtect close to the location that
> actually emits the machine code, ideally in the emitters only.
> 
> If you need to protect a sequence of instructions (e.g a location that will be
> patched later), then placing it outside is ok, but be very careful that the
> code in between can absolutely honour the implied contract.  You'll probably
> also want to comment on that type of usage.

Filed Bug 608098
http://hg.mozilla.org/tamarin-redux/rev/51f4eaf0a1ed
Whiteboard: fixed-in-nanojit → fixed-in-nanojit, fixed-in-tamarin
Product: Core → Core Graveyard
Nanojit has been dead for several years. Its Bugzilla component has been moved to the graveyard (bug 984276).

I checked all the open bugs. They're all uninteresting, so I'm WONTFIXing them all. Apologies for the bugspam.
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: