hotspot/src/share/vm/classfile/javaClasses.cpp
changeset 46968 9119841280f4
parent 46773 fb17cc9a6847
child 46969 d4db878f22f3
equal deleted inserted replaced
46953:39063b484ec2 46968:9119841280f4
  1428 int java_lang_ThreadGroup::_daemon_offset = 0;
  1428 int java_lang_ThreadGroup::_daemon_offset = 0;
  1429 int java_lang_ThreadGroup::_nthreads_offset = 0;
  1429 int java_lang_ThreadGroup::_nthreads_offset = 0;
  1430 int java_lang_ThreadGroup::_ngroups_offset = 0;
  1430 int java_lang_ThreadGroup::_ngroups_offset = 0;
  1431 
  1431 
  1432 oop  java_lang_ThreadGroup::parent(oop java_thread_group) {
  1432 oop  java_lang_ThreadGroup::parent(oop java_thread_group) {
  1433   assert(java_thread_group->is_oop(), "thread group must be oop");
  1433   assert(oopDesc::is_oop(java_thread_group), "thread group must be oop");
  1434   return java_thread_group->obj_field(_parent_offset);
  1434   return java_thread_group->obj_field(_parent_offset);
  1435 }
  1435 }
  1436 
  1436 
  1437 // ("name as oop" accessor is not necessary)
  1437 // ("name as oop" accessor is not necessary)
  1438 
  1438 
  1444   }
  1444   }
  1445   return NULL;
  1445   return NULL;
  1446 }
  1446 }
  1447 
  1447 
  1448 int java_lang_ThreadGroup::nthreads(oop java_thread_group) {
  1448 int java_lang_ThreadGroup::nthreads(oop java_thread_group) {
  1449   assert(java_thread_group->is_oop(), "thread group must be oop");
  1449   assert(oopDesc::is_oop(java_thread_group), "thread group must be oop");
  1450   return java_thread_group->int_field(_nthreads_offset);
  1450   return java_thread_group->int_field(_nthreads_offset);
  1451 }
  1451 }
  1452 
  1452 
  1453 objArrayOop java_lang_ThreadGroup::threads(oop java_thread_group) {
  1453 objArrayOop java_lang_ThreadGroup::threads(oop java_thread_group) {
  1454   oop threads = java_thread_group->obj_field(_threads_offset);
  1454   oop threads = java_thread_group->obj_field(_threads_offset);
  1456   assert(threads->is_objArray(), "just checking"); // Todo: Add better type checking code
  1456   assert(threads->is_objArray(), "just checking"); // Todo: Add better type checking code
  1457   return objArrayOop(threads);
  1457   return objArrayOop(threads);
  1458 }
  1458 }
  1459 
  1459 
  1460 int java_lang_ThreadGroup::ngroups(oop java_thread_group) {
  1460 int java_lang_ThreadGroup::ngroups(oop java_thread_group) {
  1461   assert(java_thread_group->is_oop(), "thread group must be oop");
  1461   assert(oopDesc::is_oop(java_thread_group), "thread group must be oop");
  1462   return java_thread_group->int_field(_ngroups_offset);
  1462   return java_thread_group->int_field(_ngroups_offset);
  1463 }
  1463 }
  1464 
  1464 
  1465 objArrayOop java_lang_ThreadGroup::groups(oop java_thread_group) {
  1465 objArrayOop java_lang_ThreadGroup::groups(oop java_thread_group) {
  1466   oop groups = java_thread_group->obj_field(_groups_offset);
  1466   oop groups = java_thread_group->obj_field(_groups_offset);
  1467   assert(groups == NULL || groups->is_objArray(), "just checking"); // Todo: Add better type checking code
  1467   assert(groups == NULL || groups->is_objArray(), "just checking"); // Todo: Add better type checking code
  1468   return objArrayOop(groups);
  1468   return objArrayOop(groups);
  1469 }
  1469 }
  1470 
  1470 
  1471 ThreadPriority java_lang_ThreadGroup::maxPriority(oop java_thread_group) {
  1471 ThreadPriority java_lang_ThreadGroup::maxPriority(oop java_thread_group) {
  1472   assert(java_thread_group->is_oop(), "thread group must be oop");
  1472   assert(oopDesc::is_oop(java_thread_group), "thread group must be oop");
  1473   return (ThreadPriority) java_thread_group->int_field(_maxPriority_offset);
  1473   return (ThreadPriority) java_thread_group->int_field(_maxPriority_offset);
  1474 }
  1474 }
  1475 
  1475 
  1476 bool java_lang_ThreadGroup::is_destroyed(oop java_thread_group) {
  1476 bool java_lang_ThreadGroup::is_destroyed(oop java_thread_group) {
  1477   assert(java_thread_group->is_oop(), "thread group must be oop");
  1477   assert(oopDesc::is_oop(java_thread_group), "thread group must be oop");
  1478   return java_thread_group->bool_field(_destroyed_offset) != 0;
  1478   return java_thread_group->bool_field(_destroyed_offset) != 0;
  1479 }
  1479 }
  1480 
  1480 
  1481 bool java_lang_ThreadGroup::is_daemon(oop java_thread_group) {
  1481 bool java_lang_ThreadGroup::is_daemon(oop java_thread_group) {
  1482   assert(java_thread_group->is_oop(), "thread group must be oop");
  1482   assert(oopDesc::is_oop(java_thread_group), "thread group must be oop");
  1483   return java_thread_group->bool_field(_daemon_offset) != 0;
  1483   return java_thread_group->bool_field(_daemon_offset) != 0;
  1484 }
  1484 }
  1485 
  1485 
  1486 void java_lang_ThreadGroup::compute_offsets() {
  1486 void java_lang_ThreadGroup::compute_offsets() {
  1487   assert(_parent_offset == 0, "offsets should be initialized only once");
  1487   assert(_parent_offset == 0, "offsets should be initialized only once");
  2866 }
  2866 }
  2867 
  2867 
  2868 ModuleEntry* java_lang_Module::module_entry(oop module, TRAPS) {
  2868 ModuleEntry* java_lang_Module::module_entry(oop module, TRAPS) {
  2869   assert(_module_entry_offset != -1, "Uninitialized module_entry_offset");
  2869   assert(_module_entry_offset != -1, "Uninitialized module_entry_offset");
  2870   assert(module != NULL, "module can't be null");
  2870   assert(module != NULL, "module can't be null");
  2871   assert(module->is_oop(), "module must be oop");
  2871   assert(oopDesc::is_oop(module), "module must be oop");
  2872 
  2872 
  2873   ModuleEntry* module_entry = (ModuleEntry*)module->address_field(_module_entry_offset);
  2873   ModuleEntry* module_entry = (ModuleEntry*)module->address_field(_module_entry_offset);
  2874   if (module_entry == NULL) {
  2874   if (module_entry == NULL) {
  2875     // If the inject field containing the ModuleEntry* is null then return the
  2875     // If the inject field containing the ModuleEntry* is null then return the
  2876     // class loader's unnamed module.
  2876     // class loader's unnamed module.
  2883 }
  2883 }
  2884 
  2884 
  2885 void java_lang_Module::set_module_entry(oop module, ModuleEntry* module_entry) {
  2885 void java_lang_Module::set_module_entry(oop module, ModuleEntry* module_entry) {
  2886   assert(_module_entry_offset != -1, "Uninitialized module_entry_offset");
  2886   assert(_module_entry_offset != -1, "Uninitialized module_entry_offset");
  2887   assert(module != NULL, "module can't be null");
  2887   assert(module != NULL, "module can't be null");
  2888   assert(module->is_oop(), "module must be oop");
  2888   assert(oopDesc::is_oop(module), "module must be oop");
  2889   module->address_field_put(_module_entry_offset, (address)module_entry);
  2889   module->address_field_put(_module_entry_offset, (address)module_entry);
  2890 }
  2890 }
  2891 
  2891 
  2892 Handle reflect_ConstantPool::create(TRAPS) {
  2892 Handle reflect_ConstantPool::create(TRAPS) {
  2893   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
  2893   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
  3086 
  3086 
  3087 int java_lang_invoke_DirectMethodHandle::_member_offset;
  3087 int java_lang_invoke_DirectMethodHandle::_member_offset;
  3088 
  3088 
  3089 oop java_lang_invoke_DirectMethodHandle::member(oop dmh) {
  3089 oop java_lang_invoke_DirectMethodHandle::member(oop dmh) {
  3090   oop member_name = NULL;
  3090   oop member_name = NULL;
  3091   bool is_dmh = dmh->is_oop() && java_lang_invoke_DirectMethodHandle::is_instance(dmh);
  3091   assert(oopDesc::is_oop(dmh) && java_lang_invoke_DirectMethodHandle::is_instance(dmh),
  3092   assert(is_dmh, "a DirectMethodHandle oop is expected");
  3092          "a DirectMethodHandle oop is expected");
  3093   if (is_dmh) {
  3093   return dmh->obj_field(member_offset_in_bytes());
  3094     member_name = dmh->obj_field(member_offset_in_bytes());
       
  3095   }
       
  3096   return member_name;
       
  3097 }
  3094 }
  3098 
  3095 
  3099 void java_lang_invoke_DirectMethodHandle::compute_offsets() {
  3096 void java_lang_invoke_DirectMethodHandle::compute_offsets() {
  3100   Klass* k = SystemDictionary::DirectMethodHandle_klass();
  3097   Klass* k = SystemDictionary::DirectMethodHandle_klass();
  3101   if (k != NULL) {
  3098   if (k != NULL) {
  3474 int  java_lang_ClassLoader::parallelCapable_offset = -1;
  3471 int  java_lang_ClassLoader::parallelCapable_offset = -1;
  3475 int  java_lang_ClassLoader::name_offset = -1;
  3472 int  java_lang_ClassLoader::name_offset = -1;
  3476 int  java_lang_ClassLoader::unnamedModule_offset = -1;
  3473 int  java_lang_ClassLoader::unnamedModule_offset = -1;
  3477 
  3474 
  3478 ClassLoaderData** java_lang_ClassLoader::loader_data_addr(oop loader) {
  3475 ClassLoaderData** java_lang_ClassLoader::loader_data_addr(oop loader) {
  3479     assert(loader != NULL && loader->is_oop(), "loader must be oop");
  3476     assert(loader != NULL && oopDesc::is_oop(loader), "loader must be oop");
  3480     return (ClassLoaderData**) loader->address_field_addr(_loader_data_offset);
  3477     return (ClassLoaderData**) loader->address_field_addr(_loader_data_offset);
  3481 }
  3478 }
  3482 
  3479 
  3483 ClassLoaderData* java_lang_ClassLoader::loader_data(oop loader) {
  3480 ClassLoaderData* java_lang_ClassLoader::loader_data(oop loader) {
  3484   return *java_lang_ClassLoader::loader_data_addr(loader);
  3481   return *java_lang_ClassLoader::loader_data_addr(loader);