[lworld+vector] RFR: 8304310: Initial compilers and runtime handling for multifield backed vectors. [v3]

Xiaohong Gong xgong at openjdk.org
Tue Apr 4 07:31:38 UTC 2023


On Mon, 3 Apr 2023 08:07:52 GMT, Xiaohong Gong <xgong at openjdk.org> wrote:

>> Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Extend ci model to capture synthetic multi-fields, these are used for scalarization if target does not support load/store bundle size.
>
> src/hotspot/share/runtime/deoptimization.cpp line 1395:
> 
>> 1393:   while (ik != NULL) {
>> 1394:     for (AllFieldStream fs(ik); !fs.done(); fs.next()) {
>> 1395:       if (!fs.access_flags().is_static() && !fs.is_multifield() && (!skip_internal || !fs.access_flags().is_internal())) {
> 
> Does it need special handling for the vectorized multifield base?

I think it needs the special handling for vectorized multifield. I ran a simple case with `-XX:+DeoptimizeALot`, and it shows the crash:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/mnt/local/code/valhalla/src/hotspot/share/runtime/stackValue.cpp:194), pid=373245, tid=373246
#  Error: ShouldNotReachHere()
#
# JRE version: OpenJDK Runtime Environment (21.0) (fastdebug build 21-internal-git-3cf3c3d81)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 21-internal-git-3cf3c3d81, mixed mode, sharing, compressed oops, compressed class ptrs, g1 gc, linux-aarch64)
# Problematic frame:
# V  [libjvm.so+0x1937848]  StackValue* StackValue::create_stack_value<RegisterMap>(frame const*, RegisterMap const*, ScopeValue*) [clone .localalias]+0x2c8
#
# Core dump will be written. Default location: /tmp/core.373245
#
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp
#

---------------  S U M M A R Y ------------

Command Line: -XX:CompileCommand=print,Test.func -XX:+UnlockDiagnosticVMOptions -XX:-DebugNonSafepoints -XX:-TieredCompilation -XX:+UnlockExperimentalVMOptions -XX:-EnableVectorSupport -XX:+DeoptimizeALot --add-modules=jdk.incubator.vector Test

Host: xiagon01-01-arm-vm, AArch64, 160 cores, 190G, Ubuntu 22.04.1 LTS
Time: Tue Apr  4 07:14:11 2023 UTC elapsed time: 1.133206 seconds (0d 0h 0m 1s)

---------------  T H R E A D  ---------------

Current thread (0x0000fffdfc02b200):  JavaThread "main" [_thread_in_vm, id=373246, stack(0x0000fffe03820000,0x0000fffe03a20000)]

Stack: [0x0000fffe03820000,0x0000fffe03a20000],  sp=0x0000fffe03a1c850,  free space=2034k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x1937848]  StackValue* StackValue::create_stack_value<RegisterMap>(frame const*, RegisterMap const*, ScopeValue*) [clone .localalias]+0x2c8  (stackValue.cpp:194)
V  [libjvm.so+0xb31b58]  reassign_fields_by_klass(InstanceKlass*, frame*, RegisterMap*, ObjectValue*, int, oop, bool, int, JavaThread*)+0x418  (deoptimization.cpp:1425)
V  [libjvm.so+0xb34398]  Deoptimization::reassign_fields(frame*, RegisterMap*, GrowableArray<ScopeValue*>*, bool, bool, JavaThread*)+0x3b4  (deoptimization.cpp:1568)
V  [libjvm.so+0xb3709c]  rematerialize_objects(JavaThread*, int, CompiledMethod*, frame&, RegisterMap&, GrowableArray<compiledVFrame*>*, bool&)+0x74c  (deoptimization.cpp:283)
V  [libjvm.so+0xb39324]  Deoptimization::fetch_unroll_info_helper(JavaThread*, int)+0x404  (deoptimization.cpp:438)
V  [libjvm.so+0xb3a740]  Deoptimization::fetch_unroll_info(JavaThread*, int)+0xc0  (deoptimization.cpp:176)
v  ~DeoptimizationBlob 0x0000fffe0087d900
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
v  ~DeoptimizationBlob 0x0000fffe0087d900
J 176 c2 jdk.incubator.vector.IntVector$$Lambda$38+0x0000000801064bc0.load(Ljava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$VectorSpecies;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload; jdk.incubator.vector at 21-internal (17 bytes) @ 0x0000fffe008e9cec [0x0000fffe008e9980+0x000000000000036c]
J 204 c2 Test.func(Z)V (145 bytes) @ 0x0000fffe00900ef0 [0x0000fffe00900cc0+0x0000000000000230]
j  Test.main([Ljava/lang/String;)V+22
v  ~StubRoutines::call_stub 0x0000fffe0079017c

Fixing is not urgent. We can fix this part after the basic support is merged. Thanks!

-------------

PR Review Comment: https://git.openjdk.org/valhalla/pull/833#discussion_r1156841049



More information about the valhalla-dev mailing list