@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { assert checkInjectedArgument(b, args[0], targetMethod); jdk.vm.ci.meta.MetaAccessProvider arg0 = b.getMetaAccess(); long result = org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.referentOffset(arg0); JavaConstant constant = JavaConstant.forLong(result); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Long, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@SuppressWarnings("unchecked") @Override public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver unused, ValueNode classNode) { Class<? extends PointerBase> clazz = constantObjectParameter(b, snippetReflection, targetMethod, 0, Class.class, classNode); UnsignedWord result = SizeOf.unsigned(clazz); b.notifyReplacedCall(targetMethod, b.addPush(JavaKind.Object, ConstantNode.forConstant(snippetReflection.forObject(result), b.getMetaAccess()))); return true; } });
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { org.graalvm.word.UnsignedWord result = com.oracle.svm.core.genscavenge.HeapPolicy.getAlignedHeapChunkSize(); JavaConstant constant = snippetReflection.forObject(result); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Object, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { boolean result = com.oracle.svm.core.deopt.DeoptimizationSupport.enabled(); JavaConstant constant = JavaConstant.forInt(result ? 1 : 0); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Int, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { org.graalvm.word.UnsignedWord result = com.oracle.svm.core.genscavenge.UnalignedHeapChunk.getObjectStartOffset(); JavaConstant constant = snippetReflection.forObject(result); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Object, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { int result = com.oracle.svm.core.posix.JavaNetNetUtilMD.MAX_BUFFER_LEN(); JavaConstant constant = JavaConstant.forInt(result); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Int, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { com.oracle.svm.core.thread.JavaThreads result = com.oracle.svm.core.thread.JavaThreads.singleton(); JavaConstant constant = snippetReflection.forObject(result); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Object, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { boolean result = com.oracle.svm.core.os.IsDefined.__solaris__(); JavaConstant constant = JavaConstant.forInt(result ? 1 : 0); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Int, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { boolean result = com.oracle.svm.core.os.IsDefined.ip_IPTOS_TOS_MASK(); JavaConstant constant = JavaConstant.forInt(result ? 1 : 0); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Int, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { com.oracle.svm.core.SubstrateTargetDescription result = com.oracle.svm.core.config.ConfigurationValues.getTarget(); JavaConstant constant = snippetReflection.forObject(result); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Object, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { assert checkInjectedArgument(b, args[0], targetMethod); org.graalvm.compiler.hotspot.GraalHotSpotVMConfig arg0 = injectedGraalHotSpotVMConfig; long result = org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.gcTotalCollectionsAddress(arg0); JavaConstant constant = JavaConstant.forLong(result); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Long, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { assert checkInjectedArgument(b, args[0], targetMethod); org.graalvm.compiler.hotspot.GraalHotSpotVMConfig arg0 = injectedGraalHotSpotVMConfig; int result = org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.identityHashCodeShift(arg0); JavaConstant constant = JavaConstant.forInt(result); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Int, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { assert checkInjectedArgument(b, args[0], targetMethod); org.graalvm.compiler.hotspot.GraalHotSpotVMConfig arg0 = injectedGraalHotSpotVMConfig; int result = org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.layoutHelperLog2ElementSizeMask(arg0); JavaConstant constant = JavaConstant.forInt(result); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Int, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { assert checkInjectedArgument(b, args[0], targetMethod); org.graalvm.compiler.hotspot.GraalHotSpotVMConfig arg0 = injectedGraalHotSpotVMConfig; int result = org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.objectMonitorOwnerOffset(arg0); JavaConstant constant = JavaConstant.forInt(result); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Int, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { assert checkInjectedArgument(b, args[0], targetMethod); org.graalvm.compiler.hotspot.GraalHotSpotVMConfig arg0 = injectedGraalHotSpotVMConfig; int result = org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.prototypeMarkWordOffset(arg0); JavaConstant constant = JavaConstant.forInt(result); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Int, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { assert checkInjectedArgument(b, args[0], targetMethod); org.graalvm.compiler.hotspot.GraalHotSpotVMConfig arg0 = injectedGraalHotSpotVMConfig; int result = org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.stackBias(arg0); JavaConstant constant = JavaConstant.forInt(result); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Int, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { assert checkInjectedArgument(b, args[0], targetMethod); org.graalvm.compiler.hotspot.GraalHotSpotVMConfig arg0 = injectedGraalHotSpotVMConfig; int result = org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.threadPendingExceptionOffset(arg0); JavaConstant constant = JavaConstant.forInt(result); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Int, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { assert checkInjectedArgument(b, args[0], targetMethod); org.graalvm.compiler.hotspot.GraalHotSpotVMConfig arg0 = injectedGraalHotSpotVMConfig; boolean result = org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.useBiasedLocking(arg0); JavaConstant constant = JavaConstant.forInt(result ? 1 : 0); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Int, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override
private boolean handleGet(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver) { VMThreadLocalInfo info = threadLocalCollector.findInfo(b, receiver.get()); VMThreadLocalSTHolderNode holder = b.add(new VMThreadLocalSTHolderNode(info)); b.addPush(targetMethod.getSignature().getReturnKind(), new LoadVMThreadLocalNode(b.getMetaAccess(), info, holder, BarrierType.PRECISE)); return true; }
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args) { assert checkInjectedArgument(b, args[0], targetMethod); org.graalvm.compiler.nodes.graphbuilderconf.IntrinsicContext arg0 = b.getIntrinsic(); long result = org.graalvm.compiler.hotspot.replacements.CipherBlockChainingSubstitutions.embeddedCipherOffset(arg0); JavaConstant constant = JavaConstant.forLong(result); ConstantNode node = ConstantNode.forConstant(constant, b.getMetaAccess(), b.getGraph()); b.push(JavaKind.Long, node); b.notifyReplacedCall(targetMethod, node); return true; } @Override