--- old/src/share/vm/opto/matcher.cpp 2015-10-30 19:14:56.216475790 +0100 +++ new/src/share/vm/opto/matcher.cpp 2015-10-30 19:14:56.144475788 +0100 @@ -936,9 +936,13 @@ case Op_StrComp: case Op_StrEquals: case Op_StrIndexOf: + case Op_StrIndexOfChar: case Op_AryEq: + case Op_HasNegatives: case Op_MemBarVolatile: case Op_MemBarCPUOrder: // %%% these ideals should have narrower adr_type? + case Op_StrInflatedCopy: + case Op_StrCompressedCopy: case Op_EncodeISOArray: nidx = Compile::AliasIdxTop; nat = NULL; @@ -2156,7 +2160,11 @@ case Op_StrComp: case Op_StrEquals: case Op_StrIndexOf: + case Op_StrIndexOfChar: case Op_AryEq: + case Op_HasNegatives: + case Op_StrInflatedCopy: + case Op_StrCompressedCopy: case Op_EncodeISOArray: set_shared(n); // Force result into register (it will be anyways) break; @@ -2335,7 +2343,8 @@ n->del_req(3); break; } - case Op_StrEquals: { + case Op_StrEquals: + case Op_StrIndexOfChar: { Node *pair1 = new BinaryNode(n->in(2),n->in(3)); n->set_req(2,pair1); n->set_req(3,n->in(4)); @@ -2352,6 +2361,8 @@ n->del_req(4); break; } + case Op_StrCompressedCopy: + case Op_StrInflatedCopy: case Op_EncodeISOArray: { // Restructure into a binary tree for Matching. Node* pair = new BinaryNode(n->in(3), n->in(4));