Mercurial > hg > truffle
diff src/cpu/x86/vm/x86_64.ad @ 163:885ed790ecf0
6695810: null oop passed to encode_heap_oop_not_null
Summary: fix several problems in C2 related to Escape Analysis and Compressed Oops.
Reviewed-by: never, jrose
author | kvn |
---|---|
date | Wed, 21 May 2008 10:45:07 -0700 |
parents | f3de1255b035 |
children | c436414a719e |
line wrap: on
line diff
--- a/src/cpu/x86/vm/x86_64.ad Tue May 20 06:32:58 2008 -0700 +++ b/src/cpu/x86/vm/x86_64.ad Wed May 21 10:45:07 2008 -0700 @@ -6044,10 +6044,9 @@ %} // Load Compressed Pointer -instruct loadN(rRegN dst, memory mem, rFlagsReg cr) +instruct loadN(rRegN dst, memory mem) %{ match(Set dst (LoadN mem)); - effect(KILL cr); ins_cost(125); // XXX format %{ "movl $dst, $mem\t# compressed ptr" %} @@ -6064,7 +6063,7 @@ instruct loadKlass(rRegP dst, memory mem) %{ match(Set dst (LoadKlass mem)); - predicate(!n->in(MemNode::Address)->bottom_type()->is_narrow()); + predicate(!n->in(MemNode::Address)->bottom_type()->is_ptr_to_narrowoop()); ins_cost(125); // XXX format %{ "movq $dst, $mem\t# class" %} @@ -6074,10 +6073,11 @@ %} // Load Klass Pointer -instruct loadKlassComp(rRegP dst, memory mem) +instruct loadKlassComp(rRegP dst, memory mem, rFlagsReg cr) %{ match(Set dst (LoadKlass mem)); - predicate(n->in(MemNode::Address)->bottom_type()->is_narrow()); + predicate(n->in(MemNode::Address)->bottom_type()->is_ptr_to_narrowoop()); + effect(KILL cr); ins_cost(125); // XXX format %{ "movl $dst, $mem\t# compressed class\n\t" @@ -6358,8 +6358,9 @@ ins_pipe(ialu_reg); %} -instruct loadConN(rRegN dst, immN src) %{ +instruct loadConN(rRegN dst, immN src, rFlagsReg cr) %{ match(Set dst src); + effect(KILL cr); ins_cost(125); format %{ "movq $dst, $src\t# compressed ptr\n\t" @@ -6633,10 +6634,9 @@ %} // Store Compressed Pointer -instruct storeN(memory mem, rRegN src, rFlagsReg cr) +instruct storeN(memory mem, rRegN src) %{ match(Set mem (StoreN mem src)); - effect(KILL cr); ins_cost(125); // XXX format %{ "movl $mem, $src\t# ptr" %}