Skip to content
Closed
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/hotspot/share/ci/ciFlags.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2021, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2024, 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
Expand Down Expand Up @@ -92,5 +92,5 @@ void ciFlags::print_member_flags(outputStream* st) {
// ------------------------------------------------------------------
// ciFlags::print
void ciFlags::print(outputStream* st) {
st->print(" flags=%x", _flags);
st->print(" flags=%x", _flags.as_unsigned_short());
}
39 changes: 19 additions & 20 deletions src/hotspot/share/ci/ciFlags.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2024, 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
Expand All @@ -26,7 +26,6 @@
#define SHARE_CI_CIFLAGS_HPP

#include "ci/ciClassList.hpp"
#include "jvm_constants.h"
#include "utilities/accessFlags.hpp"
#include "utilities/ostream.hpp"

Expand All @@ -39,37 +38,37 @@ class ciFlags {
friend class ciField;
friend class ciMethod;

jint _flags;
AccessFlags _flags;
bool _stable;
bool _intialized_final_update;
bool _initialized_final_update;

ciFlags() :_flags(0), _stable(false), _intialized_final_update(false) { }
ciFlags() :_flags(0), _stable(false), _initialized_final_update(false) { }
ciFlags(AccessFlags flags, bool is_stable = false, bool is_initialized_final_update = false) :
_flags(flags.as_int()), _stable(is_stable), _intialized_final_update(is_initialized_final_update) { }
_flags(flags), _stable(is_stable), _initialized_final_update(is_initialized_final_update) { }

public:
// Java access flags
bool is_public () const { return (_flags & JVM_ACC_PUBLIC ) != 0; }
bool is_private () const { return (_flags & JVM_ACC_PRIVATE ) != 0; }
bool is_protected () const { return (_flags & JVM_ACC_PROTECTED ) != 0; }
bool is_static () const { return (_flags & JVM_ACC_STATIC ) != 0; }
bool is_final () const { return (_flags & JVM_ACC_FINAL ) != 0; }
bool is_synchronized () const { return (_flags & JVM_ACC_SYNCHRONIZED ) != 0; }
bool is_super () const { return (_flags & JVM_ACC_SUPER ) != 0; }
bool is_volatile () const { return (_flags & JVM_ACC_VOLATILE ) != 0; }
bool is_transient () const { return (_flags & JVM_ACC_TRANSIENT ) != 0; }
bool is_native () const { return (_flags & JVM_ACC_NATIVE ) != 0; }
bool is_interface () const { return (_flags & JVM_ACC_INTERFACE ) != 0; }
bool is_abstract () const { return (_flags & JVM_ACC_ABSTRACT ) != 0; }
bool is_public () const { return _flags.is_public(); }
bool is_private () const { return _flags.is_private(); }
bool is_protected () const { return _flags.is_protected(); }
bool is_static () const { return _flags.is_static(); }
bool is_final () const { return _flags.is_final(); }
bool is_synchronized () const { return _flags.is_synchronized(); }
bool is_super () const { return _flags.is_super(); }
bool is_volatile () const { return _flags.is_volatile(); }
bool is_transient () const { return _flags.is_transient(); }
bool is_native () const { return _flags.is_native(); }
bool is_interface () const { return _flags.is_interface(); }
bool is_abstract () const { return _flags.is_abstract(); }
bool is_stable () const { return _stable; }
// In case the current object represents a field, return true if
// the field is modified outside of instance initializer methods
// (or class/initializer methods if the field is static) and false
// otherwise.
bool has_initialized_final_update() const { return _intialized_final_update; };
bool has_initialized_final_update() const { return _initialized_final_update; };

// Conversion
jint as_int() { return _flags; }
jint as_int() { return _flags.as_unsigned_short(); }

void print_klass_flags(outputStream* st = tty);
void print_member_flags(outputStream* st = tty);
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/share/ci/ciKlass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ jint ciKlass::modifier_flags() {
jint ciKlass::access_flags() {
assert(is_loaded(), "not loaded");
GUARDED_VM_ENTRY(
return get_Klass()->access_flags().as_int();
return get_Klass()->access_flags().as_unsigned_short();
)
}

Expand Down
4 changes: 2 additions & 2 deletions src/hotspot/share/classfile/classFileParser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2998,7 +2998,7 @@ u2 ClassFileParser::parse_classfile_inner_classes_attribute(const ClassFileStrea
inner_classes->at_put(index++, inner_class_info_index);
inner_classes->at_put(index++, outer_class_info_index);
inner_classes->at_put(index++, inner_name_index);
inner_classes->at_put(index++, inner_access_flags.as_int());
inner_classes->at_put(index++, inner_access_flags.as_unsigned_short());
}

// Check for circular and duplicate entries.
Expand Down Expand Up @@ -5336,7 +5336,7 @@ ClassFileParser::ClassFileParser(ClassFileStream* stream,
assert(_stream != nullptr, "invariant");
assert(_stream->buffer() == _stream->current(), "invariant");
assert(_class_name != nullptr, "invariant");
assert(0 == _access_flags.as_int(), "invariant");
assert(0 == _access_flags.as_unsigned_short(), "invariant");

// Figure out whether we can skip format checking (matching classic VM behavior)
_need_verify = Verifier::should_verify_for(_loader_data->class_loader());
Expand Down
4 changes: 2 additions & 2 deletions src/hotspot/share/classfile/javaClasses.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3169,7 +3169,7 @@ void java_lang_ClassFrameInfo::serialize_offsets(SerializeClosure* f) {
#endif

static int get_flags(const methodHandle& m) {
int flags = (jushort)( m->access_flags().as_int() & JVM_RECOGNIZED_METHOD_MODIFIERS );
int flags = m->access_flags().as_method_flags();
if (m->is_object_initializer()) {
flags |= java_lang_invoke_MemberName::MN_IS_CONSTRUCTOR;
} else {
Expand Down Expand Up @@ -5537,7 +5537,7 @@ int InjectedField::compute_offset() {
ik->print();
tty->print_cr("all fields:");
for (AllFieldStream fs(ik); !fs.done(); fs.next()) {
tty->print_cr(" name: %s, sig: %s, flags: %08x", fs.name()->as_C_string(), fs.signature()->as_C_string(), fs.access_flags().as_int());
tty->print_cr(" name: %s, sig: %s, flags: %08x", fs.name()->as_C_string(), fs.signature()->as_C_string(), fs.access_flags().as_unsigned_short());
}
#endif //PRODUCT
vm_exit_during_initialization("Invalid layout of well-known class: use -Xlog:class+load=info to see the origin of the problem class");
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/share/interpreter/linkResolver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -583,7 +583,7 @@ void LinkResolver::check_method_accessability(Klass* ref_klass,
resolved_klass->is_array_klass()) {
// We need to change "protected" to "public".
assert(flags.is_protected(), "clone not protected?");
jint new_flags = flags.as_int();
u2 new_flags = flags.as_unsigned_short();
new_flags = new_flags & (~JVM_ACC_PROTECTED);
new_flags = new_flags | JVM_ACC_PUBLIC;
flags.set_flags(new_flags);
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/share/jfr/leakprofiler/chains/edgeUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ const Symbol* EdgeUtils::field_name(const Edge& edge, jshort* modifiers) {
JavaFieldStream jfs(ik);
while (!jfs.done()) {
if (offset == jfs.offset()) {
*modifiers = jfs.access_flags().as_int();
*modifiers = jfs.access_flags().as_unsigned_short();
return jfs.name();
}
jfs.next();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -227,9 +227,9 @@ static traceid method_id(KlassPtr klass, MethodPtr method) {
}

template <typename T>
static s4 get_flags(const T* ptr) {
static u2 get_flags(const T* ptr) {
assert(ptr != nullptr, "invariant");
return ptr->access_flags().as_int();
return ptr->access_flags().as_unsigned_short();
}

// Same as JVM_GetClassModifiers
Expand Down Expand Up @@ -968,7 +968,7 @@ static int write_method(JfrCheckpointWriter* writer, MethodPtr method, bool leak
writer->write(artifact_id(klass));
writer->write(mark_symbol(method->name(), leakp));
writer->write(mark_symbol(method->signature(), leakp));
writer->write(static_cast<u2>(get_flags(method)));
writer->write(get_flags(method));
writer->write(get_visibility(method));
return 1;
}
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/share/jvmci/jvmciCompilerToVM.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1000,7 +1000,7 @@ C2V_VMENTRY_NULL(jobject, resolveFieldInPool, (JNIEnv* env, jobject, ARGUMENT_PA
if (info.is_null() || JVMCIENV->get_length(info) != 4) {
JVMCI_ERROR_NULL("info must not be null and have a length of 4");
}
JVMCIENV->put_int_at(info, 0, fd.access_flags().as_int());
JVMCIENV->put_int_at(info, 0, fd.access_flags().as_unsigned_short());
JVMCIENV->put_int_at(info, 1, fd.offset());
JVMCIENV->put_int_at(info, 2, fd.index());
JVMCIENV->put_int_at(info, 3, fd.field_flags().as_uint());
Expand Down
4 changes: 2 additions & 2 deletions src/hotspot/share/jvmci/jvmciEnv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1592,7 +1592,7 @@ JVMCIObject JVMCIEnv::new_FieldInfo(FieldInfo* fieldinfo, JVMCI_TRAPS) {
HotSpotJVMCI::FieldInfo::set_nameIndex(JVMCIENV, obj_h(), (jint)fieldinfo->name_index());
HotSpotJVMCI::FieldInfo::set_signatureIndex(JVMCIENV, obj_h(), (jint)fieldinfo->signature_index());
HotSpotJVMCI::FieldInfo::set_offset(JVMCIENV, obj_h(), (jint)fieldinfo->offset());
HotSpotJVMCI::FieldInfo::set_classfileFlags(JVMCIENV, obj_h(), (jint)fieldinfo->access_flags().as_int());
HotSpotJVMCI::FieldInfo::set_classfileFlags(JVMCIENV, obj_h(), (jint)fieldinfo->access_flags().as_unsigned_short());
HotSpotJVMCI::FieldInfo::set_internalFlags(JVMCIENV, obj_h(), (jint)fieldinfo->field_flags().as_uint());
HotSpotJVMCI::FieldInfo::set_initializerIndex(JVMCIENV, obj_h(), (jint)fieldinfo->initializer_index());
return wrap(obj_h());
Expand All @@ -1603,7 +1603,7 @@ JVMCIObject JVMCIEnv::new_FieldInfo(FieldInfo* fieldinfo, JVMCI_TRAPS) {
(jint)fieldinfo->name_index(),
(jint)fieldinfo->signature_index(),
(jint)fieldinfo->offset(),
(jint)fieldinfo->access_flags().as_int(),
(jint)fieldinfo->access_flags().as_unsigned_short(),
(jint)fieldinfo->field_flags().as_uint(),
(jint)fieldinfo->initializer_index());

Expand Down
6 changes: 3 additions & 3 deletions src/hotspot/share/oops/fieldInfo.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2023, 2024, 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
Expand Down Expand Up @@ -34,7 +34,7 @@ void FieldInfo::print(outputStream* os, ConstantPool* cp) {
name_index(), name(cp)->as_utf8(),
signature_index(), signature(cp)->as_utf8(),
offset(),
access_flags().as_int(),
access_flags().as_unsigned_short(),
field_flags().as_uint(),
initializer_index(),
generic_signature_index(),
Expand Down Expand Up @@ -97,7 +97,7 @@ Array<u1>* FieldInfoStream::create_FieldInfoStream(GrowableArray<FieldInfo>* fie
assert(fi_ref->name_index() == fi.name_index(), "Must be");
assert(fi_ref->signature_index() == fi.signature_index(), "Must be");
assert(fi_ref->offset() == fi.offset(), "Must be");
assert(fi_ref->access_flags().as_int() == fi.access_flags().as_int(), "Must be");
assert(fi_ref->access_flags().as_unsigned_short() == fi.access_flags().as_unsigned_short(), "Must be");
assert(fi_ref->field_flags().as_uint() == fi.field_flags().as_uint(), " Must be");
if(fi_ref->field_flags().is_initialized()) {
assert(fi_ref->initializer_index() == fi.initializer_index(), "Must be");
Expand Down
4 changes: 2 additions & 2 deletions src/hotspot/share/oops/fieldInfo.inline.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2023, 2024, 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
Expand Down Expand Up @@ -73,7 +73,7 @@ inline void Mapper<CON>::map_field_info(const FieldInfo& fi) {
_consumer->accept_uint(fi.name_index());
_consumer->accept_uint(fi.signature_index());
_consumer->accept_uint(fi.offset());
_consumer->accept_uint(fi.access_flags().as_int());
_consumer->accept_uint(fi.access_flags().as_unsigned_short());
_consumer->accept_uint(fi.field_flags().as_uint());
if(fi.field_flags().has_any_optionals()) {
if (fi.field_flags().is_initialized()) {
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/share/oops/instanceKlass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3340,7 +3340,7 @@ InstanceKlass* InstanceKlass::compute_enclosing_class(bool* inner_is_member, TRA
}

u2 InstanceKlass::compute_modifier_flags() const {
u2 access = access_flags().as_int();
u2 access = access_flags().as_unsigned_short();

// But check if it happens to be member class.
InnerClassesIterator iter(this);
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/share/oops/instanceKlass.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ class InstanceKlass: public Klass {

public:
int field_offset (int index) const { return field(index).offset(); }
int field_access_flags(int index) const { return field(index).access_flags().as_int(); }
int field_access_flags(int index) const { return field(index).access_flags().as_unsigned_short(); }
FieldInfo::FieldFlags field_flags(int index) const { return field(index).field_flags(); }
FieldStatus field_status(int index) const { return fields_status()->at(index); }
inline Symbol* field_name (int index) const;
Expand Down
4 changes: 2 additions & 2 deletions src/hotspot/share/oops/method.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1652,7 +1652,7 @@ void Method::init_intrinsic_id(vmSymbolID klass_id) {
&& sig_id == vmSymbolID::NO_SID) {
return;
}
jshort flags = access_flags().as_int();
jshort flags = checked_cast<jshort>(access_flags().as_unsigned_short());

vmIntrinsics::ID id = vmIntrinsics::find_id(klass_id, name_id, sig_id, flags);
if (id != vmIntrinsics::_none) {
Expand Down Expand Up @@ -2300,7 +2300,7 @@ void Method::print_on(outputStream* st) const {
st->print (" - method holder: "); method_holder()->print_value_on(st); st->cr();
st->print (" - constants: " PTR_FORMAT " ", p2i(constants()));
constants()->print_value_on(st); st->cr();
st->print (" - access: 0x%x ", access_flags().as_int()); access_flags().print_on(st); st->cr();
st->print (" - access: 0x%x ", access_flags().as_unsigned_short()); access_flags().print_on(st); st->cr();
st->print (" - flags: 0x%x ", _flags.as_int()); _flags.print_on(st); st->cr();
st->print (" - name: "); name()->print_value_on(st); st->cr();
st->print (" - signature: "); signature()->print_value_on(st); st->cr();
Expand Down
13 changes: 8 additions & 5 deletions src/hotspot/share/prims/jvm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1817,7 +1817,7 @@ JVM_ENTRY(jint, JVM_GetClassAccessFlags(JNIEnv *env, jclass cls))
}

Klass* k = java_lang_Class::as_Klass(mirror);
return k->access_flags().as_int();
return k->access_flags().as_unsigned_short();
}
JVM_END

Expand Down Expand Up @@ -2460,14 +2460,17 @@ JVM_ENTRY(jint, JVM_GetMethodIxModifiers(JNIEnv *env, jclass cls, int method_ind
Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
Method* method = InstanceKlass::cast(k)->methods()->at(method_index);
return method->access_flags().as_int() & JVM_RECOGNIZED_METHOD_MODIFIERS;
return method->access_flags().as_method_flags();
JVM_END


JVM_ENTRY(jint, JVM_GetFieldIxModifiers(JNIEnv *env, jclass cls, int field_index))
Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
return InstanceKlass::cast(k)->field_access_flags(field_index) & JVM_RECOGNIZED_FIELD_MODIFIERS;
u2 field_access_flags = InstanceKlass::cast(k)->field_access_flags(field_index);
// This & should be unnecessary.
assert((field_access_flags & JVM_RECOGNIZED_FIELD_MODIFIERS) == field_access_flags, "already masked");
return field_access_flags;
JVM_END


Expand Down Expand Up @@ -2657,7 +2660,7 @@ JVM_ENTRY(jint, JVM_GetCPFieldModifiers(JNIEnv *env, jclass cls, int cp_index, j
InstanceKlass* ik = InstanceKlass::cast(k_called);
for (JavaFieldStream fs(ik); !fs.done(); fs.next()) {
if (fs.name() == name && fs.signature() == signature) {
return fs.access_flags().as_int() & JVM_RECOGNIZED_FIELD_MODIFIERS;
return fs.access_flags().as_field_flags();
}
}
return -1;
Expand Down Expand Up @@ -2686,7 +2689,7 @@ JVM_ENTRY(jint, JVM_GetCPMethodModifiers(JNIEnv *env, jclass cls, int cp_index,
for (int i = 0; i < methods_count; i++) {
Method* method = methods->at(i);
if (method->name() == name && method->signature() == signature) {
return method->access_flags().as_int() & JVM_RECOGNIZED_METHOD_MODIFIERS;
return method->access_flags().as_method_flags();
}
}
return -1;
Expand Down
6 changes: 3 additions & 3 deletions src/hotspot/share/prims/jvmtiClassFileReconstituter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ void JvmtiClassFileReconstituter::write_field_infos() {
// JVMSpec| attribute_info attributes[attributes_count];
// JVMSpec| }

write_u2(access_flags.as_int() & JVM_RECOGNIZED_FIELD_MODIFIERS);
write_u2(access_flags.as_field_flags());
write_u2(name_index);
write_u2(signature_index);
u2 attr_count = 0;
Expand Down Expand Up @@ -704,7 +704,7 @@ void JvmtiClassFileReconstituter::write_method_info(const methodHandle& method)
return;
}

write_u2(access_flags.as_int() & JVM_RECOGNIZED_METHOD_MODIFIERS);
write_u2(access_flags.as_method_flags());
write_u2(const_method->name_index());
write_u2(const_method->signature_index());

Expand Down Expand Up @@ -919,7 +919,7 @@ void JvmtiClassFileReconstituter::write_class_file_format() {
copy_cpool_bytes(writeable_address(cpool_size()));

// JVMSpec| u2 access_flags;
write_u2(ik()->access_flags().as_int() & JVM_RECOGNIZED_CLASS_MODIFIERS);
write_u2(ik()->access_flags().as_class_flags());

// JVMSpec| u2 this_class;
// JVMSpec| u2 super_class;
Expand Down
4 changes: 2 additions & 2 deletions src/hotspot/share/prims/jvmtiEnv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3149,7 +3149,7 @@ jvmtiError
JvmtiEnv::GetFieldModifiers(fieldDescriptor* fdesc_ptr, jint* modifiers_ptr) {

AccessFlags resultFlags = fdesc_ptr->access_flags();
jint result = resultFlags.as_int();
jint result = resultFlags.as_unsigned_short();
*modifiers_ptr = result;

return JVMTI_ERROR_NONE;
Expand Down Expand Up @@ -3228,7 +3228,7 @@ JvmtiEnv::GetMethodDeclaringClass(Method* method, jclass* declaring_class_ptr) {
jvmtiError
JvmtiEnv::GetMethodModifiers(Method* method, jint* modifiers_ptr) {
NULL_CHECK(method, JVMTI_ERROR_INVALID_METHODID);
(*modifiers_ptr) = method->access_flags().as_int() & JVM_RECOGNIZED_METHOD_MODIFIERS;
(*modifiers_ptr) = method->access_flags().as_method_flags();
return JVMTI_ERROR_NONE;
} /* end GetMethodModifiers */

Expand Down
Loading