#7124 [C1] Fix a JNI error when running Alias for MIPS

Thu, 31 May 2018 14:12:55 +0800

author
fujie
date
Thu, 31 May 2018 14:12:55 +0800
changeset 9132
0f025dcc49cc
parent 9131
de11e2b9bc23
child 9133
9c110b8b08bd

#7124 [C1] Fix a JNI error when running Alias for MIPS

== Alias ==
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.IncompatibleClassChangeError: Class java.io.FileInputStream does not implement the requested interface sun.nio.ByteBuffered
at sun.misc.Resource.getByteBuffer(Resource.java:162)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:454)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)

src/cpu/mips/vm/c1_LIRAssembler_mips.cpp file | annotate | diff | comparison | revisions
src/cpu/mips/vm/c1_Runtime1_mips.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp	Thu May 31 09:47:21 2018 +0800
     1.2 +++ b/src/cpu/mips/vm/c1_LIRAssembler_mips.cpp	Thu May 31 14:12:55 2018 +0800
     1.3 @@ -3110,8 +3110,8 @@
     1.4    Register Rtmp1 = noreg;
     1.5  
     1.6    // check if it needs to be profiled
     1.7 -  ciMethodData* md;
     1.8 -  ciProfileData* data;
     1.9 +  ciMethodData* md = NULL;
    1.10 +  ciProfileData* data = NULL;
    1.11  
    1.12    if (op->should_profile()) {
    1.13      ciMethod* method = op->profiled_method();
    1.14 @@ -3210,7 +3210,7 @@
    1.15          if (A1 != k_RInfo)     __ pop(A1);
    1.16          if (A0 != klass_RInfo) __ pop(A0);
    1.17          // result is a boolean
    1.18 -        __ beq(klass_RInfo, R0, *failure_target);
    1.19 +        __ beq(V0, R0, *failure_target);
    1.20          __ delayed()->nop();
    1.21          // successful cast, fall through to profile or jump
    1.22        }
    1.23 @@ -3226,7 +3226,7 @@
    1.24        if (A1 != k_RInfo)     __ pop(A1);
    1.25        if (A0 != klass_RInfo) __ pop(A0);
    1.26        // result is a boolean
    1.27 -      __ beq(k_RInfo, R0, *failure_target);
    1.28 +      __ beq(V0, R0, *failure_target);
    1.29        __ delayed()->nop();
    1.30        // successful cast, fall through to profile or jump
    1.31      }
    1.32 @@ -3321,7 +3321,7 @@
    1.33      if (A1 != k_RInfo)     __ pop(A1);
    1.34      if (A0 != klass_RInfo) __ pop(A0);
    1.35      // result is a boolean
    1.36 -    __ beq(k_RInfo, R0, *failure_target);
    1.37 +    __ beq(V0, R0, *failure_target);
    1.38      __ delayed()->nop();
    1.39      // fall through to the success case
    1.40  
     2.1 --- a/src/cpu/mips/vm/c1_Runtime1_mips.cpp	Thu May 31 09:47:21 2018 +0800
     2.2 +++ b/src/cpu/mips/vm/c1_Runtime1_mips.cpp	Thu May 31 14:12:55 2018 +0800
     2.3 @@ -1389,31 +1389,9 @@
     2.4        __ st_ptr(T1, SP, (-2) * wordSize);
     2.5        __ addiu(SP, SP, (-2) * wordSize);
     2.6  
     2.7 -      //+ Klass::secondary_supers_offset_in_bytes()));
     2.8 -      __ ld_ptr(AT, A0, in_bytes( Klass::secondary_supers_offset()));
     2.9 -      __ lw(T1, AT, arrayOopDesc::length_offset_in_bytes());
    2.10 -      __ addiu(AT, AT, arrayOopDesc::base_offset_in_bytes(T_OBJECT));
    2.11 +      Label miss;
    2.12 +      __ check_klass_subtype_slow_path(A0, A1, T0, T1, NULL, &miss);
    2.13  
    2.14 -      Label miss, hit, loop;
    2.15 -      //      T1:count, AT:array, A1:sub maybe supper
    2.16 -      __ bind(loop);
    2.17 -      __ beq(T1, R0, miss);
    2.18 -#ifndef _LP64
    2.19 -      __ delayed()->lw(T0, AT, 0);
    2.20 -#else
    2.21 -      __ delayed()->ld(T0, AT, 0);
    2.22 -#endif
    2.23 -      __ beq(T0, A1, hit);
    2.24 -      __ delayed();
    2.25 -      __ addiu(T1, T1, -1);
    2.26 -      __ b(loop);
    2.27 -      __ delayed();
    2.28 -      __ addiu(AT, AT, 4);
    2.29 -
    2.30 -      __ bind(hit);
    2.31 -      //+ Klass::secondary_super_cache_offset_in_bytes()), eax);
    2.32 -      __ st_ptr(A1, A0,
    2.33 -          in_bytes( Klass::secondary_super_cache_offset()));
    2.34        __ addiu(V0, R0, 1);
    2.35        __ addiu(SP, SP, 2 * wordSize);
    2.36        __ ld_ptr(T0, SP, (-1) * wordSize);

mercurial