Skip to content

Commit bf2e84d

Browse files
dominikmascherbauerolpaw
authored andcommitted
Add debug info symbols to provide information on heap base, compressed shift, object alignment and tags mask for calculating compressed oops
1 parent 74f620d commit bf2e84d

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/NativeImageDebugInfoFeature.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,13 @@
3030
import java.util.function.Function;
3131
import java.util.function.Supplier;
3232

33+
import com.oracle.svm.core.c.CGlobalData;
34+
import com.oracle.svm.core.c.CGlobalDataFactory;
35+
import com.oracle.svm.core.config.ConfigurationValues;
36+
import com.oracle.svm.core.heap.Heap;
37+
import com.oracle.svm.hosted.c.CGlobalDataFeature;
3338
import com.oracle.svm.util.ReflectionUtil;
39+
import jdk.graal.compiler.core.common.CompressEncoding;
3440
import jdk.graal.compiler.debug.DebugContext;
3541
import jdk.graal.compiler.printer.GraalDebugHandlersFactory;
3642
import com.oracle.svm.core.graal.meta.RuntimeConfiguration;
@@ -53,6 +59,8 @@
5359
import com.oracle.svm.hosted.ProgressReporter;
5460
import com.oracle.svm.hosted.image.sources.SourceManager;
5561
import com.oracle.svm.hosted.util.DiagnosticUtils;
62+
import org.graalvm.word.PointerBase;
63+
import org.graalvm.word.WordFactory;
5664

5765
@AutomaticallyRegisteredFeature
5866
@SuppressWarnings("unused")
@@ -106,6 +114,16 @@ public void beforeAnalysis(BeforeAnalysisAccess access) {
106114
* Ensure ClassLoader.nameAndId is available at runtime for type lookup from gdb
107115
*/
108116
access.registerAsAccessed(ReflectionUtil.lookupField(ClassLoader.class, "nameAndId"));
117+
118+
CompressEncoding compressEncoding = ImageSingletons.lookup(CompressEncoding.class);
119+
CGlobalData<PointerBase> compressedShift = CGlobalDataFactory.createWord(WordFactory.signed(compressEncoding.getShift()), "__svm_compressed_shift");
120+
CGlobalData<PointerBase> useHeapBase = CGlobalDataFactory.createWord(WordFactory.unsigned(compressEncoding.hasBase() ? 1 : 0), "__svm_use_heap_base");
121+
CGlobalData<PointerBase> oopTagsMask = CGlobalDataFactory.createWord(WordFactory.unsigned(Heap.getHeap().getObjectHeader().getReservedBitsMask()), "__svm_oop_tags_mask");
122+
CGlobalData<PointerBase> objectAlignment = CGlobalDataFactory.createWord(WordFactory.unsigned(ConfigurationValues.getObjectLayout().getAlignment()), "__svm_object_alignment");
123+
CGlobalDataFeature.singleton().registerWithGlobalHiddenSymbol(compressedShift);
124+
CGlobalDataFeature.singleton().registerWithGlobalHiddenSymbol(useHeapBase);
125+
CGlobalDataFeature.singleton().registerWithGlobalHiddenSymbol(oopTagsMask);
126+
CGlobalDataFeature.singleton().registerWithGlobalHiddenSymbol(objectAlignment);
109127
}
110128

111129
@Override

0 commit comments

Comments
 (0)