src/jdk.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/nodes/GraalHotSpotVMConfigNode.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/jdk.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/nodes/GraalHotSpotVMConfigNode.java	Mon Feb  6 12:01:22 2017
--- new/src/jdk.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/nodes/GraalHotSpotVMConfigNode.java	Mon Feb  6 12:01:22 2017

*** 1,7 **** --- 1,7 ---- /* ! * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 53,118 **** --- 53,142 ---- public static final NodeClass<GraalHotSpotVMConfigNode> TYPE = NodeClass.create(GraalHotSpotVMConfigNode.class); private final GraalHotSpotVMConfig config; protected final int markId; public GraalHotSpotVMConfigNode(@InjectedNodeParameter GraalHotSpotVMConfig config, int markId, JavaKind kind) { super(TYPE, StampFactory.forKind(kind)); + /** + * Constructor for {@link #areConfigValuesConstant()}. + * + * @param config + */ + public GraalHotSpotVMConfigNode(@InjectedNodeParameter GraalHotSpotVMConfig config) { + super(TYPE, StampFactory.forKind(JavaKind.Boolean)); this.config = config; ! this.markId = markId; ! this.markId = 0; } /** ! * Constructor selected by {@link #loadConfigValue(int, JavaKind)}. ! * Constructor for node intrinsics below. * * @param config ! * @param markId id of the config value */ public GraalHotSpotVMConfigNode(@InjectedNodeParameter GraalHotSpotVMConfig config, int markId) { ! super(TYPE, StampFactory.forKind(JavaKind.Boolean)); ! super(TYPE, StampFactory.forNodeIntrinsic()); this.config = config; ! this.markId = 0; ! this.markId = markId; + } + + /** + * Constructor with explicit type specification. + * + * @param config + * @param markId id of the config value + * @param kind explicit type of the node + */ + public GraalHotSpotVMConfigNode(@InjectedNodeParameter GraalHotSpotVMConfig config, int markId, JavaKind kind) { + super(TYPE, StampFactory.forKind(kind)); + this.config = config; + this.markId = markId; } @Override public void generate(NodeLIRBuilderTool generator) { ! Value res = ((HotSpotLIRGenerator) generator.getLIRGeneratorTool()).emitLoadConfigValue(markId, generator.getLIRGeneratorTool().getLIRKind(stamp)); generator.setResult(this, res); } @NodeIntrinsic ! private static native boolean isConfigValueConstant(@ConstantNodeParameter int markId); ! private static native boolean areConfigValuesConstant(); ! @NodeIntrinsic(setStampFromReturnType = true) ! private static native long loadConfigValue(@ConstantNodeParameter int markId, @ConstantNodeParameter JavaKind kind); ! private static native long loadLongConfigValue(@ConstantNodeParameter int markId); + + @NodeIntrinsic(setStampFromReturnType = true) + private static native int loadIntConfigValue(@ConstantNodeParameter int markId); + + @NodeIntrinsic(setStampFromReturnType = true) + private static native byte loadByteConfigValue(@ConstantNodeParameter int markId); public static long cardTableAddress() { ! return loadConfigValue(cardTableAddressMark(INJECTED_VMCONFIG), JavaKind.Long); ! return loadLongConfigValue(cardTableAddressMark(INJECTED_VMCONFIG)); } public static boolean isCardTableAddressConstant() { ! return isConfigValueConstant(cardTableAddressMark(INJECTED_VMCONFIG)); ! return areConfigValuesConstant(); } public static long heapTopAddress() { ! return loadConfigValue(heapTopAddressMark(INJECTED_VMCONFIG), JavaKind.Long); ! return loadLongConfigValue(heapTopAddressMark(INJECTED_VMCONFIG)); } public static long heapEndAddress() { ! return loadConfigValue(heapEndAddressMark(INJECTED_VMCONFIG), JavaKind.Long); ! return loadLongConfigValue(heapEndAddressMark(INJECTED_VMCONFIG)); } public static long crcTableAddress() { ! return loadConfigValue(crcTableAddressMark(INJECTED_VMCONFIG), JavaKind.Long); ! return loadLongConfigValue(crcTableAddressMark(INJECTED_VMCONFIG)); } public static int logOfHeapRegionGrainBytes() { ! return (int) loadConfigValue(logOfHeapRegionGrainBytesMark(INJECTED_VMCONFIG), JavaKind.Byte); ! return loadIntConfigValue(logOfHeapRegionGrainBytesMark(INJECTED_VMCONFIG)); } public static boolean inlineContiguousAllocationSupported() { ! return loadConfigValue(inlineContiguousAllocationSupportedMark(INJECTED_VMCONFIG), JavaKind.Byte) > 0; ! return loadByteConfigValue(inlineContiguousAllocationSupportedMark(INJECTED_VMCONFIG)) != 0; } @Fold public static int cardTableAddressMark(@InjectedParameter GraalHotSpotVMConfig config) { return config.MARKID_CARD_TABLE_ADDRESS;

src/jdk.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/nodes/GraalHotSpotVMConfigNode.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File