src/cpu/sparc/vm/sparc.ad

changeset 559
b130b98db9cf
parent 548
ba764ed4b6f2
child 598
885ed790ecf0
     1.1 --- a/src/cpu/sparc/vm/sparc.ad	Thu Apr 17 07:16:03 2008 -0700
     1.2 +++ b/src/cpu/sparc/vm/sparc.ad	Wed Apr 23 11:20:36 2008 -0700
     1.3 @@ -5957,15 +5957,27 @@
     1.4  
     1.5  // Convert oop pointer into compressed form
     1.6  instruct encodeHeapOop(iRegN dst, iRegP src) %{
     1.7 +  predicate(n->bottom_type()->is_narrowoop()->make_oopptr()->ptr() != TypePtr::NotNull);
     1.8    match(Set dst (EncodeP src));
     1.9 -  format %{ "SRL    $src,3,$dst\t encodeHeapOop" %}
    1.10 +  format %{ "encode_heap_oop $src, $dst" %}
    1.11    ins_encode %{
    1.12      __ encode_heap_oop($src$$Register, $dst$$Register);
    1.13    %}
    1.14    ins_pipe(ialu_reg);
    1.15  %}
    1.16  
    1.17 +instruct encodeHeapOop_not_null(iRegN dst, iRegP src) %{
    1.18 +  predicate(n->bottom_type()->is_narrowoop()->make_oopptr()->ptr() == TypePtr::NotNull);
    1.19 +  match(Set dst (EncodeP src));
    1.20 +  format %{ "encode_heap_oop_not_null $src, $dst" %}
    1.21 +  ins_encode %{
    1.22 +    __ encode_heap_oop_not_null($src$$Register, $dst$$Register);
    1.23 +  %}
    1.24 +  ins_pipe(ialu_reg);
    1.25 +%}
    1.26 +
    1.27  instruct decodeHeapOop(iRegP dst, iRegN src) %{
    1.28 +  predicate(n->bottom_type()->is_oopptr()->ptr() != TypePtr::NotNull);
    1.29    match(Set dst (DecodeN src));
    1.30    format %{ "decode_heap_oop $src, $dst" %}
    1.31    ins_encode %{
    1.32 @@ -5974,6 +5986,16 @@
    1.33    ins_pipe(ialu_reg);
    1.34  %}
    1.35  
    1.36 +instruct decodeHeapOop_not_null(iRegP dst, iRegN src) %{
    1.37 +  predicate(n->bottom_type()->is_oopptr()->ptr() == TypePtr::NotNull);
    1.38 +  match(Set dst (DecodeN src));
    1.39 +  format %{ "decode_heap_oop_not_null $src, $dst" %}
    1.40 +  ins_encode %{
    1.41 +    __ decode_heap_oop_not_null($src$$Register, $dst$$Register);
    1.42 +  %}
    1.43 +  ins_pipe(ialu_reg);
    1.44 +%}
    1.45 +
    1.46  
    1.47  // Store Zero into Aligned Packed Bytes
    1.48  instruct storeA8B0(memory mem, immI0 zero) %{

mercurial