comparison src/share/vm/opto/memnode.cpp @ 168:7793bd37a336

6705887: Compressed Oops: generate x64 addressing and implicit null checks with narrow oops Summary: Generate addresses and implicit null checks with narrow oops to avoid decoding. Reviewed-by: jrose, never
author kvn
date Thu, 29 May 2008 12:04:14 -0700
parents c436414a719e
children 9148c65abefc
comparison
equal deleted inserted replaced
167:feeb96a45707 168:7793bd37a336
1623 #ifdef _LP64 1623 #ifdef _LP64
1624 if (adr_type->is_ptr_to_narrowoop()) { 1624 if (adr_type->is_ptr_to_narrowoop()) {
1625 const TypeNarrowOop* narrowtype = tk->is_oopptr()->make_narrowoop(); 1625 const TypeNarrowOop* narrowtype = tk->is_oopptr()->make_narrowoop();
1626 Node* load_klass = gvn.transform(new (C, 3) LoadNKlassNode(ctl, mem, adr, at, narrowtype)); 1626 Node* load_klass = gvn.transform(new (C, 3) LoadNKlassNode(ctl, mem, adr, at, narrowtype));
1627 return DecodeNNode::decode(&gvn, load_klass); 1627 return DecodeNNode::decode(&gvn, load_klass);
1628 } else 1628 }
1629 #endif 1629 #endif
1630 { 1630 assert(!adr_type->is_ptr_to_narrowoop(), "should have got back a narrow oop");
1631 assert(!adr_type->is_ptr_to_narrowoop(), "should have got back a narrow oop"); 1631 return new (C, 3) LoadKlassNode(ctl, mem, adr, at, tk);
1632 return new (C, 3) LoadKlassNode(ctl, mem, adr, at, tk);
1633 }
1634 ShouldNotReachHere();
1635 return (LoadKlassNode*)NULL;
1636 } 1632 }
1637 1633
1638 //------------------------------Value------------------------------------------ 1634 //------------------------------Value------------------------------------------
1639 const Type *LoadKlassNode::Value( PhaseTransform *phase ) const { 1635 const Type *LoadKlassNode::Value( PhaseTransform *phase ) const {
1640 return klass_value_common(phase); 1636 return klass_value_common(phase);