While working on JDK-8253416, I found more issues with handling of empty inline types in C2:
# Internal Error (/oracle/valhalla/open/src/hotspot/share/opto/inlinetypenode.cpp:178), pid=582975, tid=582988
# assert(i < field_count()) failed: field not found
Current CompileTask:
C2: 1275 304 b 4 compiler.valhalla.inlinetypes.TestCallingConvention::test41 (6 bytes)
Stack: [0x00007f644c41b000,0x00007f644c51c000], sp=0x00007f644c518f20, free space=1015k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xde0c0d] InlineTypeNode::initialize_fields(GraphKit*, MultiNode*, GrowableArrayFilterIterator<SigEntry, SigEntryFilter>&, unsigned int&, int, bool)+0x21d
V [libjvm.so+0xde15c2] InlineTypeNode::make_from_multi(GraphKit*, MultiNode*, GrowableArrayFilterIterator<SigEntry, SigEntryFilter>&, ciInlineKlass*, unsigned int&, bool)+0x52
V [libjvm.so+0x15aea61] Compile::build_start_state(StartNode*, TypeFunc const*)+0xb81
V [libjvm.so+0x96f86e] Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, DirectiveSet*)+0xc7e
V [libjvm.so+0x79ae24] C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x184
V [libjvm.so+0x97fc18] CompileBroker::invoke_compiler_on_method(CompileTask*)+0xe98
V [libjvm.so+0x980888] CompileBroker::compiler_thread_loop()+0x658
V [libjvm.so+0x1892596] JavaThread::thread_main_inner()+0x256
V [libjvm.so+0x1898910] Thread::call_run()+0x100
V [libjvm.so+0x1565536] thread_native_entry(Thread*)+0x116
# Internal Error (/oracle/valhalla/open/src/hotspot/share/opto/compile.cpp:1718), pid=584901, tid=584916
# assert((field->is_final() || field->is_stable()) == !atp->is_rewritable()) failed: must get the rewritable bits correct
Current CompileTask:
C2: 496 49 b 4 compiler.valhalla.inlinetypes.Test5$1::<init> (25 bytes)
Stack: [0x00007f2b1441b000,0x00007f2b1451c000], sp=0x00007f2b14518b80, free space=1014k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x958ef9] Compile::alias_type(ciField*)+0xd9
V [libjvm.so+0x15c6961] Parse::do_put_xxx(Node*, ciField*, bool)+0x41
V [libjvm.so+0x15c8713] Parse::do_field_access(bool, bool)+0xdf3
V [libjvm.so+0x15c0adc] Parse::do_one_bytecode()+0x88c
V [libjvm.so+0x15a7b71] Parse::do_one_block()+0x601
V [libjvm.so+0x15a8a62] Parse::do_all_blocks()+0x122
V [libjvm.so+0x15ad438] Parse::Parse(JVMState*, ciMethod*, float)+0xe38
V [libjvm.so+0x79d895] ParseGenerator::generate(JVMState*)+0x115
V [libjvm.so+0x96f87d] Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, DirectiveSet*)+0xc8d
V [libjvm.so+0x79ae24] C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x184
V [libjvm.so+0x97fc18] CompileBroker::invoke_compiler_on_method(CompileTask*)+0xe98
V [libjvm.so+0x980888] CompileBroker::compiler_thread_loop()+0x658
V [libjvm.so+0x1892576] JavaThread::thread_main_inner()+0x256
V [libjvm.so+0x18988f0] Thread::call_run()+0x100
V [libjvm.so+0x1565536] thread_native_entry(Thread*)+0x116
# Internal Error (/oracle/valhalla/open/src/hotspot/share/opto/inlinetypenode.cpp:178), pid=582975, tid=582988
# assert(i < field_count()) failed: field not found
Current CompileTask:
C2: 1275 304 b 4 compiler.valhalla.inlinetypes.TestCallingConvention::test41 (6 bytes)
Stack: [0x00007f644c41b000,0x00007f644c51c000], sp=0x00007f644c518f20, free space=1015k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xde0c0d] InlineTypeNode::initialize_fields(GraphKit*, MultiNode*, GrowableArrayFilterIterator<SigEntry, SigEntryFilter>&, unsigned int&, int, bool)+0x21d
V [libjvm.so+0xde15c2] InlineTypeNode::make_from_multi(GraphKit*, MultiNode*, GrowableArrayFilterIterator<SigEntry, SigEntryFilter>&, ciInlineKlass*, unsigned int&, bool)+0x52
V [libjvm.so+0x15aea61] Compile::build_start_state(StartNode*, TypeFunc const*)+0xb81
V [libjvm.so+0x96f86e] Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, DirectiveSet*)+0xc7e
V [libjvm.so+0x79ae24] C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x184
V [libjvm.so+0x97fc18] CompileBroker::invoke_compiler_on_method(CompileTask*)+0xe98
V [libjvm.so+0x980888] CompileBroker::compiler_thread_loop()+0x658
V [libjvm.so+0x1892596] JavaThread::thread_main_inner()+0x256
V [libjvm.so+0x1898910] Thread::call_run()+0x100
V [libjvm.so+0x1565536] thread_native_entry(Thread*)+0x116
# Internal Error (/oracle/valhalla/open/src/hotspot/share/opto/compile.cpp:1718), pid=584901, tid=584916
# assert((field->is_final() || field->is_stable()) == !atp->is_rewritable()) failed: must get the rewritable bits correct
Current CompileTask:
C2: 496 49 b 4 compiler.valhalla.inlinetypes.Test5$1::<init> (25 bytes)
Stack: [0x00007f2b1441b000,0x00007f2b1451c000], sp=0x00007f2b14518b80, free space=1014k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x958ef9] Compile::alias_type(ciField*)+0xd9
V [libjvm.so+0x15c6961] Parse::do_put_xxx(Node*, ciField*, bool)+0x41
V [libjvm.so+0x15c8713] Parse::do_field_access(bool, bool)+0xdf3
V [libjvm.so+0x15c0adc] Parse::do_one_bytecode()+0x88c
V [libjvm.so+0x15a7b71] Parse::do_one_block()+0x601
V [libjvm.so+0x15a8a62] Parse::do_all_blocks()+0x122
V [libjvm.so+0x15ad438] Parse::Parse(JVMState*, ciMethod*, float)+0xe38
V [libjvm.so+0x79d895] ParseGenerator::generate(JVMState*)+0x115
V [libjvm.so+0x96f87d] Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, DirectiveSet*)+0xc8d
V [libjvm.so+0x79ae24] C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x184
V [libjvm.so+0x97fc18] CompileBroker::invoke_compiler_on_method(CompileTask*)+0xe98
V [libjvm.so+0x980888] CompileBroker::compiler_thread_loop()+0x658
V [libjvm.so+0x1892576] JavaThread::thread_main_inner()+0x256
V [libjvm.so+0x18988f0] Thread::call_run()+0x100
V [libjvm.so+0x1565536] thread_native_entry(Thread*)+0x116
- relates to
-
JDK-8247923 [lworld] Empty inline types break calling convention optimization
-
- Resolved
-
-
JDK-8248220 [lworld] Optimize empty inline types
-
- Resolved
-