< prev index next >

src/hotspot/share/classfile/javaClasses.cpp

Print this page

1319 }
1320 void java_lang_Class::set_init_lock(oop java_class, oop init_lock) {
1321   assert(_init_lock_offset != 0, "must be set");
1322   java_class->obj_field_put(_init_lock_offset, init_lock);
1323 }
1324 
1325 objArrayOop java_lang_Class::signers(oop java_class) {
1326   assert(_signers_offset != 0, "must be set");
1327   return (objArrayOop)java_class->obj_field(_signers_offset);
1328 }
1329 
1330 oop java_lang_Class::class_data(oop java_class) {
1331   assert(_classData_offset != 0, "must be set");
1332   return java_class->obj_field(_classData_offset);
1333 }
1334 void java_lang_Class::set_class_data(oop java_class, oop class_data) {
1335   assert(_classData_offset != 0, "must be set");
1336   java_class->obj_field_put(_classData_offset, class_data);
1337 }
1338 









1339 void java_lang_Class::set_reflection_data(oop java_class, oop reflection_data) {
1340   assert(_reflectionData_offset != 0, "must be set");
1341   java_class->obj_field_put(_reflectionData_offset, reflection_data);
1342 }
1343 
1344 void java_lang_Class::set_class_loader(oop java_class, oop loader) {
1345   assert(_class_loader_offset != 0, "offsets should have been initialized");
1346   java_class->obj_field_put(_class_loader_offset, loader);
1347 }
1348 
1349 oop java_lang_Class::class_loader(oop java_class) {
1350   assert(_class_loader_offset != 0, "must be set");
1351   return java_class->obj_field(_class_loader_offset);
1352 }
1353 
1354 oop java_lang_Class::module(oop java_class) {
1355   assert(_module_offset != 0, "must be set");
1356   return java_class->obj_field(_module_offset);
1357 }
1358 

1523       (*reference_klass) = as_Klass(java_class);
1524     return T_OBJECT;
1525   }
1526 }
1527 
1528 
1529 oop java_lang_Class::primitive_mirror(BasicType t) {
1530   oop mirror = Universe::java_mirror(t);
1531   assert(mirror != nullptr && mirror->is_a(vmClasses::Class_klass()), "must be a Class");
1532   assert(is_primitive(mirror), "must be primitive");
1533   return mirror;
1534 }
1535 
1536 #define CLASS_FIELDS_DO(macro) \
1537   macro(_classRedefinedCount_offset, k, "classRedefinedCount", int_signature,          false); \
1538   macro(_class_loader_offset,        k, "classLoader",         classloader_signature,  false); \
1539   macro(_component_mirror_offset,    k, "componentType",       class_signature,        false); \
1540   macro(_module_offset,              k, "module",              module_signature,       false); \
1541   macro(_name_offset,                k, "name",                string_signature,       false); \
1542   macro(_classData_offset,           k, "classData",           object_signature,       false); \
1543   macro(_reflectionData_offset,      k, "reflectionData",      java_lang_ref_SoftReference_signature, false); \
1544   macro(_signers_offset,             k, "signers",             object_array_signature, false); \
1545   macro(_modifiers_offset,           k, vmSymbols::modifiers_name(), char_signature,    false); \
1546   macro(_raw_access_flags_offset,    k, "classFileAccessFlags",      char_signature,    false); \
1547   macro(_protection_domain_offset,   k, "protectionDomain",    java_security_ProtectionDomain_signature,  false); \
1548   macro(_is_primitive_offset,        k, "primitive",           bool_signature,         false);
1549 
1550 void java_lang_Class::compute_offsets() {
1551   if (_offsets_computed) {
1552     return;
1553   }
1554 
1555   _offsets_computed = true;
1556 
1557   InstanceKlass* k = vmClasses::Class_klass();
1558   CLASS_FIELDS_DO(FIELD_COMPUTE_OFFSET);
1559   CLASS_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
1560 }
1561 
1562 #if INCLUDE_CDS
1563 void java_lang_Class::serialize_offsets(SerializeClosure* f) {

2347   return msg_utf8;
2348 }
2349 
2350 oop java_lang_Throwable::cause(oop throwable) {
2351   return throwable->obj_field(_cause_offset);
2352 }
2353 
2354 void java_lang_Throwable::set_message(oop throwable, oop value) {
2355   throwable->obj_field_put(_detailMessage_offset, value);
2356 }
2357 
2358 
2359 void java_lang_Throwable::set_stacktrace(oop throwable, oop st_element_array) {
2360   throwable->obj_field_put(_stackTrace_offset, st_element_array);
2361 }
2362 
2363 void java_lang_Throwable::clear_stacktrace(oop throwable) {
2364   set_stacktrace(throwable, nullptr);
2365 }
2366 




2367 
2368 void java_lang_Throwable::print(oop throwable, outputStream* st) {
2369   ResourceMark rm;
2370   Klass* k = throwable->klass();
2371   assert(k != nullptr, "just checking");
2372   st->print("%s", k->external_name());
2373   oop msg = message(throwable);
2374   if (msg != nullptr) {
2375     st->print(": %s", java_lang_String::as_utf8_string(msg));
2376   }
2377 }
2378 
2379 // After this many redefines, the stack trace is unreliable.
2380 const int MAX_VERSION = USHRT_MAX;
2381 
2382 static inline bool version_matches(Method* method, int version) {
2383   assert(version < MAX_VERSION, "version is too big");
2384   return method != nullptr && (method->constants()->version() == version);
2385 }
2386 

1319 }
1320 void java_lang_Class::set_init_lock(oop java_class, oop init_lock) {
1321   assert(_init_lock_offset != 0, "must be set");
1322   java_class->obj_field_put(_init_lock_offset, init_lock);
1323 }
1324 
1325 objArrayOop java_lang_Class::signers(oop java_class) {
1326   assert(_signers_offset != 0, "must be set");
1327   return (objArrayOop)java_class->obj_field(_signers_offset);
1328 }
1329 
1330 oop java_lang_Class::class_data(oop java_class) {
1331   assert(_classData_offset != 0, "must be set");
1332   return java_class->obj_field(_classData_offset);
1333 }
1334 void java_lang_Class::set_class_data(oop java_class, oop class_data) {
1335   assert(_classData_offset != 0, "must be set");
1336   java_class->obj_field_put(_classData_offset, class_data);
1337 }
1338 
1339 oop java_lang_Class::reflection_data(oop java_class) {
1340   assert(_reflectionData_offset != 0, "must be set");
1341   return java_class->obj_field(_reflectionData_offset);
1342 }
1343 
1344 bool java_lang_Class::has_reflection_data(oop java_class) {
1345   return (java_lang_Class::reflection_data(java_class) != nullptr);
1346 }
1347 
1348 void java_lang_Class::set_reflection_data(oop java_class, oop reflection_data) {
1349   assert(_reflectionData_offset != 0, "must be set");
1350   java_class->obj_field_put(_reflectionData_offset, reflection_data);
1351 }
1352 
1353 void java_lang_Class::set_class_loader(oop java_class, oop loader) {
1354   assert(_class_loader_offset != 0, "offsets should have been initialized");
1355   java_class->obj_field_put(_class_loader_offset, loader);
1356 }
1357 
1358 oop java_lang_Class::class_loader(oop java_class) {
1359   assert(_class_loader_offset != 0, "must be set");
1360   return java_class->obj_field(_class_loader_offset);
1361 }
1362 
1363 oop java_lang_Class::module(oop java_class) {
1364   assert(_module_offset != 0, "must be set");
1365   return java_class->obj_field(_module_offset);
1366 }
1367 

1532       (*reference_klass) = as_Klass(java_class);
1533     return T_OBJECT;
1534   }
1535 }
1536 
1537 
1538 oop java_lang_Class::primitive_mirror(BasicType t) {
1539   oop mirror = Universe::java_mirror(t);
1540   assert(mirror != nullptr && mirror->is_a(vmClasses::Class_klass()), "must be a Class");
1541   assert(is_primitive(mirror), "must be primitive");
1542   return mirror;
1543 }
1544 
1545 #define CLASS_FIELDS_DO(macro) \
1546   macro(_classRedefinedCount_offset, k, "classRedefinedCount", int_signature,          false); \
1547   macro(_class_loader_offset,        k, "classLoader",         classloader_signature,  false); \
1548   macro(_component_mirror_offset,    k, "componentType",       class_signature,        false); \
1549   macro(_module_offset,              k, "module",              module_signature,       false); \
1550   macro(_name_offset,                k, "name",                string_signature,       false); \
1551   macro(_classData_offset,           k, "classData",           object_signature,       false); \
1552   macro(_reflectionData_offset,      k, "reflectionData",      class_ReflectionData_signature, false); \
1553   macro(_signers_offset,             k, "signers",             object_array_signature, false); \
1554   macro(_modifiers_offset,           k, vmSymbols::modifiers_name(), char_signature,    false); \
1555   macro(_raw_access_flags_offset,    k, "classFileAccessFlags",      char_signature,    false); \
1556   macro(_protection_domain_offset,   k, "protectionDomain",    java_security_ProtectionDomain_signature,  false); \
1557   macro(_is_primitive_offset,        k, "primitive",           bool_signature,         false);
1558 
1559 void java_lang_Class::compute_offsets() {
1560   if (_offsets_computed) {
1561     return;
1562   }
1563 
1564   _offsets_computed = true;
1565 
1566   InstanceKlass* k = vmClasses::Class_klass();
1567   CLASS_FIELDS_DO(FIELD_COMPUTE_OFFSET);
1568   CLASS_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
1569 }
1570 
1571 #if INCLUDE_CDS
1572 void java_lang_Class::serialize_offsets(SerializeClosure* f) {

2356   return msg_utf8;
2357 }
2358 
2359 oop java_lang_Throwable::cause(oop throwable) {
2360   return throwable->obj_field(_cause_offset);
2361 }
2362 
2363 void java_lang_Throwable::set_message(oop throwable, oop value) {
2364   throwable->obj_field_put(_detailMessage_offset, value);
2365 }
2366 
2367 
2368 void java_lang_Throwable::set_stacktrace(oop throwable, oop st_element_array) {
2369   throwable->obj_field_put(_stackTrace_offset, st_element_array);
2370 }
2371 
2372 void java_lang_Throwable::clear_stacktrace(oop throwable) {
2373   set_stacktrace(throwable, nullptr);
2374 }
2375 
2376 oop java_lang_Throwable::create_exception_instance(Symbol* class_name, TRAPS) {
2377   Klass* k = SystemDictionary::resolve_or_fail(class_name, true, CHECK_NULL);
2378   return InstanceKlass::cast(k)->allocate_instance(CHECK_NULL);
2379 }
2380 
2381 void java_lang_Throwable::print(oop throwable, outputStream* st) {
2382   ResourceMark rm;
2383   Klass* k = throwable->klass();
2384   assert(k != nullptr, "just checking");
2385   st->print("%s", k->external_name());
2386   oop msg = message(throwable);
2387   if (msg != nullptr) {
2388     st->print(": %s", java_lang_String::as_utf8_string(msg));
2389   }
2390 }
2391 
2392 // After this many redefines, the stack trace is unreliable.
2393 const int MAX_VERSION = USHRT_MAX;
2394 
2395 static inline bool version_matches(Method* method, int version) {
2396   assert(version < MAX_VERSION, "version is too big");
2397   return method != nullptr && (method->constants()->version() == version);
2398 }
2399 
< prev index next >