Shenandoah: C1: Resolve into registers of correct type

XMLWordPrintable

    • gc
    • b10
    • Verified


      Take recent jdk/jdk, apply this patch:

      diff -r b585d773ea0f src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp
      --- a/src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp Mon Feb 10 06:18:46 2020 +0100
      +++ b/src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp Tue Feb 11 09:32:11 2020 +0100
      @@ -852,11 +852,11 @@
             return;
           }
       #endif
           assert(src->is_single_cpu(), "must match");
           if (src->type() == T_OBJECT) {
      - __ verify_oop(src->as_register());
      + __ verify_oop(src->as_register(), "reg2reg 1");
           }
           move_regs(src->as_register(), dest->as_register());
       
         } else if (dest->is_double_cpu()) {
       #ifdef _LP64

      ...then run this in any folder (Maven project is not required!):

      $ export JAVA_HOME=...
      $ export PATH=$JAVA_HOME/bin:$PATH
      $ MAVEN_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+UseShenandoahGC -XX:+VerifyOops" mvn verify

      # A fatal error has been detected by the Java Runtime Environment:
      #
      # Internal Error (/home/shade/trunks/jdk-jdk/src/hotspot/cpu/x86/macroAssembler_x86.cpp:883), pid=13783, tid=13799
      # fatal error: DEBUG MESSAGE: verify_oop: rax: reg2reg 1
      #

            Assignee:
            Roman Kennke
            Reporter:
            Aleksey Shipilev
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: