RFR 8207205 [lworld] Unsafe/VarHandle read-modify-write value accessors
Paul Sandoz
paul.sandoz at oracle.com
Thu Jul 12 23:26:02 UTC 2018
An additional issue is because static fields are not (currently flattened) the ref var handle is used which uses an atomic hardware instruction for CAS/CAE and thus does ref equality, so there is more work to be done here to fix this.
Paul.
> On Jul 12, 2018, at 4:06 PM, Paul Sandoz <Paul.Sandoz at oracle.com> wrote:
>
>
>
>> 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