JDK-8210887 : Tweak C2 gc api for arraycopy
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 12
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2018-09-18
  • Updated: 2018-10-09
  • Resolved: 2018-10-02
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 12
12 b14Fixed
Related Reports
Relates :  
Description
Part of the gc api used for arraycopy needs tweaking to cover shenandoah.
Comments
Testing of webrev.02 passed clean.
28-09-2018

http://cr.openjdk.java.net/~roland/8210887/webrev.02/
28-09-2018

gc/epsilon/TestManyThreads.java test failed on SPARC: # (workspace/open/src/hotspot/share/opto/arraycopynode.cpp:425), pid=23494, tid=7 # assert(copy_type != T_OBJECT) failed: only tightly coupled allocations for object arrays Current CompileTask: C2: 13113 2345 !b java.lang.invoke.DirectMethodHandle::makePreparedFieldLambdaForm (1038 bytes) Stack: [0xffffffff6d200000,0xffffffff6d300000], sp=0xffffffff6d2fb4b0, free space=1005k Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code) V [libjvm.so+0x23f1d10] void VMError::report_and_die(int,const char*,const char*,void*,Thread*,unsigned char*,void*,void*,const char*,int,unsigned long)+0x970 V [libjvm.so+0x23f1328] void VMError::report_and_die(Thread*,void*,const char*,int,const char*,const char*,void*)+0x38 V [libjvm.so+0x1445950] void report_vm_error(const char*,int,const char*,const char*,...)+0x80 V [libjvm.so+0xfabefc] Node*ArrayCopyNode::array_copy_backward(PhaseGVN*,bool,Node*&,MergeMemNode*,const TypePtr*,const TypePtr*,Node*,Node*,Node*,Node*,BasicType,const Type*,int)+0x12c V [libjvm.so+0xfacf38] Node*ArrayCopyNode::Ideal(PhaseGVN*,bool)+0x548 V [libjvm.so+0x2060880] Node*PhaseGVN::transform_no_reclaim(Node*)+0x50 V [libjvm.so+0x1d2f264] bool LibraryCallKit::inline_arraycopy()+0x17d4 V [libjvm.so+0x1d0f198] JVMState*LibraryIntrinsic::generate(JVMState*)+0x328 V [libjvm.so+0x14e3fdc] void Parse::do_call()+0x8dc V [libjvm.so+0x2041d00] void Parse::do_one_bytecode()+0x6d80 V [libjvm.so+0x2023a8c] void Parse::do_one_block()+0x50c V [libjvm.so+0x201e468] void Parse::do_all_blocks()+0x558 V [libjvm.so+0x201de20] Parse::Parse(JVMState*,ciMethod*,float)+0xb50 V [libjvm.so+0x118401c] JVMState*ParseGenerator::generate(JVMState*)+0x11c V [libjvm.so+0x14e3fdc] void Parse::do_call()+0x8dc V [libjvm.so+0x2041d00] void Parse::do_one_bytecode()+0x6d80 V [libjvm.so+0x2023a8c] void Parse::do_one_block()+0x50c V [libjvm.so+0x201e468] void Parse::do_all_blocks()+0x558 V [libjvm.so+0x201de20] Parse::Parse(JVMState*,ciMethod*,float)+0xb50 V [libjvm.so+0x118401c] JVMState*ParseGenerator::generate(JVMState*)+0x11c V [libjvm.so+0x133ff88] Compile::Compile #Nvariant 1(ciEnv*,C2Compiler*,ciMethod*,int,bool,bool,bool,DirectiveSet*)+0xb98 V [libjvm.so+0x1181da0] void C2Compiler::compile_method(ciEnv*,ciMethod*,int,DirectiveSet*)+0x130 V [libjvm.so+0x1364018] void CompileBroker::invoke_compiler_on_method(CompileTask*)+0x708 V [libjvm.so+0x1362d38] void CompileBroker::compiler_thread_loop()+0x3e8 V [libjvm.so+0x23106ac] void JavaThread::thread_main_inner()+0x2bc V [libjvm.so+0x23103c8] void JavaThread::run()+0x4d8 V [libjvm.so+0x1fbf850] thread_native_entry+0x2e0
28-09-2018

New webrev: http://cr.openjdk.java.net/~roland/8210887/webrev.01/
27-09-2018

http://cr.openjdk.java.net/~roland/8210887/webrev.00/index.html
26-09-2018