aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm/opto/subnode.cpp
diff options
context:
space:
mode:
authorkvn <none@none>2008-08-01 10:06:45 -0700
committerkvn <none@none>2008-08-01 10:06:45 -0700
commit4d5c5e80008f2682bacb931382d42ee3531322ff (patch)
tree00323118263b6dbcbac37abb43ca68a42330e327 /src/share/vm/opto/subnode.cpp
parent22ece41ebd378aa770f82e35e1ef40730f7f8ad1 (diff)
downloadjdk8u_hotspot-4d5c5e80008f2682bacb931382d42ee3531322ff.tar.gz
6731641: assert(m->adr_type() == mach->adr_type(),"matcher should not change adr type")
Summary: fixed few addP node type and narrow oop type problems. Reviewed-by: rasbold, never
Diffstat (limited to 'src/share/vm/opto/subnode.cpp')
-rw-r--r--src/share/vm/opto/subnode.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/share/vm/opto/subnode.cpp b/src/share/vm/opto/subnode.cpp
index 90ad08700..ac7de63bf 100644
--- a/src/share/vm/opto/subnode.cpp
+++ b/src/share/vm/opto/subnode.cpp
@@ -681,7 +681,11 @@ Node *CmpPNode::Ideal( PhaseGVN *phase, bool can_reshape ) {
// Now check for LoadKlass on left.
Node* ldk1 = in(1);
- if (ldk1->Opcode() != Op_LoadKlass)
+ if (ldk1->is_DecodeN()) {
+ ldk1 = ldk1->in(1);
+ if (ldk1->Opcode() != Op_LoadNKlass )
+ return NULL;
+ } else if (ldk1->Opcode() != Op_LoadKlass )
return NULL;
// Take apart the address of the LoadKlass:
Node* adr1 = ldk1->in(MemNode::Address);
@@ -702,7 +706,11 @@ Node *CmpPNode::Ideal( PhaseGVN *phase, bool can_reshape ) {
// Check for a LoadKlass from primary supertype array.
// Any nested loadklass from loadklass+con must be from the p.s. array.
- if (ldk2->Opcode() != Op_LoadKlass)
+ if (ldk2->is_DecodeN()) {
+ // Keep ldk2 as DecodeN since it could be used in CmpP below.
+ if (ldk2->in(1)->Opcode() != Op_LoadNKlass )
+ return NULL;
+ } else if (ldk2->Opcode() != Op_LoadKlass)
return NULL;
// Verify that we understand the situation