src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotForeignCallsProvider.java
changeset 52578 7dd81e82d083
parent 51436 091c0d22e735
child 52910 583fd71c47d6
equal deleted inserted replaced
52577:5b87d3fc1093 52578:7dd81e82d083
    46 import org.graalvm.compiler.hotspot.HotSpotForeignCallLinkageImpl;
    46 import org.graalvm.compiler.hotspot.HotSpotForeignCallLinkageImpl;
    47 import org.graalvm.compiler.hotspot.HotSpotGraalRuntimeProvider;
    47 import org.graalvm.compiler.hotspot.HotSpotGraalRuntimeProvider;
    48 import org.graalvm.compiler.hotspot.meta.HotSpotHostForeignCallsProvider;
    48 import org.graalvm.compiler.hotspot.meta.HotSpotHostForeignCallsProvider;
    49 import org.graalvm.compiler.hotspot.meta.HotSpotProviders;
    49 import org.graalvm.compiler.hotspot.meta.HotSpotProviders;
    50 import org.graalvm.compiler.options.OptionValues;
    50 import org.graalvm.compiler.options.OptionValues;
       
    51 import org.graalvm.compiler.replacements.amd64.AMD64ArrayIndexOf;
    51 import org.graalvm.compiler.word.WordTypes;
    52 import org.graalvm.compiler.word.WordTypes;
    52 
    53 
    53 import jdk.vm.ci.code.CallingConvention;
    54 import jdk.vm.ci.code.CallingConvention;
    54 import jdk.vm.ci.code.CodeCacheProvider;
    55 import jdk.vm.ci.code.CodeCacheProvider;
    55 import jdk.vm.ci.code.RegisterValue;
    56 import jdk.vm.ci.code.RegisterValue;
   106         }
   107         }
   107         if (config.useCRC32CIntrinsics) {
   108         if (config.useCRC32CIntrinsics) {
   108             registerForeignCall(UPDATE_BYTES_CRC32C, config.updateBytesCRC32C, NativeCall, PRESERVES_REGISTERS, LEAF_NOFP, REEXECUTABLE_ONLY_AFTER_EXCEPTION, any());
   109             registerForeignCall(UPDATE_BYTES_CRC32C, config.updateBytesCRC32C, NativeCall, PRESERVES_REGISTERS, LEAF_NOFP, REEXECUTABLE_ONLY_AFTER_EXCEPTION, any());
   109         }
   110         }
   110 
   111 
       
   112         link(new AMD64ArrayIndexOfStub(AMD64ArrayIndexOf.STUB_INDEX_OF_TWO_CONSECUTIVE_BYTES, options, providers,
       
   113                         registerStubCall(AMD64ArrayIndexOf.STUB_INDEX_OF_TWO_CONSECUTIVE_BYTES, LEAF, REEXECUTABLE, NO_LOCATIONS)));
       
   114         link(new AMD64ArrayIndexOfStub(AMD64ArrayIndexOf.STUB_INDEX_OF_TWO_CONSECUTIVE_CHARS, options, providers,
       
   115                         registerStubCall(AMD64ArrayIndexOf.STUB_INDEX_OF_TWO_CONSECUTIVE_CHARS, LEAF, REEXECUTABLE, NO_LOCATIONS)));
       
   116         link(new AMD64ArrayIndexOfStub(AMD64ArrayIndexOf.STUB_INDEX_OF_1_BYTE, options, providers,
       
   117                         registerStubCall(AMD64ArrayIndexOf.STUB_INDEX_OF_1_BYTE, LEAF, REEXECUTABLE, NO_LOCATIONS)));
       
   118         link(new AMD64ArrayIndexOfStub(AMD64ArrayIndexOf.STUB_INDEX_OF_2_BYTES, options, providers,
       
   119                         registerStubCall(AMD64ArrayIndexOf.STUB_INDEX_OF_2_BYTES, LEAF, REEXECUTABLE, NO_LOCATIONS)));
       
   120         link(new AMD64ArrayIndexOfStub(AMD64ArrayIndexOf.STUB_INDEX_OF_3_BYTES, options, providers,
       
   121                         registerStubCall(AMD64ArrayIndexOf.STUB_INDEX_OF_3_BYTES, LEAF, REEXECUTABLE, NO_LOCATIONS)));
       
   122         link(new AMD64ArrayIndexOfStub(AMD64ArrayIndexOf.STUB_INDEX_OF_4_BYTES, options, providers,
       
   123                         registerStubCall(AMD64ArrayIndexOf.STUB_INDEX_OF_4_BYTES, LEAF, REEXECUTABLE, NO_LOCATIONS)));
       
   124         link(new AMD64ArrayIndexOfStub(AMD64ArrayIndexOf.STUB_INDEX_OF_1_CHAR, options, providers,
       
   125                         registerStubCall(AMD64ArrayIndexOf.STUB_INDEX_OF_1_CHAR, LEAF, REEXECUTABLE, NO_LOCATIONS)));
       
   126         link(new AMD64ArrayIndexOfStub(AMD64ArrayIndexOf.STUB_INDEX_OF_2_CHARS, options, providers,
       
   127                         registerStubCall(AMD64ArrayIndexOf.STUB_INDEX_OF_2_CHARS, LEAF, REEXECUTABLE, NO_LOCATIONS)));
       
   128         link(new AMD64ArrayIndexOfStub(AMD64ArrayIndexOf.STUB_INDEX_OF_3_CHARS, options, providers,
       
   129                         registerStubCall(AMD64ArrayIndexOf.STUB_INDEX_OF_3_CHARS, LEAF, REEXECUTABLE, NO_LOCATIONS)));
       
   130         link(new AMD64ArrayIndexOfStub(AMD64ArrayIndexOf.STUB_INDEX_OF_4_CHARS, options, providers,
       
   131                         registerStubCall(AMD64ArrayIndexOf.STUB_INDEX_OF_4_CHARS, LEAF, REEXECUTABLE, NO_LOCATIONS)));
       
   132 
   111         super.initialize(providers, options);
   133         super.initialize(providers, options);
   112     }
   134     }
   113 
   135 
   114     @Override
   136     @Override
   115     public Value[] getNativeABICallerSaveRegisters() {
   137     public Value[] getNativeABICallerSaveRegisters() {