< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/StubUtil.java

Print this page

        

*** 22,38 **** */ package org.graalvm.compiler.hotspot.stubs; - import static jdk.vm.ci.meta.DeoptimizationReason.RuntimeConstraint; - import static org.graalvm.compiler.hotspot.GraalHotSpotVMConfigBase.INJECTED_VMCONFIG; - import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.clearPendingException; - import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.getPendingException; - import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.getAndClearObjectResult; - import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.loadHubIntrinsic; - import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOops; import static org.graalvm.compiler.replacements.nodes.CStringConstant.cstring; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Arrays; --- 22,31 ----
*** 42,65 **** import org.graalvm.compiler.api.replacements.Fold.InjectedParameter; import org.graalvm.compiler.core.common.spi.ForeignCallDescriptor; import org.graalvm.compiler.graph.Node.ConstantNodeParameter; import org.graalvm.compiler.graph.Node.NodeIntrinsic; import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig; - import org.graalvm.compiler.hotspot.nodes.DeoptimizeCallerNode; import org.graalvm.compiler.hotspot.nodes.StubForeignCallNode; import org.graalvm.compiler.hotspot.nodes.VMErrorNode; - import org.graalvm.compiler.hotspot.word.KlassPointer; - import org.graalvm.compiler.nodes.PiNode; - import org.graalvm.compiler.nodes.SnippetAnchorNode; - import org.graalvm.compiler.nodes.extended.GuardingNode; import org.graalvm.compiler.replacements.Log; import org.graalvm.compiler.word.Word; - import jdk.internal.vm.compiler.word.Pointer; import jdk.internal.vm.compiler.word.WordFactory; - import jdk.vm.ci.meta.DeoptimizationAction; - //JaCoCo Exclude /** * A collection of methods used in {@link Stub}s. */ --- 35,50 ----
*** 94,112 **** List<Class<?>> paramList = Arrays.asList(found.getParameterTypes()); Class<?>[] cCallTypes = paramList.subList(1, paramList.size()).toArray(new Class<?>[paramList.size() - 1]); return new ForeignCallDescriptor(name, found.getReturnType(), cCallTypes); } - public static void handlePendingException(Word thread, boolean shouldClearException, boolean isObjectResult) { - if ((shouldClearException && clearPendingException(thread) != null) || (!shouldClearException && getPendingException(thread) != null)) { - if (isObjectResult) { - getAndClearObjectResult(thread); - } - DeoptimizeCallerNode.deopt(DeoptimizationAction.None, RuntimeConstraint); - } - } - /** * Determines if this is a HotSpot build where the ASSERT mechanism is enabled. */ @Fold public static boolean cAssertionsEnabled(@InjectedParameter GraalHotSpotVMConfig config) { --- 79,88 ----
*** 230,279 **** public static void fatal(String format, long v1, long v2, long v3) { vmMessageC(VM_MESSAGE_C, true, cstring(format), v1, v2, v3); } /** - * Verifies that a given object value is well formed if {@code -XX:+VerifyOops} is enabled. - */ - public static Object verifyObject(Object object) { - if (verifyOops(INJECTED_VMCONFIG)) { - Word verifyOopCounter = WordFactory.unsigned(verifyOopCounterAddress(INJECTED_VMCONFIG)); - verifyOopCounter.writeInt(0, verifyOopCounter.readInt(0) + 1); - - Pointer oop = Word.objectToTrackedPointer(object); - if (object != null) { - GuardingNode anchorNode = SnippetAnchorNode.anchor(); - // make sure object is 'reasonable' - if (!oop.and(WordFactory.unsigned(verifyOopMask(INJECTED_VMCONFIG))).equal(WordFactory.unsigned(verifyOopBits(INJECTED_VMCONFIG)))) { - fatal("oop not in heap: %p", oop.rawValue()); - } - - KlassPointer klass = loadHubIntrinsic(PiNode.piCastNonNull(object, anchorNode)); - if (klass.isNull()) { - fatal("klass for oop %p is null", oop.rawValue()); - } - } - } - return object; - } - - @Fold - static long verifyOopCounterAddress(@InjectedParameter GraalHotSpotVMConfig config) { - return config.verifyOopCounterAddress; - } - - @Fold - static long verifyOopMask(@InjectedParameter GraalHotSpotVMConfig config) { - return config.verifyOopMask; - } - - @Fold - static long verifyOopBits(@InjectedParameter GraalHotSpotVMConfig config) { - return config.verifyOopBits; - } - - /** * Print {@code number} as decimal string to {@code buffer}. * * @param buffer * @param number * @return A pointer pointing one byte right after the last printed digit in {@code buffer}. --- 206,215 ----
< prev index next >