< prev index next >

src/hotspot/share/classfile/javaClasses.cpp

Print this page
*** 1335,10 ***
--- 1335,19 ---
  void java_lang_Class::set_class_data(oop java_class, oop class_data) {
    assert(_classData_offset != 0, "must be set");
    java_class->obj_field_put(_classData_offset, class_data);
  }
  
+ oop java_lang_Class::reflection_data(oop java_class) {
+   assert(_reflectionData_offset != 0, "must be set");
+   return java_class->obj_field(_reflectionData_offset);
+ }
+ 
+ bool java_lang_Class::has_reflection_data(oop java_class) {
+   return (java_lang_Class::reflection_data(java_class) != nullptr);
+ }
+ 
  void java_lang_Class::set_reflection_data(oop java_class, oop reflection_data) {
    assert(_reflectionData_offset != 0, "must be set");
    java_class->obj_field_put(_reflectionData_offset, reflection_data);
  }
  

*** 1539,11 ***
    macro(_class_loader_offset,        k, "classLoader",         classloader_signature,  false); \
    macro(_component_mirror_offset,    k, "componentType",       class_signature,        false); \
    macro(_module_offset,              k, "module",              module_signature,       false); \
    macro(_name_offset,                k, "name",                string_signature,       false); \
    macro(_classData_offset,           k, "classData",           object_signature,       false); \
!   macro(_reflectionData_offset,      k, "reflectionData",      java_lang_ref_SoftReference_signature, false); \
    macro(_signers_offset,             k, "signers",             object_array_signature, false); \
    macro(_modifiers_offset,           k, vmSymbols::modifiers_name(), char_signature,    false); \
    macro(_raw_access_flags_offset,    k, "classFileAccessFlags",      char_signature,    false); \
    macro(_protection_domain_offset,   k, "protectionDomain",    java_security_ProtectionDomain_signature,  false); \
    macro(_is_primitive_offset,        k, "primitive",           bool_signature,         false);
--- 1548,11 ---
    macro(_class_loader_offset,        k, "classLoader",         classloader_signature,  false); \
    macro(_component_mirror_offset,    k, "componentType",       class_signature,        false); \
    macro(_module_offset,              k, "module",              module_signature,       false); \
    macro(_name_offset,                k, "name",                string_signature,       false); \
    macro(_classData_offset,           k, "classData",           object_signature,       false); \
!   macro(_reflectionData_offset,      k, "reflectionData",      class_ReflectionData_signature, false); \
    macro(_signers_offset,             k, "signers",             object_array_signature, false); \
    macro(_modifiers_offset,           k, vmSymbols::modifiers_name(), char_signature,    false); \
    macro(_raw_access_flags_offset,    k, "classFileAccessFlags",      char_signature,    false); \
    macro(_protection_domain_offset,   k, "protectionDomain",    java_security_ProtectionDomain_signature,  false); \
    macro(_is_primitive_offset,        k, "primitive",           bool_signature,         false);

*** 2357,10 ***
--- 2366,14 ---
  
  void java_lang_Throwable::clear_stacktrace(oop throwable) {
    set_stacktrace(throwable, nullptr);
  }
  
+ oop java_lang_Throwable::create_exception_instance(Symbol* class_name, TRAPS) {
+   Klass* k = SystemDictionary::resolve_or_fail(class_name, true, CHECK_NULL);
+   return InstanceKlass::cast(k)->allocate_instance(CHECK_NULL);
+ }
  
  void java_lang_Throwable::print(oop throwable, outputStream* st) {
    ResourceMark rm;
    Klass* k = throwable->klass();
    assert(k != nullptr, "just checking");
< prev index next >