--- a/hotspot/src/share/vm/opto/matcher.cpp Tue Jan 22 11:31:25 2013 -0800
+++ b/hotspot/src/share/vm/opto/matcher.cpp Tue Jan 22 15:34:16 2013 -0800
@@ -919,6 +919,7 @@
case Op_AryEq:
case Op_MemBarVolatile:
case Op_MemBarCPUOrder: // %%% these ideals should have narrower adr_type?
+ case Op_EncodeISOArray:
nidx = Compile::AliasIdxTop;
nat = NULL;
break;
@@ -1982,6 +1983,7 @@
case Op_StrEquals:
case Op_StrIndexOf:
case Op_AryEq:
+ case Op_EncodeISOArray:
set_shared(n); // Force result into register (it will be anyways)
break;
case Op_ConP: { // Convert pointers above the centerline to NUL
@@ -2183,6 +2185,13 @@
n->del_req(4);
break;
}
+ case Op_EncodeISOArray: {
+ // Restructure into a binary tree for Matching.
+ Node* pair = new (C) BinaryNode(n->in(3), n->in(4));
+ n->set_req(3, pair);
+ n->del_req(4);
+ break;
+ }
default:
break;
}