src/share/vm/opto/escape.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/escape.cpp Fri Jun 20 14:33:53 2008
--- new/src/share/vm/opto/escape.cpp Fri Jun 20 14:33:53 2008
*** 960,976 ****
--- 960,971 ----
TypeNode *tn = n->as_Type();
tinst = igvn->type(val)->isa_oopptr();
assert(tinst != NULL && tinst->is_instance() &&
tinst->instance_id() == elem , "instance type expected.");
const TypeOopPtr *tn_t = NULL;
const Type *tn_type = igvn->type(tn);
if (tn_type->isa_narrowoop()) {
tn_t = tn_type->is_narrowoop()->make_oopptr()->isa_oopptr();
} else {
tn_t = tn_type->isa_oopptr();
}
+ const TypeOopPtr *tn_t = tn_type->make_ptr()->isa_oopptr();
if (tn_t != NULL &&
tinst->cast_to_instance(TypeOopPtr::UNKNOWN_INSTANCE)->higher_equal(tn_t)) {
if (tn_type->isa_narrowoop()) {
tn_type = tinst->make_narrowoop();
*** 1919,1931 ****
--- 1914,1924 ----
}
case Op_StoreP:
case Op_StoreN:
{
const Type *adr_type = phase->type(n->in(MemNode::Address));
if (adr_type->isa_narrowoop()) {
adr_type = adr_type->is_narrowoop()->make_oopptr();
}
+ adr_type = adr_type->make_ptr();
if (adr_type->isa_oopptr()) {
add_node(n, PointsToNode::UnknownType, PointsToNode::UnknownEscape, false);
} else {
Node* adr = n->in(MemNode::Address);
if (adr->is_AddP() && phase->type(adr) == TypeRawPtr::NOTNULL &&
*** 1946,1958 ****
--- 1939,1949 ----
case Op_StorePConditional:
case Op_CompareAndSwapP:
case Op_CompareAndSwapN:
{
const Type *adr_type = phase->type(n->in(MemNode::Address));
if (adr_type->isa_narrowoop()) {
adr_type = adr_type->is_narrowoop()->make_oopptr();
}
+ adr_type = adr_type->make_ptr();
if (adr_type->isa_oopptr()) {
add_node(n, PointsToNode::UnknownType, PointsToNode::UnknownEscape, false);
} else {
_processed.set(n->_idx);
return;
*** 2129,2142 ****
--- 2120,2130 ----
case Op_StorePConditional:
case Op_CompareAndSwapP:
case Op_CompareAndSwapN:
{
Node *adr = n->in(MemNode::Address);
! const Type *adr_type = phase->type(adr)->make_ptr();
if (adr_type->isa_narrowoop()) {
adr_type = adr_type->is_narrowoop()->make_oopptr();
}
#ifdef ASSERT
if (!adr_type->isa_oopptr())
assert(phase->type(adr) == TypeRawPtr::NOTNULL, "Op_StoreP");
#endif
src/share/vm/opto/escape.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File