< prev index next > src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Field.java
Print this page
/*
! * Copyright (c) 2000, 2023, 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.
/*
! * Copyright (c) 2000, 2026, 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.
int accessFlags;
int fieldFlags;
int initialValueIndex;
int genericSignatureIndex;
int contendedGroup;
+ int layoutKind;
+ int nullMarkerOffset;
}
// The format of the stream, after decompression, is a series of
// integers organized like this:
//
fieldInfoValues.genericSignatureIndex = crs.readInt(); // read generic signature index
}
if (fieldIsContended(fieldInfoValues.fieldFlags)) {
fieldInfoValues.contendedGroup = crs.readInt(); // read contended group
}
+ if (fieldIsFlat(fieldInfoValues.fieldFlags)) {
+ fieldInfoValues.layoutKind = crs.readInt(); // read LayoutKind as int
+ }
+ if (fieldHasNullMarker(fieldInfoValues.fieldFlags)) {
+ fieldInfoValues.nullMarkerOffset = crs.readInt(); // read null marker offset
+ }
return fieldInfoValues;
}
public static Field[] getFields(InstanceKlass kls) {
CompressedReadStream crs = new CompressedReadStream(kls.getFieldInfoStream().getDataStart());
private static boolean fieldIsInitialized(int flags) { return ((flags >> InstanceKlass.FIELD_FLAG_IS_INITIALIZED) & 1 ) != 0; }
private static boolean fieldIsInjected(int flags) { return ((flags >> InstanceKlass.FIELD_FLAG_IS_INJECTED ) & 1 ) != 0; }
private static boolean fieldIsGeneric(int flags) { return ((flags >> InstanceKlass.FIELD_FLAG_IS_GENERIC ) & 1 ) != 0; }
private static boolean fieldIsStable(int flags) { return ((flags >> InstanceKlass.FIELD_FLAG_IS_STABLE ) & 1 ) != 0; }
private static boolean fieldIsContended(int flags) { return ((flags >> InstanceKlass.FIELD_FLAG_IS_CONTENDED ) & 1 ) != 0; }
!
public boolean isInitialized() { return fieldIsInitialized(values.fieldFlags); }
public boolean isInjected() { return fieldIsInjected(values.fieldFlags); }
public boolean isGeneric() { return fieldIsGeneric(values.fieldFlags); }
public boolean isStable() { return fieldIsStable(values.fieldFlags); }
private static boolean fieldIsInitialized(int flags) { return ((flags >> InstanceKlass.FIELD_FLAG_IS_INITIALIZED) & 1 ) != 0; }
private static boolean fieldIsInjected(int flags) { return ((flags >> InstanceKlass.FIELD_FLAG_IS_INJECTED ) & 1 ) != 0; }
private static boolean fieldIsGeneric(int flags) { return ((flags >> InstanceKlass.FIELD_FLAG_IS_GENERIC ) & 1 ) != 0; }
private static boolean fieldIsStable(int flags) { return ((flags >> InstanceKlass.FIELD_FLAG_IS_STABLE ) & 1 ) != 0; }
private static boolean fieldIsContended(int flags) { return ((flags >> InstanceKlass.FIELD_FLAG_IS_CONTENDED ) & 1 ) != 0; }
! private static boolean fieldIsNullFreeInlineType(int flags) { return ((flags >> InstanceKlass.FIELD_FLAG_IS_NULL_FREE_INLINE) & 1 ) != 0; }
+ private static boolean fieldIsFlat(int flags) { return ((flags >> InstanceKlass.FIELD_FLAG_IS_FLAT) & 1 ) != 0; }
+ private static boolean fieldHasNullMarker(int flags) { return ((flags >> InstanceKlass.FIELD_FLAG_IS_NULL_MARKER) & 1 ) != 0; }
public boolean isInitialized() { return fieldIsInitialized(values.fieldFlags); }
public boolean isInjected() { return fieldIsInjected(values.fieldFlags); }
public boolean isGeneric() { return fieldIsGeneric(values.fieldFlags); }
public boolean isStable() { return fieldIsStable(values.fieldFlags); }
< prev index next >