< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/virtual/VirtualArrayNode.java

Print this page
rev 52509 : [mq]: graal2

*** 24,45 **** package org.graalvm.compiler.nodes.virtual; import java.nio.ByteOrder; - import jdk.vm.ci.meta.ConstantReflectionProvider; - import org.graalvm.compiler.core.common.spi.ArrayOffsetProvider; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodeinfo.Verbosity; import org.graalvm.compiler.nodes.ConstantNode; import org.graalvm.compiler.nodes.FixedNode; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.spi.ArrayLengthProvider; import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; import jdk.vm.ci.meta.JavaKind; import jdk.vm.ci.meta.ResolvedJavaType; @NodeInfo(nameTemplate = "VirtualArray({p#objectId}) {p#componentType/s}[{p#length}]") public class VirtualArrayNode extends VirtualObjectNode implements ArrayLengthProvider { --- 24,45 ---- package org.graalvm.compiler.nodes.virtual; import java.nio.ByteOrder; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodeinfo.Verbosity; import org.graalvm.compiler.nodes.ConstantNode; import org.graalvm.compiler.nodes.FixedNode; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.spi.ArrayLengthProvider; import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; + import jdk.vm.ci.meta.ConstantReflectionProvider; import jdk.vm.ci.meta.JavaKind; + import jdk.vm.ci.meta.MetaAccessProvider; import jdk.vm.ci.meta.ResolvedJavaType; @NodeInfo(nameTemplate = "VirtualArray({p#objectId}) {p#componentType/s}[{p#length}]") public class VirtualArrayNode extends VirtualObjectNode implements ArrayLengthProvider {
*** 89,105 **** public String entryName(int index) { return "[" + index + "]"; } @Override ! public int entryIndexForOffset(ArrayOffsetProvider arrayOffsetProvider, long constantOffset, JavaKind expectedEntryKind) { ! return entryIndexForOffset(arrayOffsetProvider, constantOffset, expectedEntryKind, componentType, length); } ! public static int entryIndexForOffset(ArrayOffsetProvider arrayOffsetProvider, long constantOffset, JavaKind expectedEntryKind, ResolvedJavaType componentType, int length) { ! int baseOffset = arrayOffsetProvider.arrayBaseOffset(componentType.getJavaKind()); ! int indexScale = arrayOffsetProvider.arrayScalingFactor(componentType.getJavaKind()); long offset; if (ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN && componentType.isPrimitive()) { // On big endian, we expect the value to be correctly aligned in memory int componentByteCount = componentType.getJavaKind().getByteCount(); --- 89,105 ---- public String entryName(int index) { return "[" + index + "]"; } @Override ! public int entryIndexForOffset(MetaAccessProvider metaAccess, long constantOffset, JavaKind expectedEntryKind) { ! return entryIndexForOffset(metaAccess, constantOffset, expectedEntryKind, componentType, length); } ! public static int entryIndexForOffset(MetaAccessProvider metaAccess, long constantOffset, JavaKind expectedEntryKind, ResolvedJavaType componentType, int length) { ! int baseOffset = metaAccess.getArrayBaseOffset(componentType.getJavaKind()); ! int indexScale = metaAccess.getArrayIndexScale(componentType.getJavaKind()); long offset; if (ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN && componentType.isPrimitive()) { // On big endian, we expect the value to be correctly aligned in memory int componentByteCount = componentType.getJavaKind().getByteCount();
< prev index next >