src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/NodeIntrinsificationProvider.java
changeset 48861 47f19ff9903c
parent 47216 71c04702a3d5
child 50858 2d3e99a72541
equal deleted inserted replaced
48860:5bce1b7e7800 48861:47f19ff9903c
    21  * questions.
    21  * questions.
    22  */
    22  */
    23 package org.graalvm.compiler.replacements;
    23 package org.graalvm.compiler.replacements;
    24 
    24 
    25 import org.graalvm.compiler.api.replacements.SnippetReflectionProvider;
    25 import org.graalvm.compiler.api.replacements.SnippetReflectionProvider;
       
    26 import org.graalvm.compiler.core.common.spi.ArrayOffsetProvider;
    26 import org.graalvm.compiler.core.common.spi.ForeignCallsProvider;
    27 import org.graalvm.compiler.core.common.spi.ForeignCallsProvider;
    27 import org.graalvm.compiler.core.common.type.Stamp;
    28 import org.graalvm.compiler.core.common.type.Stamp;
    28 import org.graalvm.compiler.core.common.type.StampFactory;
    29 import org.graalvm.compiler.core.common.type.StampFactory;
    29 import org.graalvm.compiler.core.common.type.TypeReference;
    30 import org.graalvm.compiler.core.common.type.TypeReference;
    30 import org.graalvm.compiler.debug.GraalError;
    31 import org.graalvm.compiler.debug.GraalError;
    38 public class NodeIntrinsificationProvider implements InjectionProvider {
    39 public class NodeIntrinsificationProvider implements InjectionProvider {
    39 
    40 
    40     private final MetaAccessProvider metaAccess;
    41     private final MetaAccessProvider metaAccess;
    41     private final SnippetReflectionProvider snippetReflection;
    42     private final SnippetReflectionProvider snippetReflection;
    42     private final ForeignCallsProvider foreignCalls;
    43     private final ForeignCallsProvider foreignCalls;
       
    44     private final ArrayOffsetProvider arrayOffsetProvider;
    43     private final WordTypes wordTypes;
    45     private final WordTypes wordTypes;
    44 
    46 
    45     public NodeIntrinsificationProvider(MetaAccessProvider metaAccess, SnippetReflectionProvider snippetReflection, ForeignCallsProvider foreignCalls, WordTypes wordTypes) {
    47     public NodeIntrinsificationProvider(MetaAccessProvider metaAccess, SnippetReflectionProvider snippetReflection, ForeignCallsProvider foreignCalls, ArrayOffsetProvider arrayOffsetProvider,
       
    48                     WordTypes wordTypes) {
    46         this.metaAccess = metaAccess;
    49         this.metaAccess = metaAccess;
    47         this.snippetReflection = snippetReflection;
    50         this.snippetReflection = snippetReflection;
    48         this.foreignCalls = foreignCalls;
    51         this.foreignCalls = foreignCalls;
       
    52         this.arrayOffsetProvider = arrayOffsetProvider;
    49         this.wordTypes = wordTypes;
    53         this.wordTypes = wordTypes;
    50     }
    54     }
    51 
    55 
    52     @Override
    56     @Override
    53     public Stamp getInjectedStamp(Class<?> type, boolean nonNull) {
    57     public Stamp getInjectedStamp(Class<?> type, boolean nonNull) {
    71             return injected;
    75             return injected;
    72         } else if (type.equals(ForeignCallsProvider.class)) {
    76         } else if (type.equals(ForeignCallsProvider.class)) {
    73             return type.cast(foreignCalls);
    77             return type.cast(foreignCalls);
    74         } else if (type.equals(SnippetReflectionProvider.class)) {
    78         } else if (type.equals(SnippetReflectionProvider.class)) {
    75             return type.cast(snippetReflection);
    79             return type.cast(snippetReflection);
       
    80         } else if (type.equals(ArrayOffsetProvider.class)) {
       
    81             return type.cast(arrayOffsetProvider);
    76         } else {
    82         } else {
    77             throw new GraalError("Cannot handle injected argument of type %s.", type.getName());
    83             throw new GraalError("Cannot handle injected argument of type %s.", type.getName());
    78         }
    84         }
    79     }
    85     }
    80 }
    86 }