src/share/vm/opto/loopopts.cpp

changeset 499
b8f5ba577b02
parent 470
e2ae28d2ce91
child 504
8bb88f9877e5
     1.1 --- a/src/share/vm/opto/loopopts.cpp	Thu Mar 13 16:06:34 2008 -0700
     1.2 +++ b/src/share/vm/opto/loopopts.cpp	Thu Mar 13 16:31:32 2008 -0700
     1.3 @@ -32,7 +32,18 @@
     1.4    int wins = 0;
     1.5    assert( !n->is_CFG(), "" );
     1.6    assert( region->is_Region(), "" );
     1.7 -  Node *phi = new (C, region->req()) PhiNode( region, n->bottom_type() );
     1.8 +
     1.9 +  const Type* type = n->bottom_type();
    1.10 +  const TypeOopPtr *t_oop = _igvn.type(n)->isa_oopptr();
    1.11 +  Node *phi;
    1.12 +  if( t_oop != NULL && t_oop->is_instance_field() ) {
    1.13 +    int iid    = t_oop->instance_id();
    1.14 +    int index  = C->get_alias_index(t_oop);
    1.15 +    int offset = t_oop->offset();
    1.16 +    phi = new (C,region->req()) PhiNode(region, type, NULL, iid, index, offset);
    1.17 +  } else {
    1.18 +    phi = new (C,region->req()) PhiNode(region, type);
    1.19 +  }
    1.20    uint old_unique = C->unique();
    1.21    for( uint i = 1; i < region->req(); i++ ) {
    1.22      Node *x;

mercurial