RFR 8207205 [lworld] Unsafe/VarHandle read-modify-write value accessors

Paul Sandoz paul.sandoz at oracle.com
Thu Jul 12 23:06:18 UTC 2018



> On Jul 12, 2018, at 2:44 PM, Karen Kinnear <karen.kinnear at oracle.com> wrote:
> 
> Paul,
> 
> I was so hoping you or Mandy would get a chance to add those. Code looks good - check it in and add tests as you can.
> 

Thanks. 

I had my suspicions the test i am working on might crash the compiler and it did :-) [1]. 

It’s crashing with -XX:-TieredCompilation when compiling the value type Point::equals method in either a CAS or CAE test where equality is required. The test passes when executed with -Xint.

I may just finish polishing the test and commit for others to reproduce the failure and work out a solution.

Paul.

Current CompileTask:
C2:   5268  439             Point::equals (8 bytes)

Stack: [0x00007000059d2000,0x0000700005ad2000],  sp=0x0000700005ace5c0,  free space=1009k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.dylib+0x20d85d]  AddPNode::Value(PhaseGVN*) const+0xd9
V  [libjvm.dylib+0xc0a485]  PhaseGVN::transform_no_reclaim(Node*)+0x119
V  [libjvm.dylib+0xbf0320]  Parse::optimize_cmp_with_klass(Node*)+0x1e2
V  [libjvm.dylib+0xbf6526]  Parse::do_one_bytecode()+0x615c
V  [libjvm.dylib+0xbe23af]  Parse::do_one_block()+0x35f
V  [libjvm.dylib+0xbe0e11]  Parse::do_all_blocks()+0x421
V  [libjvm.dylib+0xbdd7b2]  Parse::Parse(JVMState*, ciMethod*, float)+0xc96
V  [libjvm.dylib+0x35985c]  ParseGenerator::generate(JVMState*)+0xb6
V  [libjvm.dylib+0x57b76e]  Parse::do_call()+0x78a
V  [libjvm.dylib+0xbf04bd]  Parse::do_one_bytecode()+0xf3
V  [libjvm.dylib+0xbe23af]  Parse::do_one_block()+0x35f
V  [libjvm.dylib+0xbe0e11]  Parse::do_all_blocks()+0x421
V  [libjvm.dylib+0xbdd7b2]  Parse::Parse(JVMState*, ciMethod*, float)+0xc96
V  [libjvm.dylib+0x35985c]  ParseGenerator::generate(JVMState*)+0xb6
V  [libjvm.dylib+0x57b76e]  Parse::do_call()+0x78a
V  [libjvm.dylib+0xbf04bd]  Parse::do_one_bytecode()+0xf3
V  [libjvm.dylib+0xbe23af]  Parse::do_one_block()+0x35f
V  [libjvm.dylib+0xbe0e11]  Parse::do_all_blocks()+0x421
V  [libjvm.dylib+0xbdd7b2]  Parse::Parse(JVMState*, ciMethod*, float)+0xc96
V  [libjvm.dylib+0x35985c]  ParseGenerator::generate(JVMState*)+0xb6
V  [libjvm.dylib+0x57b76e]  Parse::do_call()+0x78a
V  [libjvm.dylib+0xbf04bd]  Parse::do_one_bytecode()+0xf3
V  [libjvm.dylib+0xbe23af]  Parse::do_one_block()+0x35f
V  [libjvm.dylib+0xbe0e11]  Parse::do_all_blocks()+0x421
V  [libjvm.dylib+0xbdd7b2]  Parse::Parse(JVMState*, ciMethod*, float)+0xc96
V  [libjvm.dylib+0x35985c]  ParseGenerator::generate(JVMState*)+0xb6
V  [libjvm.dylib+0x57b76e]  Parse::do_call()+0x78a
V  [libjvm.dylib+0xbf04bd]  Parse::do_one_bytecode()+0xf3
V  [libjvm.dylib+0xbe23af]  Parse::do_one_block()+0x35f
V  [libjvm.dylib+0xbe0e11]  Parse::do_all_blocks()+0x421
V  [libjvm.dylib+0xbdd7b2]  Parse::Parse(JVMState*, ciMethod*, float)+0xc96
V  [libjvm.dylib+0x35985c]  ParseGenerator::generate(JVMState*)+0xb6
V  [libjvm.dylib+0x4894ac]  Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool, DirectiveSet*)+0x8e6
V  [libjvm.dylib+0x48c61b]  Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool, DirectiveSet*)+0x31
V  [libjvm.dylib+0x358470]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, DirectiveSet*)+0x130
V  [libjvm.dylib+0x49f3ec]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x668
V  [libjvm.dylib+0x49ec19]  CompileBroker::compiler_thread_loop()+0x2f1
V  [libjvm.dylib+0xd6c1c9]  JavaThread::thread_main_inner()+0x1ed
V  [libjvm.dylib+0xd6bca2]  JavaThread::run()+0x3da
V  [libjvm.dylib+0xba4ec8]  thread_native_entry(Thread*)+0x12b
C  [libsystem_pthread.dylib+0x3661]  _pthread_body+0x154
C  [libsystem_pthread.dylib+0x350d]  _pthread_body+0x0
C  [libsystem_pthread.dylib+0x2bf9]  thread_start+0xd



More information about the valhalla-dev mailing list