< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/PEReadEliminationClosure.java

Print this page
rev 52509 : [mq]: graal

*** 186,196 **** ResolvedJavaType type = StampTool.typeOrNull(load.object()); if (type != null && type.isArray()) { JavaKind accessKind = load.accessKind(); JavaKind componentKind = type.getComponentType().getJavaKind(); long offset = load.offset().asJavaConstant().asLong(); ! int index = VirtualArrayNode.entryIndexForOffset(tool.getArrayOffsetProvider(), offset, accessKind, type.getComponentType(), Integer.MAX_VALUE); ValueNode object = GraphUtil.unproxify(load.object()); LocationIdentity location = NamedLocationIdentity.getArrayLocation(componentKind); ValueNode cachedValue = state.getReadCache(object, location, index, accessKind, this); assert cachedValue == null || load.stamp(NodeView.DEFAULT).isCompatible(cachedValue.stamp(NodeView.DEFAULT)) : "The RawLoadNode's stamp is not compatible with the cached value."; if (cachedValue != null) { --- 186,197 ---- ResolvedJavaType type = StampTool.typeOrNull(load.object()); if (type != null && type.isArray()) { JavaKind accessKind = load.accessKind(); JavaKind componentKind = type.getComponentType().getJavaKind(); long offset = load.offset().asJavaConstant().asLong(); ! int index = VirtualArrayNode.entryIndexForOffset(tool.getMetaAccess(), offset, accessKind, type.getComponentType(), Integer.MAX_VALUE); ! if (index >= 0) { ValueNode object = GraphUtil.unproxify(load.object()); LocationIdentity location = NamedLocationIdentity.getArrayLocation(componentKind); ValueNode cachedValue = state.getReadCache(object, location, index, accessKind, this); assert cachedValue == null || load.stamp(NodeView.DEFAULT).isCompatible(cachedValue.stamp(NodeView.DEFAULT)) : "The RawLoadNode's stamp is not compatible with the cached value."; if (cachedValue != null) {
*** 200,209 **** --- 201,211 ---- } else { state.addReadCache(object, location, index, accessKind, isOverflowAccess(accessKind, componentKind), load, this); } } } + } return false; } private boolean processUnsafeStore(RawStoreNode store, PEReadEliminationBlockState state, GraphEffectList effects) { ResolvedJavaType type = StampTool.typeOrNull(store.object());
*** 212,222 **** JavaKind componentKind = type.getComponentType().getJavaKind(); LocationIdentity location = NamedLocationIdentity.getArrayLocation(componentKind); if (store.offset().isConstant()) { long offset = store.offset().asJavaConstant().asLong(); boolean overflowAccess = isOverflowAccess(accessKind, componentKind); ! int index = overflowAccess ? -1 : VirtualArrayNode.entryIndexForOffset(tool.getArrayOffsetProvider(), offset, accessKind, type.getComponentType(), Integer.MAX_VALUE); return processStore(store, store.object(), location, index, accessKind, overflowAccess, store.value(), state, effects); } else { processIdentity(state, location); } } else { --- 214,224 ---- JavaKind componentKind = type.getComponentType().getJavaKind(); LocationIdentity location = NamedLocationIdentity.getArrayLocation(componentKind); if (store.offset().isConstant()) { long offset = store.offset().asJavaConstant().asLong(); boolean overflowAccess = isOverflowAccess(accessKind, componentKind); ! int index = overflowAccess ? -1 : VirtualArrayNode.entryIndexForOffset(tool.getMetaAccess(), offset, accessKind, type.getComponentType(), Integer.MAX_VALUE); return processStore(store, store.object(), location, index, accessKind, overflowAccess, store.value(), state, effects); } else { processIdentity(state, location); } } else {
< prev index next >