6709165: Tests hang or misbahve with HS 13.0-b01 on solaris-sparcv9

Wed, 04 Jun 2008 21:56:27 -0700

author
never
date
Wed, 04 Jun 2008 21:56:27 -0700
changeset 616
823298b11afc
parent 615
b9ebd46331d2
child 617
44abbb0d4c18

6709165: Tests hang or misbahve with HS 13.0-b01 on solaris-sparcv9
Reviewed-by: kvn, jrose

src/cpu/sparc/vm/sparc.ad file | annotate | diff | comparison | revisions
     1.1 --- a/src/cpu/sparc/vm/sparc.ad	Wed Jun 04 14:03:48 2008 -0700
     1.2 +++ b/src/cpu/sparc/vm/sparc.ad	Wed Jun 04 21:56:27 2008 -0700
     1.3 @@ -6677,10 +6677,9 @@
     1.4    ins_pipe( long_memory_op );
     1.5  %}
     1.6  
     1.7 -instruct compareAndSwapN_bool_comp(iRegP mem_ptr, iRegN oldval, iRegN newval, iRegI res, o7RegI tmp, flagsReg ccr ) %{
     1.8 +instruct compareAndSwapN_bool(iRegP mem_ptr, iRegN oldval, iRegN newval, iRegI res, o7RegI tmp1, flagsReg ccr ) %{
     1.9    match(Set res (CompareAndSwapN mem_ptr (Binary oldval newval)));
    1.10 -  effect( USE mem_ptr, KILL ccr, KILL tmp);
    1.11 -
    1.12 +  effect( USE mem_ptr, KILL ccr, KILL tmp1);
    1.13    format %{
    1.14              "MOV    $newval,O7\n\t"
    1.15              "CASA   [$mem_ptr],$oldval,O7\t! If $oldval==[$mem_ptr] Then store O7 into [$mem_ptr], set O7=[$mem_ptr] in any case\n\t"
    1.16 @@ -6688,18 +6687,8 @@
    1.17              "MOV    1,$res\n\t"
    1.18              "MOVne  icc,R_G0,$res"
    1.19    %}
    1.20 -  ins_encode %{
    1.21 -    Register Rmem = reg_to_register_object($mem_ptr$$reg);
    1.22 -    Register Rold = reg_to_register_object($oldval$$reg);
    1.23 -    Register Rnew = reg_to_register_object($newval$$reg);
    1.24 -    Register Rres = reg_to_register_object($res$$reg);
    1.25 -
    1.26 -    __ cas(Rmem, Rold, Rnew);
    1.27 -    __ cmp( Rold, Rnew );
    1.28 -    __ mov(1, Rres);
    1.29 -    __ movcc( Assembler::notEqual, false, Assembler::icc, G0, Rres );
    1.30 -  %}
    1.31 -
    1.32 +  ins_encode( enc_casi(mem_ptr, oldval, newval),
    1.33 +              enc_iflags_ne_to_boolean(res) );
    1.34    ins_pipe( long_memory_op );
    1.35  %}
    1.36  

mercurial