/* * Copyright (c) 2011, 2022, 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. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. *
*/
// This class represents the field information contained in the fields // array of an InstanceKlass. Currently it's laid on top an array of // Java shorts but in the future it could simply be used as a real // array type. FieldInfo generally shouldn't be used directly. // Fields should be queried either through InstanceKlass or through // the various FieldStreams. class FieldInfo { friendclass fieldDescriptor; friendclass JavaFieldStream; friendclass ClassFileParser;
public: // fields // Field info extracted from the class file and stored // as an array of 6 shorts.
// Packed field has the tag, and can be either of: // hi bits <--------------------------- lo bits // |---------high---------|---------low---------| // ..........................................CO // ..........................................00 - non-contended field // [--contention_group--]....................10 - contended field with contention group // [------------------offset----------------]01 - real field offset
// Bit O indicates if the packed field contains an offset (O=1) or not (O=0) // Bit C indicates if the field is contended (C=1) or not (C=0) // (if it is contended, the high packed field contains the contention group)
u2 contended_group() const {
assert((_shorts[low_packed_offset] & FIELDINFO_TAG_OFFSET) == 0, "Offset must not have been set");
assert((_shorts[low_packed_offset] & FIELDINFO_TAG_CONTENDED) != 0, "Field must be contended"); return _shorts[high_packed_offset];
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.