src/share/vm/opto/subnode.cpp

changeset 728
c3e045194476
parent 670
9c2ecc2ffb12
child 731
ce93a51457ae
     1.1 --- a/src/share/vm/opto/subnode.cpp	Thu Jul 31 15:47:42 2008 -0700
     1.2 +++ b/src/share/vm/opto/subnode.cpp	Fri Aug 01 10:06:45 2008 -0700
     1.3 @@ -681,7 +681,11 @@
     1.4  
     1.5    // Now check for LoadKlass on left.
     1.6    Node* ldk1 = in(1);
     1.7 -  if (ldk1->Opcode() != Op_LoadKlass)
     1.8 +  if (ldk1->is_DecodeN()) {
     1.9 +    ldk1 = ldk1->in(1);
    1.10 +    if (ldk1->Opcode() != Op_LoadNKlass )
    1.11 +      return NULL;
    1.12 +  } else if (ldk1->Opcode() != Op_LoadKlass )
    1.13      return NULL;
    1.14    // Take apart the address of the LoadKlass:
    1.15    Node* adr1 = ldk1->in(MemNode::Address);
    1.16 @@ -702,7 +706,11 @@
    1.17  
    1.18    // Check for a LoadKlass from primary supertype array.
    1.19    // Any nested loadklass from loadklass+con must be from the p.s. array.
    1.20 -  if (ldk2->Opcode() != Op_LoadKlass)
    1.21 +  if (ldk2->is_DecodeN()) {
    1.22 +    // Keep ldk2 as DecodeN since it could be used in CmpP below.
    1.23 +    if (ldk2->in(1)->Opcode() != Op_LoadNKlass )
    1.24 +      return NULL;
    1.25 +  } else if (ldk2->Opcode() != Op_LoadKlass)
    1.26      return NULL;
    1.27  
    1.28    // Verify that we understand the situation

mercurial