RFR(XS): fix c2-only compilation and some tests

Liu Xin navy.xliu at gmail.com
Tue Aug 7 01:34:03 UTC 2018


Hi, Vladimir, 
Thanks for the advice. 

First of all, I know the reason why I can’t reproduce the failure on my platform before. 
It’s because MacOSX can’t attach to the SA by default [JDK-8199700]. As a the issue said, using ‘sudo’ can work it around. 

Secondly,  I don’t understand why C2 has to depot the method but C1 can keep it. 
If we run c1-only build, we can see the NMethod: 
hsdb> Address 0x000000010481d12c: In code in NMethod for jdk/test/lib/apps/LingeredApp.main([Ljava/lang/String;)V content: [0x000000010481ce00, 0x000000010481d890),  code: [0x000000010481ce00, 0x000000010481d890),  data: [0x000000010481d890, 0x000000010481e080),  oops: [0x000000010481d890, 0x000000010481d898),  frame size: 144

Currently, Whitebox doesn’t have any API to tell C1 is on. We can have the following lemma to determine C1. 
  C1 is present iff VMTYPE  is ("Client”) or !stderr.contains("TieredCompilation not supported in this VM”) if user pass in ''-XX:+TieredCompilation"

It can be proofed from the following 2 macros. 
1. macros.hpp
#ifdef COMPILER1
#ifdef COMPILER2
  #define TIERED
#endif
#endif 

2. vm_versoin.cpp
#ifndef VMTYPE
  #ifdef TIERED
    #define VMTYPE "Server"
  #else // TIERED
     #define VMTYPE COMPILER1_PRESENT("Client")   \
                    COMPILER2_PRESENT("Server")
  #endif // ZERO
  #endif // TIERED
#endif

As a result, I can throw SkippedException if C1 is absent.

Is it a good practice to have this complex logic in test? How about we add a new API to tell C1 is present or not?  
Or provide a API in JTReglib?

diff -r 11abc1eb1d32 test/hotspot/jtreg/serviceability/sa/ClhsdbFindPC.java
--- a/test/hotspot/jtreg/serviceability/sa/ClhsdbFindPC.java    Fri Aug 03 16:01:00 2018 -0700
+++ b/test/hotspot/jtreg/serviceability/sa/ClhsdbFindPC.java    Mon Aug 06 18:28:30 2018 -0700
@@ -27,7 +27,10 @@
 import java.util.ArrayList;

 import jdk.test.lib.apps.LingeredApp;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;

+import jtreg.SkippedException;
 /**
  * @test
  * @bug 8193124
@@ -38,9 +41,29 @@
  */

 public class ClhsdbFindPC {
+    private static boolean isCompiler1Present() throws Exception {
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+          "-XX:+IgnoreUnrecognizedVMOptions", "-showversion",
+          "-XX:+TieredCompilation");
+
+        OutputAnalyzer analyzer = new OutputAnalyzer(pb.start());
+        String stderr = analyzer.getStderr();
+
+        if (stderr.contains("Client VM")
+        || !stderr.contains("TieredCompilation not supported in this VM")) {
+            return true;
+        }
+
+        return false;
+    }

     private static void testFindPC(boolean withXcomp) throws Exception {
         LingeredApp theApp = null;
+
+        if (withXcomp && !isCompiler1Present()) {
+            throw new SkippedException("C2 generated code will always deopt methods which have unloaded (during compilation) classes");
+        }
+
         try {
             ClhsdbLauncher test = new ClhsdbLauncher();
             theApp = withXcomp ? LingeredApp.startApp(List.of("-Xcomp"))
Thanks,
—lx

> On Aug 6, 2018, at 12:39 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
> 
> About ClhsdbFindPC.java. I would suggest to not run it when C1 is not available. C2 generated code will always deopt method which have have unloaded (during compilation) classes.
> 
> Vladimir
> 
> On 8/3/18 7:46 PM, Liu Xin wrote:
>>> On Aug 3, 2018, at 7:28 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
>>> 
>>> Hi, Liu
>>> 
>>> Changes in TestOnSpinWait.java are fine.
>>> But you last change in TestMeetIncompatibleInterfaceArrays.java is incorrect. SkippedException should be used with check - it does not do the check:
>>> http://hg.openjdk.java.net/jdk/jdk/file/7b1ddbafa134/test/lib/jtreg/SkippedException.java
>>> 
>> Thanks for the reviewing.
>> You mean I only throw SkippedException if TieredCompilation is OFF.
>> Otherwise, I need to verify compilation levels and throw regular exception.
>>> You can't simple replace error exception with it.
>>> 
>>> Please, update Copyright year (2016 -> 2018) in header in TestOnSpinWait.java test.
>>> 
>>> I tested new changes and only serviceability/sa/ClhsdbFindPC.java failed as I said before.
>>> 
>>> cd test/hotspot/jtreg
>>> jtreg -testjdk:$JAVA_HOME -va serviceability/sa/ClhsdbFindPC.java
>>> 
>> I run the command and it does fail. I will try to reproduce it on linux. Hopefully, I can fix that.
>>> It seems C2 immediately deoptimize it after compilation and debugger does not expect that:
>>> 
>>>  12984 1305   !b        jdk.test.lib.apps.LingeredApp::main (88 bytes)
>>>  12989 1305   !         jdk.test.lib.apps.LingeredApp::main (88 bytes)   made not entrant
>>> 
>>> http://openjdk.java.net/jtreg/
>>> 
>>> Regards,
>>> Vladimir
>>> 
>>> On 8/3/18 6:15 PM, Liu Xin wrote:
>>>> Hi, Vladimir & Igor,
>>>> I found you decide to throw SkippedException if tieredCompilation doesn’t meet.
>>>> I modified my patch to follow this direction. Could you review it?
>>>> http://cr.openjdk.java.net/~phh/8207965/webrev.03/ <http://cr.openjdk.java.net/%7Ephh/8207965/webrev.03/>
>>>> Besides the inputs from Vladimir, I mainly worked on TestOnSpinWait
>>>> It will run both client and server VMs. It will skip c1-check if user only enable compiler2.
>>>> Tested using c2-only server and clientVM locally(x86-64+macosx).
>>>> Thanks,
>>>> —lx
>>>>> On Aug 1, 2018, at 1:05 PM, Hohensee, Paul <hohensee at amazon.com <mailto:hohensee at amazon.com>> wrote:
>>>>> 
>>>>> Webrev also here:http://cr.openjdk.java.net/~phh/8207965/webrev.02/ <http://cr.openjdk.java.net/%7Ephh/8207965/webrev.02/>
>>>>> *From:*hotspot-compiler-dev <hotspot-compiler-dev-bounces at openjdk.java.net <mailto:hotspot-compiler-dev-bounces at openjdk.java.net>> on behalf of Liu Xin <navy.xliu at gmail.com <mailto:navy.xliu at gmail.com>>
>>>>> *Date:*Tuesday, July 31, 2018 at 6:31 PM
>>>>> *To:*Vladimir Kozlov <vladimir.kozlov at oracle.com <mailto:vladimir.kozlov at oracle.com>>
>>>>> *Cc:*"hotspot-compiler-dev at openjdk.java.net <mailto:hotspot-compiler-dev at openjdk.java.net>" <hotspot-compiler-dev at openjdk.java.net <mailto:hotspot-compiler-dev at openjdk.java.net>>
>>>>> *Subject:*Re: RFR(XS): fix c2-only compilation and some tests
>>>>> Hi, Vladimir,
>>>>> thanks for running it and the feedback.
>>>>> I made a modification according your feedback. Could you take a look?
>>>>> https://s3-us-west-2.amazonaws.com/openjdk-webrevs/jdk/c2_only_fix-v3/webrev/index.html
>>>>> 1. I don't suffer from SA failure. can I pass them all.
>>>>>    TEST                                              TOTAL  PASS  FAIL ERROR
>>>>>    jtreg:test/hotspot/jtreg/serviceability/sa           22    22     0     0
>>>>> ClhsdbFindPC.java seems not to relate to 'TieredCompilation'
>>>>> 2. I don't quite understand the testcase
>>>>> test/hotspot/jtreg/vmTestbase/jit/tiered/tieredTest.sh
>>>>> 
>>>>> 
>>>>> The java file is empty. it only triggers a shell without any parameter.
>>>>> Actually, this test is dummy unless you pass in JTREG="VM_OPTIONS=-XX:+TieredCompilation"
>>>>> how to run it with different VM_OPTIONS.
>>>>> thanks,
>>>>> --lx
>>>>> On Mon, Jul 30, 2018 at 10:24 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com <mailto:vladimir.kozlov at oracle.com>> wrote:
>>>>> 
>>>>>    I hit several issues in testing.
>>>>> 
>>>>>    1. Build failures on SPARC because of missing include:
>>>>> 
>>>>>    make/hotspot/src/native/dtrace/generateJvmOffsets.cpp
>>>>>    @@ -40,6 +40,7 @@
>>>>> 
>>>>>     #include <proc_service.h>
>>>>>     #include "gc/shared/collectedHeap.hpp"
>>>>>    +#include "memory/heap.hpp"
>>>>>     #include "runtime/vmStructs.hpp"
>>>>> 
>>>>>     typedef enum GEN_variant {
>>>>> 
>>>>>    2. Several tests failed because they want -XX:+TieredCompilation. Currently there is no check
>>>>> 
>>>>>    vmTestbase/jit/tiered/TestDescription.java
>>>>> 
>>>>>    test/hotspot/jtreg/vmTestbase/jit/tiered/tieredTest.sh  Mon Jul 30 21:48:51 2018 -0700
>>>>>    @@ -46,6 +46,11 @@
>>>>>         exit 0
>>>>>     fi
>>>>> 
>>>>>    +if grep "TieredCompilation not supported in this VM" $log; then
>>>>>    +    echo "TEST PASSED: Non-tiered Server VM. The test is useless"
>>>>>    +    exit 0
>>>>>    +fi
>>>>>    +
>>>>>     if ! egrep '^[0-9.]+: \[compile level=[0-9]' $log; then
>>>>>         if [ "${tiered}" == "on" ]; then
>>>>>             echo "TEST FAILED: No PrintTieredEvents output"
>>>>> 
>>>>>    compiler/tiered/ConstantGettersTransitionsTest.java (change assert to check) - run with -ea -esa
>>>>> 
>>>>>    compiler/onSpinWait/TestOnSpinWait.java (add skipOnTieredCompilation() check to skip C1 test)
>>>>> 
>>>>>    There is also closed test failed because it uses C1 flag - need to add -XX:+IgnoreUnrecognizedVMOptions (it is
>>>>>    work for us in Oracle).
>>>>> 
>>>>>    serviceability/sa/ClhsdbFindPC.java (I don't know how to fix it yet)
>>>>> 
>>>>>    Vladimir
>>>>> 
>>>>> 
>>>>> 
>>>>>    On 7/30/18 6:19 PM, Vladimir Kozlov wrote:
>>>>> 
>>>>>        I started our tier1-3 testing with --with-jvm-features=-compiler1 build.
>>>>> 
>>>>>        Regards,
>>>>>        Vladimir
>>>>> 
>>>>>        On 7/30/18 3:03 PM, Liu Xin wrote:
>>>>> 
>>>>>            hi, list,
>>>>> 
>>>>>            We also submitted to the submit repo and ran it successfully.
>>>>> 
>>>>>            I am not sure if it runs in the special configuration. This document doesn't say anything about
>>>>>            configurations.
>>>>>            https://wiki.openjdk.java.net/display/Build/Submit+Repo
>>>>> 
>>>>>            thanks,
>>>>>            --lx
>>>>> 
>>>>> 
>>>>>            On Mon, Jul 30, 2018 at 2:41 PM, Liu Xin <navy.xliu at gmail.com
>>>>>            <mailto:navy.xliu at gmail.com><mailto:navy.xliu at gmail.com <mailto:navy.xliu at gmail.com>>> wrote:
>>>>> 
>>>>>                hi, mail-list,
>>>>> 
>>>>>                Could you kindly review this patch?
>>>>>                Because the patch is from Vladimir,  we might need another reviewer to approve it.
>>>>> 
>>>>>                Problem: JDK-8207965
>>>>>                Webrev:http://cr.openjdk.java.net/~phh/8207965/webrev.01/
>>>>>            <http://cr.openjdk.java.net/%7Ephh/8207965/webrev.01/>
>>>>>                <http://cr.openjdk.java.net/~phh/8207965/webrev.01/
>>>>>            <http://cr.openjdk.java.net/%7Ephh/8207965/webrev.01/>>
>>>>> 
>>>>>                I passed the hotspot-tier1 on x86-64 with the following configuration:
>>>>>                --with-debug-level=fastdebug --with-jvm-features=-compiler1,zgc
>>>>> 
>>>>>                thanks,
>>>>>                --lx
>>>>> 
>>>>> 
>>>>>                On Fri, Jul 27, 2018 at 5:27 PM, Liu Xin <navy.xliu at gmail.com
>>>>>            <mailto:navy.xliu at gmail.com><mailto:navy.xliu at gmail.com <mailto:navy.xliu at gmail.com>>> wrote:
>>>>> 
>>>>>                    hi, Vladimir,
>>>>>                    thank for the patch.  I will verify it locally.
>>>>>                    I will take a look at ZGC.
>>>>> 
>>>>>                    thanks,
>>>>>                    --lx
>>>>> 
>>>>> 
>>>>>                    On Fri, Jul 27, 2018 at 5:19 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com
>>>>>            <mailto:vladimir.kozlov at oracle.com>
>>>>>                    <mailto:vladimir.kozlov at oracle.com <mailto:vladimir.kozlov at oracle.com>>> wrote:
>>>>> 
>>>>>                        Hi Liu
>>>>> 
>>>>>                        I looked on it again and you are right. Method::_aot_code is defined and used only in
>>>>>                        tiered case.
>>>>> 
>>>>>                        But changes should be next:
>>>>>                        1. The assert is needed for case when aot code is used.
>>>>>                        2. AOTCompiledMethod::make_entrant() is used only in Tiered (add #ifdef guard).
>>>>>                        3. #ifdef DirectivesStack::init() should check INCLUDE_JVMCI
>>>>>                        4. Missing changes for ZGC.
>>>>>                        5. In TestMeetIncompatibleInterfaceArrays.java skip test with C1 compilation request
>>>>>                        when Tiered is off.
>>>>> 
>>>>>                        Thanks,
>>>>>                        Vladimir
>>>>> 
>>>>> 
>>>>>                        diff -r 2ce72467c4e8 src/hotspot/share/aot/aotCodeHeap.cpp
>>>>>                        --- a/src/hotspot/share/aot/aotCodeHeap.cpp
>>>>>                        +++ b/src/hotspot/share/aot/aotCodeHeap.cpp
>>>>>                        @@ -714,7 +714,7 @@
>>>>>                          void AOTCodeHeap::sweep_method(AOTCompiledMethod *aot) {
>>>>>                            int indexes[] = {aot->method_index()};
>>>>>                            sweep_dependent_methods(indexes, 1);
>>>>>                        -  vmassert(aot->method()->code() != aot && aot->method()->aot_code() == NULL, "method
>>>>>                        still active");
>>>>>                        +  vmassert(aot->method()->code() != aot TIERED_ONLY( && aot->method()->aot_code() ==
>>>>>                        NULL), "method still active");
>>>>>                          }
>>>>> 
>>>>> 
>>>>>                        diff -r 2ce72467c4e8 src/hotspot/share/aot/aotCompiledMethod.cpp
>>>>>                        --- a/src/hotspot/share/aot/aotCompiledMethod.cpp
>>>>>                        +++ b/src/hotspot/share/aot/aotCompiledMethod.cpp
>>>>>                        @@ -206,6 +206,7 @@
>>>>>                            return true;
>>>>>                          }
>>>>> 
>>>>>                        +#ifdef TIERED
>>>>>                          bool AOTCompiledMethod::make_entrant() {
>>>>>                            assert(!method()->is_old(), "reviving evolved method!");
>>>>>                            assert(*_state_adr != not_entrant, "%s", method()->has_aot_code() ? "has_aot_code()
>>>>>                        not cleared" : "caller didn't check has_aot_code()");
>>>>>                        @@ -240,6 +241,7 @@
>>>>> 
>>>>>                            return true;
>>>>>                          }
>>>>>                        +#endif // TIERED
>>>>> 
>>>>>                          // We don't have full dependencies for AOT methods, so flushing is
>>>>>                          // more conservative than for nmethods.
>>>>>                        diff -r 2ce72467c4e8 src/hotspot/share/aot/aotCompiledMethod.hpp
>>>>>                        --- a/src/hotspot/share/aot/aotCompiledMethod.hpp
>>>>>                        +++ b/src/hotspot/share/aot/aotCompiledMethod.hpp
>>>>>                        @@ -194,7 +194,7 @@
>>>>>                            virtual address verified_entry_point() const { return _code +
>>>>>                        _meta->verified_entry_offset(); }
>>>>>                            virtual void log_identity(xmlStream* stream) const;
>>>>>                            virtual void log_state_change() const;
>>>>>                        -  virtual bool make_entrant();
>>>>>                        +  virtual bool make_entrant() NOT_TIERED({ ShouldNotReachHere(); return false; });
>>>>>                            virtual bool make_not_entrant() { return make_not_entrant_helper(not_entrant); }
>>>>>                            virtual bool make_not_used() { return make_not_entrant_helper(not_used); }
>>>>>                            virtual address entry_point() const { return _code + _meta->entry_offset(); }
>>>>>                        diff -r 2ce72467c4e8 src/hotspot/share/compiler/compilerDirectives.cpp
>>>>>                        --- a/src/hotspot/share/compiler/compilerDirectives.cpp
>>>>>                        +++ b/src/hotspot/share/compiler/compilerDirectives.cpp
>>>>>                        @@ -442,7 +442,7 @@
>>>>>                            char str[] = "*.*";
>>>>>                            const char* error_msg = NULL;
>>>>>                            _default_directives->add_match(str, error_msg);
>>>>>                        -#ifdef COMPILER1
>>>>>                        +#if defined(COMPILER1) || INCLUDE_JVMCI
>>>>>                            _default_directives->_c1_store->EnableOption = true;
>>>>>                          #endif
>>>>>                          #ifdef COMPILER2
>>>>>                        diff -r 2ce72467c4e8 src/hotspot/share/gc/z/zBarrierSet.cpp
>>>>>                        --- a/src/hotspot/share/gc/z/zBarrierSet.cpp
>>>>>                        +++ b/src/hotspot/share/gc/z/zBarrierSet.cpp
>>>>>                        @@ -22,8 +22,12 @@
>>>>>                           */
>>>>> 
>>>>>                          #include "precompiled.hpp"
>>>>>                        +#ifdef COMPILER1
>>>>>                          #include "gc/z/c1/zBarrierSetC1.hpp"
>>>>>                        +#endif
>>>>>                        +#ifdef COMPILER2
>>>>>                          #include "gc/z/c2/zBarrierSetC2.hpp"
>>>>>                        +#endif
>>>>>                          #include "gc/z/zBarrierSet.hpp"
>>>>>                          #include "gc/z/zBarrierSetAssembler.hpp"
>>>>>                          #include "gc/z/zGlobals.hpp"
>>>>>                        @@ -33,8 +37,8 @@
>>>>> 
>>>>>                          ZBarrierSet::ZBarrierSet() :
>>>>>                              BarrierSet(make_barrier_set_assembler<ZBarrierSetAssembler>(),
>>>>>                        -               make_barrier_set_c1<ZBarrierSetC1>(),
>>>>>                        -               make_barrier_set_c2<ZBarrierSetC2>(),
>>>>>                        +               COMPILER1_PRESENT( make_barrier_set_c1<ZBarrierSetC1>() )
>>>>>                        NOT_COMPILER1(NULL),
>>>>>                        +               COMPILER2_PRESENT( make_barrier_set_c2<ZBarrierSetC2>() )
>>>>>                        NOT_COMPILER2(NULL),
>>>>>                                         BarrierSet::FakeRtti(BarrierSet::ZBarrierSet)) {}
>>>>> 
>>>>>                          ZBarrierSetAssembler* ZBarrierSet::assembler() {
>>>>>                        diff -r 2ce72467c4e8
>>>>>                        test/hotspot/jtreg/compiler/types/TestMeetIncompatibleInterfaceArrays.java
>>>>>                        --- a/test/hotspot/jtreg/compiler/types/TestMeetIncompatibleInterfaceArrays.java
>>>>>                        +++ b/test/hotspot/jtreg/compiler/types/TestMeetIncompatibleInterfaceArrays.java
>>>>>                        @@ -362,6 +362,12 @@
>>>>>                                              System.out.println((j + 1) + ". invokation of " + baseClassName +
>>>>>                        i + "ASM.test() [::" +
>>>>>                                                                 r.getName() + "() should be '" + tier[pass][j]
>>>>>                        + "' compiled]");
>>>>> 
>>>>>                        +                    // Skip Profiling compilation (C1) when Tiered is disabled.
>>>>>                        +                    boolean profile = (level[pass][j] ==
>>>>>                        CompilerWhiteBoxTest.COMP_LEVEL_FULL_PROFILE);
>>>>>                        +                    if (profile && CompilerWhiteBoxTest.skipOnTieredCompilation(false)) {
>>>>>                        +                        continue;
>>>>>                        +                    }
>>>>>                        +
>>>>>                                              WB.enqueueMethodForCompilation(r, level[pass][j]);
>>>>> 
>>>>>                                              try {
>>>>> 
>>>>>                        On 7/26/18 1:11 PM, Liu Xin wrote:
>>>>> 
>>>>>                            hi, Vladimir,
>>>>> 
>>>>>                            Thank you for replying.
>>>>> 
>>>>>                            If I disable compiler1, I will run into compiler errors when I build fastdebug. The
>>>>>                            attachment is the output.
>>>>>                            Even if ignore the assertion, we still have problem to pass hs-tier1. it will crash
>>>>>                            when it try to use jvmci.
>>>>> 
>>>>>                            Here is my configuration:
>>>>>                            The existing configuration has been successfully updated in
>>>>>                            /Users/xxinliu/Devel/openjdk/jdk/build/macosx-x86_64-normal-server-fastdebug
>>>>>                            using configure arguments '--enable-option-checking=fatal
>>>>>                            --with-debug-level=fastdebug --with-jtreg=/Users/xxinliu/Devel/jtreg
>>>>>                            --with-jvm-features=-compiler1'.
>>>>> 
>>>>>                            Configuration summary:
>>>>>                            * Debug level:    fastdebug
>>>>>                            * HS debug level: fastdebug
>>>>>                            * JVM variants:   server
>>>>>                            * JVM features:   server: 'aot cds cmsgc compiler2 dtrace epsilongc g1gc graal jfr
>>>>>                            jni-check jvmci jvmti management nmt parallelgc serialgc services vm-structs'
>>>>>                            * OpenJDK target: OS: macosx, CPU architecture: x86, address length: 64
>>>>>                            * Version string: 12-internal+0-adhoc.xxinliu.jdk (12-internal)
>>>>> 
>>>>>                            thanks,
>>>>>                            --lx
>>>>> 
>>>>>                            On Thu, Jul 26, 2018 at 12:48 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com
>>>>>            <mailto:vladimir.kozlov at oracle.com>
>>>>>                            <mailto:vladimir.kozlov at oracle.com <mailto:vladimir.kozlov at oracle.com>>
>>>>>            <mailto:vladimir.kozlov at oracle.com <mailto:vladimir.kozlov at oracle.com>
>>>>>                            <mailto:vladimir.kozlov at oracle.com <mailto:vladimir.kozlov at oracle.com>>>> wrote:
>>>>> 
>>>>>                                 This does not seems right. What failure you got in aotCodeHeap.cpp and
>>>>>                            aotCompiledMethod.cpp?
>>>>> 
>>>>>                                 Thanks,
>>>>>                                 Vladimir
>>>>> 
>>>>>                                 On 7/26/18 10:16 AM, Liu Xin wrote:
>>>>> 
>>>>>                                     Hi, hotspot community,
>>>>> 
>>>>> 
>>>>>                                     Please review the small change to getc2-onlybuild to work.
>>>>> 
>>>>>                                     Bug:https://bugs.openjdk.java.net/browse/JDK-8207965
>>>>>                            <https://bugs.openjdk.java.net/browse/JDK-8207965>
>>>>>                            <https://bugs.openjdk.java.net/browse/JDK-8207965
>>>>>                            <https://bugs.openjdk.java.net/browse/JDK-8207965>>
>>>>> 
>>>>>                                     Webrev:http://cr.openjdk.java.net/~phh/8207965/webrev.00/
>>>>>            <http://cr.openjdk.java.net/%7Ephh/8207965/webrev.00/>
>>>>>                            <http://cr.openjdk.java.net/~phh/8207965/webrev.00/
>>>>>            <http://cr.openjdk.java.net/%7Ephh/8207965/webrev.00/>>
>>>>>                                     <http://cr.openjdk.java.net/%7Ephh/8207965/webrev.00/
>>>>>                            <http://cr.openjdk.java.net/%7Ephh/8207965/webrev.00/>>
>>>>>                            <http://cr.openjdk.java.net/%7Ephh/8207965/webrev.00/
>>>>>                            <http://cr.openjdk.java.net/%7Ephh/8207965/webrev.00/>
>>>>> 
>>>>>                                     <http://cr.openjdk.java.net/%7Ephh/8207965/webrev.00/
>>>>>                            <http://cr.openjdk.java.net/%7Ephh/8207965/webrev.00/>>>
>>>>> 
>>>>>                                     It will meet 2 compiler errors if you configure project with “./configure
>>>>>                            --with-jvm-features=-compiler1
>>>>>                                     --enable-option-checking=fatal --with-debug-level=fastdebug”.
>>>>> 
>>>>>                                     the configure disable c1. Furthermore,  12 failures in hs-tier1 if we
>>>>>                            havec2-only.
>>>>> 
>>>>> 
>>>>>                                     C2-onlybuilt met the following errors when I ran hs-tier1:
>>>>> 
>>>>>                                     compiler/aot/cli/jaotc/CompileClassWithDebugTest.java: check that jaotc can
>>>>>                            compile a class with a --debug flag
>>>>>                                     compiler/jvmci/compilerToVM/IsCompilableTest.java:
>>>>>                                     compiler/jvmci/events/JvmciNotifyBootstrapFinishedEventTest.java:
>>>>>                                     compiler/jvmci/events/JvmciNotifyInstallEventTest.java:
>>>>>                                     compiler/jvmci/jdk.vm.ci
>>>>>            <http://jdk.vm.ci/>.code.test/src/jdk/vm/ci/code/test/DataPatchTest.java:
>>>>>                            compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/MaxOopMapStackOffsetTest.java:
>>>>>                                     compiler/jvmci/jdk.vm.ci
>>>>>            <http://jdk.vm.ci/>.code.test/src/jdk/vm/ci/code/test/NativeCallTest.java:
>>>>>                            compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/SimpleCodeInstallationTest.java:
>>>>>                            compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/SimpleDebugInfoTest.java:
>>>>>                            compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/VirtualObjectDebugInfoTest.java:
>>>>>                                     compiler/types/TestMeetIncompatibleInterfaceArrays.java: C2 can not handle
>>>>>                            returns with incompatible interface
>>>>>                                     arrays
>>>>> 
>>>>>                                     Most due to bug similar withJDK-8145331
>>>>>                            <https://bugs.openjdk.java.net/browse/JDK-8145331
>>>>>                            <https://bugs.openjdk.java.net/browse/JDK-8145331>
>>>>>                                     <https://bugs.openjdk.java.net/browse/JDK-8145331
>>>>>                            <https://bugs.openjdk.java.net/browse/JDK-8145331>>>.
>>>>> 
>>>>> 
>>>>>                                     CompilerDirectives::get_for(AbstractCompiler *comp)  returns _/c1/_store
>>>>> 
>>>>>                                        if jvmci() enabled, but hotspot won’t enable it if COMPILER1 is
>>>>>                            disabled. As a result, hotspot messes up
>>>>>                                     refcounts of _c1_store. This webrev fixes 11 out of 12 cases.
>>>>> 
>>>>> 
>>>>>                                     The last test (compiler/types/TestMeetIncompatibleInterfaceArrays.java)
>>>>>                            makes use of WhiteBox to check tier
>>>>>                                     levels. I can’t fix it easily. Shall I try to fix it in this webrev? If no,
>>>>>                            we can file a new bug to fix the
>>>>>                                     test. Does anyone have any idea how to fix it?
>>>>> 
>>>>> 
>>>>>                                     thanks,
>>>>> 
>>>>>                                     --lx
>>>>> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20180806/fd6eab93/attachment-0001.html>


More information about the hotspot-compiler-dev mailing list