mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-19 18:44:38 +02:00
8227046: compiler implementation for sealed classes
8225056: VM support for sealed classes 8227044: javax.lang.model for sealed classes 8227045: Preview APIs support for sealed classes 8227047: Javadoc for sealed types 8245854: JVM TI Specification for sealed classes Co-authored-by: Harold Seigel <harold.seigel@oracle.com> Co-authored-by: Jan Lahoda <jan.lahoda@oracle.com> Reviewed-by: mcimadamore, forax, darcy, dholmes, jlahoda, lfoltan, mchung, sspitsyn, vromero
This commit is contained in:
parent
567692e4ae
commit
d42bfef8a4
139 changed files with 6877 additions and 192 deletions
|
@ -2101,6 +2101,33 @@ JVM_ENTRY(jobjectArray, JVM_GetNestMembers(JNIEnv* env, jclass current))
|
|||
}
|
||||
JVM_END
|
||||
|
||||
JVM_ENTRY(jobjectArray, JVM_GetPermittedSubclasses(JNIEnv* env, jclass current))
|
||||
{
|
||||
JVMWrapper("JVM_GetPermittedSubclasses");
|
||||
assert(!java_lang_Class::is_primitive(JNIHandles::resolve_non_null(current)), "should not be");
|
||||
Klass* c = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(current));
|
||||
assert(c->is_instance_klass(), "must be");
|
||||
InstanceKlass* ik = InstanceKlass::cast(c);
|
||||
{
|
||||
JvmtiVMObjectAllocEventCollector oam;
|
||||
Array<u2>* subclasses = ik->permitted_subclasses();
|
||||
int length = subclasses == NULL ? 0 : subclasses->length();
|
||||
objArrayOop r = oopFactory::new_objArray(SystemDictionary::String_klass(),
|
||||
length, CHECK_NULL);
|
||||
objArrayHandle result(THREAD, r);
|
||||
for (int i = 0; i < length; i++) {
|
||||
int cp_index = subclasses->at(i);
|
||||
// This returns <package-name>/<class-name>.
|
||||
Symbol* klass_name = ik->constants()->klass_name_at(cp_index);
|
||||
assert(klass_name != NULL, "Unexpected null klass_name");
|
||||
Handle perm_subtype_h = java_lang_String::create_from_symbol(klass_name, CHECK_NULL);
|
||||
result->obj_at_put(i, perm_subtype_h());
|
||||
}
|
||||
return (jobjectArray)JNIHandles::make_local(THREAD, result());
|
||||
}
|
||||
}
|
||||
JVM_END
|
||||
|
||||
// Constant pool access //////////////////////////////////////////////////////////
|
||||
|
||||
JVM_ENTRY(jobject, JVM_GetClassConstantPool(JNIEnv *env, jclass cls))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue