--- old/src/share/vm/opto/graphKit.cpp 2016-01-07 15:19:08.754210673 +0100 +++ new/src/share/vm/opto/graphKit.cpp 2016-01-07 15:19:08.682210675 +0100 @@ -4341,20 +4341,19 @@ value, T_BYTE, coder_field_idx, MemNode::unordered); } -Node* GraphKit::compress_string(Node* src, Node* dst, Node* count) { +Node* GraphKit::compress_string(Node* src, const TypeAryPtr* src_type, Node* dst, Node* count) { assert(Matcher::match_rule_supported(Op_StrCompressedCopy), "Intrinsic not supported"); - uint idx = C->get_alias_index(TypeAryPtr::BYTES); - StrCompressedCopyNode* str = new StrCompressedCopyNode(control(), memory(idx), src, dst, count); + StrCompressedCopyNode* str = new StrCompressedCopyNode(control(), memory(src_type), src, dst, count); Node* res_mem = _gvn.transform(new SCMemProjNode(str)); - set_memory(res_mem, idx); + set_memory(res_mem, TypeAryPtr::BYTES); return str; } -void GraphKit::inflate_string(Node* src, Node* dst, Node* count) { +void GraphKit::inflate_string(Node* src, Node* dst, const TypeAryPtr* dst_type, Node* count) { assert(Matcher::match_rule_supported(Op_StrInflatedCopy), "Intrinsic not supported"); - uint idx = C->get_alias_index(TypeAryPtr::BYTES); - StrInflatedCopyNode* str = new StrInflatedCopyNode(control(), memory(idx), src, dst, count); - set_memory(_gvn.transform(str), idx); + StrInflatedCopyNode* str = new StrInflatedCopyNode(control(), memory(TypeAryPtr::BYTES), src, dst, count); + Node* res_mem = _gvn.transform(new SCMemProjNode(str)); + set_memory(res_mem, dst_type); } void GraphKit::inflate_string_slow(Node* src, Node* dst, Node* start, Node* count) {