< 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 >