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

Zero broken after 8198445

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P4 P4
    • 11
    • 11
    • hotspot
    • None
    • generic
    • linux

      JDK-8198445 changed the function signature of RawAccessBarrier::arraycopy() but forgot to update the call to arraycopy() in the overloaded function bool RawAccessBarrier<decorators>::oop_arraycopy(arrayOop src_obj, arrayOop dst_obj, HeapWord* src, HeapWord* dst, size_t length).

      This causes the Zero build to fail with:

      === Output from failing command(s) repeated here ===
      /usr/bin/printf "* For target hotspot_variant-zero_libjvm_objs_abstractInterpreter.o:\n"
      * For target hotspot_variant-zero_libjvm_objs_abstractInterpreter.o:
      (/bin/grep -v -e "^Note: including file:" <
      /home/glaubitz/upstream/hs/build/linux-x86_64-normal-zero-release/make-support/failure-logs/hotspot_variant-zero_libjvm_objs_abstractInterpreter.o.log || true)
      | /usr/bin/head -n 12
      In file included from /home/glaubitz/upstream/hs/src/hotspot/share/oops/access.inline.hpp:35:0,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/oops/oop.inline.hpp:32,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/memory/metaspaceShared.hpp:32,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/interpreter/abstractInterpreter.cpp:36:
      /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.inline.hpp: In static member function ‘static bool
      RawAccessBarrier<decorators>::oop_arraycopy(arrayOop, arrayOop, HeapWord*, HeapWord*, size_t)’:
      /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.inline.hpp:129:98: error: no matching function for call to
      ‘RawAccessBarrier<decorators>::arraycopy(narrowOop*, narrowOop*, size_t&)’
           return arraycopy(reinterpret_cast<narrowOop*>(src), reinterpret_cast<narrowOop*>(dst), length);
                                                                                                        ^
      In file included from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/barrierSet.hpp:31:0,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/collectorPolicy.hpp:28,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/genCollectedHeap.hpp:29,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/oops/oop.inline.hpp:30,
      if test `/usr/bin/wc -l <
      /home/glaubitz/upstream/hs/build/linux-x86_64-normal-zero-release/make-support/failure-logs/hotspot_variant-zero_libjvm_objs_abstractInterpreter.o.log` -gt 12;
      then /bin/echo " ... (rest of output omitted)" ; fi
         ... (rest of output omitted)
      /usr/bin/printf "* For target hotspot_variant-zero_libjvm_objs_accessBackend.o:\n"
      * For target hotspot_variant-zero_libjvm_objs_accessBackend.o:
      (/bin/grep -v -e "^Note: including file:" <
      /home/glaubitz/upstream/hs/build/linux-x86_64-normal-zero-release/make-support/failure-logs/hotspot_variant-zero_libjvm_objs_accessBackend.o.log || true) |
      /usr/bin/head -n 12
      In file included from /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.cpp:26:0:
      /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.inline.hpp: In static member function ‘static bool
      RawAccessBarrier<decorators>::oop_arraycopy(arrayOop, arrayOop, HeapWord*, HeapWord*, size_t)’:
      /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.inline.hpp:129:98: error: no matching function for call to
      ‘RawAccessBarrier<decorators>::arraycopy(narrowOop*, narrowOop*, size_t&)’
           return arraycopy(reinterpret_cast<narrowOop*>(src), reinterpret_cast<narrowOop*>(dst), length);
                                                                                                        ^
      In file included from /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.inline.hpp:29:0,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.cpp:26:
      /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.hpp:343:15: note: candidate: template<long unsigned int decorators> template<class T> static
      bool RawAccessBarrier<decorators>::arraycopy(arrayOop, arrayOop, T*, T*, size_t)
         static bool arraycopy(arrayOop src_obj, arrayOop dst_obj, T* src, T* dst, size_t length);
                     ^~~~~~~~~
      /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.hpp:343:15: note: template argument deduction/substitution failed:
      In file included from /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.cpp:26:0:
      if test `/usr/bin/wc -l <
      /home/glaubitz/upstream/hs/build/linux-x86_64-normal-zero-release/make-support/failure-logs/hotspot_variant-zero_libjvm_objs_accessBackend.o.log` -gt 12; then
      /bin/echo " ... (rest of output omitted)" ; fi
         ... (rest of output omitted)
      /usr/bin/printf "* For target hotspot_variant-zero_libjvm_objs_accessBarrierSupport.o:\n"
      * For target hotspot_variant-zero_libjvm_objs_accessBarrierSupport.o:
      (/bin/grep -v -e "^Note: including file:" <
      /home/glaubitz/upstream/hs/build/linux-x86_64-normal-zero-release/make-support/failure-logs/hotspot_variant-zero_libjvm_objs_accessBarrierSupport.o.log || true)
      | /usr/bin/head -n 12
      In file included from /home/glaubitz/upstream/hs/src/hotspot/share/oops/access.inline.hpp:35:0,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/classfile/javaClasses.inline.hpp:29,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/accessBarrierSupport.cpp:26:
      /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.inline.hpp: In static member function ‘static bool
      RawAccessBarrier<decorators>::oop_arraycopy(arrayOop, arrayOop, HeapWord*, HeapWord*, size_t)’:
      /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.inline.hpp:129:98: error: no matching function for call to
      ‘RawAccessBarrier<decorators>::arraycopy(narrowOop*, narrowOop*, size_t&)’
           return arraycopy(reinterpret_cast<narrowOop*>(src), reinterpret_cast<narrowOop*>(dst), length);
                                                                                                        ^
      In file included from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/barrierSet.hpp:31:0,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/barrierSet.inline.hpp:28,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/modRefBarrierSet.inline.hpp:28,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/barrierSetConfig.inline.hpp:30,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/oops/access.inline.hpp:28,
      if test `/usr/bin/wc -l <
      /home/glaubitz/upstream/hs/build/linux-x86_64-normal-zero-release/make-support/failure-logs/hotspot_variant-zero_libjvm_objs_accessBarrierSupport.o.log` -gt 12;
      then /bin/echo " ... (rest of output omitted)" ; fi
         ... (rest of output omitted)
      /usr/bin/printf "* For target hotspot_variant-zero_libjvm_objs_accessFlags.o:\n"
      * For target hotspot_variant-zero_libjvm_objs_accessFlags.o:
      (/bin/grep -v -e "^Note: including file:" <
      /home/glaubitz/upstream/hs/build/linux-x86_64-normal-zero-release/make-support/failure-logs/hotspot_variant-zero_libjvm_objs_accessFlags.o.log || true) |
      /usr/bin/head -n 12
      In file included from /home/glaubitz/upstream/hs/src/hotspot/share/oops/access.inline.hpp:35:0,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/oops/oop.inline.hpp:32,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/utilities/accessFlags.cpp:26:
      /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.inline.hpp: In static member function ‘static bool
      RawAccessBarrier<decorators>::oop_arraycopy(arrayOop, arrayOop, HeapWord*, HeapWord*, size_t)’:
      /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.inline.hpp:129:98: error: no matching function for call to
      ‘RawAccessBarrier<decorators>::arraycopy(narrowOop*, narrowOop*, size_t&)’
           return arraycopy(reinterpret_cast<narrowOop*>(src), reinterpret_cast<narrowOop*>(dst), length);
                                                                                                        ^
      In file included from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/barrierSet.hpp:31:0,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/collectorPolicy.hpp:28,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/genCollectedHeap.hpp:29,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/oops/oop.inline.hpp:30,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/utilities/accessFlags.cpp:26:
      if test `/usr/bin/wc -l <
      /home/glaubitz/upstream/hs/build/linux-x86_64-normal-zero-release/make-support/failure-logs/hotspot_variant-zero_libjvm_objs_accessFlags.o.log` -gt 12; then
      /bin/echo " ... (rest of output omitted)" ; fi
         ... (rest of output omitted)
      /usr/bin/printf "* For target hotspot_variant-zero_libjvm_objs_ageTable.o:\n"
      * For target hotspot_variant-zero_libjvm_objs_ageTable.o:
      (/bin/grep -v -e "^Note: including file:" <
      /home/glaubitz/upstream/hs/build/linux-x86_64-normal-zero-release/make-support/failure-logs/hotspot_variant-zero_libjvm_objs_ageTable.o.log || true) |
      /usr/bin/head -n 12
      In file included from /home/glaubitz/upstream/hs/src/hotspot/share/oops/access.inline.hpp:35:0,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/oops/oop.inline.hpp:32,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/ageTable.inline.hpp:29,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/ageTable.cpp:27:
      /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.inline.hpp: In static member function ‘static bool
      RawAccessBarrier<decorators>::oop_arraycopy(arrayOop, arrayOop, HeapWord*, HeapWord*, size_t)’:
      /home/glaubitz/upstream/hs/src/hotspot/share/oops/accessBackend.inline.hpp:129:98: error: no matching function for call to
      ‘RawAccessBarrier<decorators>::arraycopy(narrowOop*, narrowOop*, size_t&)’
           return arraycopy(reinterpret_cast<narrowOop*>(src), reinterpret_cast<narrowOop*>(dst), length);
                                                                                                        ^
      In file included from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/barrierSet.hpp:31:0,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/collectorPolicy.hpp:28,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/gc/shared/genCollectedHeap.hpp:29,
                       from /home/glaubitz/upstream/hs/src/hotspot/share/oops/oop.inline.hpp:30,
      if test `/usr/bin/wc -l <
      /home/glaubitz/upstream/hs/build/linux-x86_64-normal-zero-release/make-support/failure-logs/hotspot_variant-zero_libjvm_objs_ageTable.o.log` -gt 12; then
      /bin/echo " ... (rest of output omitted)" ; fi
         ... (rest of output omitted)
      /usr/bin/printf "\n* All command lines available in /home/glaubitz/upstream/hs/build/linux-x86_64-normal-zero-release/make-support/failure-logs.\n"

      * All command lines available in /home/glaubitz/upstream/hs/build/linux-x86_64-normal-zero-release/make-support/failure-logs.
      /usr/bin/printf "=== End of repeated output ===\n"
      === End of repeated output ===

      This is trivially fixed by:

      diff -r e06f9607f370 src/hotspot/share/oops/accessBackend.inline.hpp
      --- a/src/hotspot/share/oops/accessBackend.inline.hpp Fri Mar 16 22:59:32 2018 -0700
      +++ b/src/hotspot/share/oops/accessBackend.inline.hpp Sun Mar 18 13:26:41 2018 +0100
      @@ -126,9 +126,9 @@
         bool needs_oop_compress = HasDecorator<decorators, INTERNAL_CONVERT_COMPRESSED_OOP>::value &&
                                   HasDecorator<decorators, INTERNAL_RT_USE_COMPRESSED_OOPS>::value;
         if (needs_oop_compress) {
      - return arraycopy(reinterpret_cast<narrowOop*>(src), reinterpret_cast<narrowOop*>(dst), length);
      + return arraycopy(src_obj, dst_obj, reinterpret_cast<narrowOop*>(src), reinterpret_cast<narrowOop*>(dst), length);
         } else {
      - return arraycopy(reinterpret_cast<oop*>(src), reinterpret_cast<oop*>(dst), length);
      + return arraycopy(src_obj, dst_obj, reinterpret_cast<oop*>(src), reinterpret_cast<oop*>(dst), length);
         }
       }

            glaubitz John Paul Adrian Glaubitz
            glaubitz John Paul Adrian Glaubitz
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: