Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6353865

callee save registers are corrupted in 64bit vm

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P4
    • Resolution: Won't Fix
    • Affects Version/s: 1.4.2_11
    • Fix Version/s: 7
    • Component/s: hotspot
    • Labels:
      None
    • Subcomponent:
    • Introduced In Version:
    • CPU:
      x86
    • OS:
      generic, solaris_10

      Description

      A PRT run of solaris amd64 was failing in specJBB. I eventually discovered that
      it is because of the way callee save registers are treated on 64bit platforms.
      (sparc is basically immune because it uses L registers). When we deoptimize because
      c2 thinks of registers as 32bit items we create 2 entries in the callee save area
      of the vframe array. Each entry is 64bits wide (ought to be 32bits). So this
      means that we store two copies of the callee save register. The gc will only
      update the lower numbered slot. When the c2i adapter gets setup it copies
      BOTH slots out of the vframe array and since the high numbered slot is
      written last (the un-gc'd slot) it "wins". This causes random bad oop failures.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                sgoldman Steve Goldman (Inactive)
                Reporter:
                sgoldman Steve Goldman (Inactive)
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Imported:
                  Indexed: