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

C1: PatchingStub for field access copies too much

XMLWordPrintable

    • b22

        C1's PatchingStub copies bytes from the method's regular code area to a dedicated patching template which gets copied back when the patching work is completed.
        Currently, C1's PatchingStub with PatchID "access_field_id" copies all bytes between the PatchingStub's instanciation and the patching_epilog call.
        This is not only more than necessary, it can cause _bytes_to_copy to exceed its one byte limitation: emit_int8(_bytes_to_copy).
        On some platforms, code for VerifyOops is part of the code which gets copied forth and back. This is unnecessary and should be avoided.
        Note that the template for PatchID "access_field_id" never gets executed, so there's no reason for copying more than the code to be patched.

        So there are basically 2 issues:
        - Possible size overflow (depending on platform and activated features)
        - Wasted code cache space

              mdoerr Martin Doerr
              mdoerr Martin Doerr
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: