Closed Bug 504594 Opened 10 years ago Closed 10 years ago

Addresses in nanojit-debug output are wrong on SPARC

Categories

(Core :: JavaScript Engine, defect)

Sun
All
defect
Not set

Tracking

()

RESOLVED FIXED

People

(Reporter: wes, Unassigned)

Details

(Whiteboard: fixed-in-tracemonkey)

Attachments

(1 file)

Nanojit-debug output:

  00fed95f60   [prologue]
  00fed95f64   nop
  00fed95f68   nop
  00fed95f6c   nop
  00fed95f70   save %sp, -152, %sp

GDB Disassembly:

0xfed95f60:     nop
0xfed95f64:     nop
0xfed95f68:     nop
0xfed95f6c:     save  %sp, -152, %sp
0xfed95f70:     ldsw  [ %i1 + 0x10 ], %l1

The attached patch corrects this issue by inverting the order of instruction formating vs. asm_output() to match the x86 code (format, then output).  The patch also removes a superflous verbose_only guard on asm_output() for the CALL instruction.

Thanks go to sewardj, his keen eyes spotted the root cause of this problem.

Even with this patch, there is still a small SPARC output bug: the NOP in the final branch delay slot (after the returning JMPL) does not have an address in the debug output. That NOP corresponds to asmOutput.data[0], so the epilogue looks like this:

  00fed95fe4   [epilogue]
  00fed95fe8   or %o0, 0, %i0
  00fed95fec   jmpl [%i7 + 8]
  00fed95ff0   restore
  00fed95ff4   sethi fedc2000, %g2
  00fed95ff8   or %g2, 0, %g2
  00fed95ffc   jmpl [%g0 + %g2]
               nop
Attachment #388932 - Flags: review?(graydon)
Comment on attachment 388932 [details] [diff] [review]
Patch to fix nanojit-debug addresses on SPARC

Looks good.
Attachment #388932 - Flags: review?(graydon) → review+
Keywords: checkin-needed
http://hg.mozilla.org/tamarin-redux/rev/e4fd2000638f
http://hg.mozilla.org/tracemonkey/rev/0f54349334ba
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Keywords: checkin-needed
Whiteboard: fixed-in-tracemonkey
You need to log in before you can comment on or make changes to this bug.