Mercurial > hg > truffle
comparison src/cpu/sparc/vm/sparc.ad @ 124:b130b98db9cf
6689060: Escape Analysis does not work with Compressed Oops
Summary: 64-bits VM crashes with -XX:+AggresiveOpts (Escape Analysis + Compressed Oops)
Reviewed-by: never, sgoldman
author | kvn |
---|---|
date | Wed, 23 Apr 2008 11:20:36 -0700 |
parents | ba764ed4b6f2 |
children | 885ed790ecf0 |
comparison
equal
deleted
inserted
replaced
123:9e5a7340635e | 124:b130b98db9cf |
---|---|
5955 ins_pipe(fstoreD_mem_reg); | 5955 ins_pipe(fstoreD_mem_reg); |
5956 %} | 5956 %} |
5957 | 5957 |
5958 // Convert oop pointer into compressed form | 5958 // Convert oop pointer into compressed form |
5959 instruct encodeHeapOop(iRegN dst, iRegP src) %{ | 5959 instruct encodeHeapOop(iRegN dst, iRegP src) %{ |
5960 predicate(n->bottom_type()->is_narrowoop()->make_oopptr()->ptr() != TypePtr::NotNull); | |
5960 match(Set dst (EncodeP src)); | 5961 match(Set dst (EncodeP src)); |
5961 format %{ "SRL $src,3,$dst\t encodeHeapOop" %} | 5962 format %{ "encode_heap_oop $src, $dst" %} |
5962 ins_encode %{ | 5963 ins_encode %{ |
5963 __ encode_heap_oop($src$$Register, $dst$$Register); | 5964 __ encode_heap_oop($src$$Register, $dst$$Register); |
5964 %} | 5965 %} |
5965 ins_pipe(ialu_reg); | 5966 ins_pipe(ialu_reg); |
5966 %} | 5967 %} |
5967 | 5968 |
5969 instruct encodeHeapOop_not_null(iRegN dst, iRegP src) %{ | |
5970 predicate(n->bottom_type()->is_narrowoop()->make_oopptr()->ptr() == TypePtr::NotNull); | |
5971 match(Set dst (EncodeP src)); | |
5972 format %{ "encode_heap_oop_not_null $src, $dst" %} | |
5973 ins_encode %{ | |
5974 __ encode_heap_oop_not_null($src$$Register, $dst$$Register); | |
5975 %} | |
5976 ins_pipe(ialu_reg); | |
5977 %} | |
5978 | |
5968 instruct decodeHeapOop(iRegP dst, iRegN src) %{ | 5979 instruct decodeHeapOop(iRegP dst, iRegN src) %{ |
5980 predicate(n->bottom_type()->is_oopptr()->ptr() != TypePtr::NotNull); | |
5969 match(Set dst (DecodeN src)); | 5981 match(Set dst (DecodeN src)); |
5970 format %{ "decode_heap_oop $src, $dst" %} | 5982 format %{ "decode_heap_oop $src, $dst" %} |
5971 ins_encode %{ | 5983 ins_encode %{ |
5972 __ decode_heap_oop($src$$Register, $dst$$Register); | 5984 __ decode_heap_oop($src$$Register, $dst$$Register); |
5985 %} | |
5986 ins_pipe(ialu_reg); | |
5987 %} | |
5988 | |
5989 instruct decodeHeapOop_not_null(iRegP dst, iRegN src) %{ | |
5990 predicate(n->bottom_type()->is_oopptr()->ptr() == TypePtr::NotNull); | |
5991 match(Set dst (DecodeN src)); | |
5992 format %{ "decode_heap_oop_not_null $src, $dst" %} | |
5993 ins_encode %{ | |
5994 __ decode_heap_oop_not_null($src$$Register, $dst$$Register); | |
5973 %} | 5995 %} |
5974 ins_pipe(ialu_reg); | 5996 ins_pipe(ialu_reg); |
5975 %} | 5997 %} |
5976 | 5998 |
5977 | 5999 |