comparison src/share/vm/opto/matcher.cpp @ 681:fbde8ec322d0

6761600: Use sse 4.2 in intrinsics Summary: Use SSE 4.2 in intrinsics for String.{compareTo/equals/indexOf} and Arrays.equals. Reviewed-by: kvn, never, jrose
author cfang
date Tue, 31 Mar 2009 14:07:08 -0700
parents bd441136a5ce
children 04fa5affa478
comparison
equal deleted inserted replaced
676:d3676b4cb78c 681:fbde8ec322d0
744 } 744 }
745 } 745 }
746 if (nidx == Compile::AliasIdxBot && midx == Compile::AliasIdxTop) { 746 if (nidx == Compile::AliasIdxBot && midx == Compile::AliasIdxTop) {
747 switch (n->Opcode()) { 747 switch (n->Opcode()) {
748 case Op_StrComp: 748 case Op_StrComp:
749 case Op_StrEquals:
750 case Op_StrIndexOf:
749 case Op_AryEq: 751 case Op_AryEq:
750 case Op_MemBarVolatile: 752 case Op_MemBarVolatile:
751 case Op_MemBarCPUOrder: // %%% these ideals should have narrower adr_type? 753 case Op_MemBarCPUOrder: // %%% these ideals should have narrower adr_type?
752 nidx = Compile::AliasIdxTop; 754 nidx = Compile::AliasIdxTop;
753 nat = NULL; 755 nat = NULL;
1786 case Op_Jump: 1788 case Op_Jump:
1787 mstack.push(n->in(1), Visit); // Switch Value 1789 mstack.push(n->in(1), Visit); // Switch Value
1788 mstack.push(n->in(0), Pre_Visit); // Visit Control input 1790 mstack.push(n->in(0), Pre_Visit); // Visit Control input
1789 continue; // while (mstack.is_nonempty()) 1791 continue; // while (mstack.is_nonempty())
1790 case Op_StrComp: 1792 case Op_StrComp:
1793 case Op_StrEquals:
1794 case Op_StrIndexOf:
1791 case Op_AryEq: 1795 case Op_AryEq:
1792 set_shared(n); // Force result into register (it will be anyways) 1796 set_shared(n); // Force result into register (it will be anyways)
1793 break; 1797 break;
1794 case Op_ConP: { // Convert pointers above the centerline to NUL 1798 case Op_ConP: { // Convert pointers above the centerline to NUL
1795 TypeNode *tn = n->as_Type(); // Constants derive from type nodes 1799 TypeNode *tn = n->as_Type(); // Constants derive from type nodes