1474 1475 class java_nio_Buffer: AllStatic { 1476 private: 1477 static int _limit_offset; 1478 1479 public: 1480 static int limit_offset(); 1481 static void compute_offsets(); 1482 static void serialize(SerializeClosure* f) NOT_CDS_RETURN; 1483 }; 1484 1485 class java_util_concurrent_locks_AbstractOwnableSynchronizer : AllStatic { 1486 private: 1487 static int _owner_offset; 1488 public: 1489 static void compute_offsets(); 1490 static oop get_owner_threadObj(oop obj); 1491 static void serialize(SerializeClosure* f) NOT_CDS_RETURN; 1492 }; 1493 1494 // Use to declare fields that need to be injected into Java classes 1495 // for the JVM to use. The name_index and signature_index are 1496 // declared in vmSymbols. The may_be_java flag is used to declare 1497 // fields that might already exist in Java but should be injected if 1498 // they don't. Otherwise the field is unconditionally injected and 1499 // the JVM uses the injected one. This is to ensure that name 1500 // collisions don't occur. In general may_be_java should be false 1501 // unless there's a good reason. 1502 1503 class InjectedField { 1504 public: 1505 const SystemDictionary::WKID klass_id; 1506 const vmSymbols::SID name_index; 1507 const vmSymbols::SID signature_index; 1508 const bool may_be_java; 1509 1510 1511 Klass* klass() const { return SystemDictionary::well_known_klass(klass_id); } 1512 Symbol* name() const { return lookup_symbol(name_index); } 1513 Symbol* signature() const { return lookup_symbol(signature_index); } | 1474 1475 class java_nio_Buffer: AllStatic { 1476 private: 1477 static int _limit_offset; 1478 1479 public: 1480 static int limit_offset(); 1481 static void compute_offsets(); 1482 static void serialize(SerializeClosure* f) NOT_CDS_RETURN; 1483 }; 1484 1485 class java_util_concurrent_locks_AbstractOwnableSynchronizer : AllStatic { 1486 private: 1487 static int _owner_offset; 1488 public: 1489 static void compute_offsets(); 1490 static oop get_owner_threadObj(oop obj); 1491 static void serialize(SerializeClosure* f) NOT_CDS_RETURN; 1492 }; 1493 1494 class jdk_internal_module_ArchivedModuleGraph: AllStatic { 1495 private: 1496 static int _archivedSystemModules_offset; 1497 static int _archivedModuleFinder_offset; 1498 static int _archivedMainModule_offset; 1499 public: 1500 static int archivedSystemModules_offset() { return _archivedSystemModules_offset; } 1501 static int archivedModuleFinder_offset() { return _archivedModuleFinder_offset; } 1502 static int archivedMainModule_offset() { return _archivedMainModule_offset; } 1503 static void compute_offsets(); 1504 static void serialize(SerializeClosure* f) NOT_CDS_RETURN; 1505 }; 1506 1507 // Use to declare fields that need to be injected into Java classes 1508 // for the JVM to use. The name_index and signature_index are 1509 // declared in vmSymbols. The may_be_java flag is used to declare 1510 // fields that might already exist in Java but should be injected if 1511 // they don't. Otherwise the field is unconditionally injected and 1512 // the JVM uses the injected one. This is to ensure that name 1513 // collisions don't occur. In general may_be_java should be false 1514 // unless there's a good reason. 1515 1516 class InjectedField { 1517 public: 1518 const SystemDictionary::WKID klass_id; 1519 const vmSymbols::SID name_index; 1520 const vmSymbols::SID signature_index; 1521 const bool may_be_java; 1522 1523 1524 Klass* klass() const { return SystemDictionary::well_known_klass(klass_id); } 1525 Symbol* name() const { return lookup_symbol(name_index); } 1526 Symbol* signature() const { return lookup_symbol(signature_index); } |