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

RISC-V: Unify the way of moving function pointer

    XMLWordPrintable

Details

    • Enhancement
    • Resolution: Fixed
    • P4
    • 20
    • 20
    • hotspot
    • None
    • b15
    • riscv
    • linux

    Backports

      Description

        Currently, there are two different ways of moving function pointer on riscv with either 'li' or 'mv' assembler functions. For example, in file shenandoahBarrierSetAssembler_riscv.cpp, we use 'li' function:
          li(ra, (int64_t)(uintptr_t)ShenandoahRuntime::load_reference_barrier_strong_narrow)

        But in file templateInterpreterGenerator_riscv.cpp, we use 'mv' function:
          mv(t1, CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans))

        Use of 'mv' here calls 'movptr' and will emits fixed length instruction sequence, which is neither necessary nor optimal compared with use of 'li'.

        We should change to use 'li' instead of 'movptr' to implement 'mv' thus unifying the way of moving function pointer.

        Attachments

          Issue Links

            Activity

              People

                fyang Fei Yang
                fyang Fei Yang
                Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved: