src/share/vm/opto/escape.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
6710487 Cdiff src/share/vm/opto/escape.cpp
src/share/vm/opto/escape.cpp
Print this page
*** 960,976 ****
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();
! }
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();
--- 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 Type *tn_type = igvn->type(tn);
! 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 ****
}
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();
! }
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 &&
--- 1914,1924 ----
}
case Op_StoreP:
case Op_StoreN:
{
const Type *adr_type = phase->type(n->in(MemNode::Address));
! 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 ****
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();
! }
if (adr_type->isa_oopptr()) {
add_node(n, PointsToNode::UnknownType, PointsToNode::UnknownEscape, false);
} else {
_processed.set(n->_idx);
return;
--- 1939,1949 ----
case Op_StorePConditional:
case Op_CompareAndSwapP:
case Op_CompareAndSwapN:
{
const Type *adr_type = phase->type(n->in(MemNode::Address));
! 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 ****
case Op_StorePConditional:
case Op_CompareAndSwapP:
case Op_CompareAndSwapN:
{
Node *adr = n->in(MemNode::Address);
! const Type *adr_type = phase->type(adr);
! 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
--- 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();
#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