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

ARM InterpreterMacroAssembler::get_method_counters() should not be saving caller saved registers

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 10
    • 9
    • hotspot
    • None
    • b21
    • arm

      JDK-8012544 added a bunch of caller register saving to InterpreterMacroAssembler::get_method_counters() around the call_VM() call. The reason is because there are a couple of callers of get_method_counters() that need to have r0 and r3 preserved. get_method_counters() should not be responsible for having to save caller saved registers. It does not know which ones are in use when it is called, so it can't do this efficiently. In fact 2 of the 4 callers of get_method_counters() do not need any registers saved. For this reason the caller of get_method_counters() should be responsible for saving caller registers.Related to the this CR is JDK-8154547. Because of all the register saving, the arm64 port added an extra stack bang to make sure the stack growth didn't result in less the StackShadowPages being available. The resultant SOE led to unexpected behavior. That CR will actually be fixed by just removing the stack bang (it's not really needed for such a small amount of stack growth), but the register saving should still be removed out of get_method_counters() and handled by its caller.

            cjplummer Chris Plummer
            cjplummer Chris Plummer
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: