< prev index next >

hotspot/src/share/vm/classfile/javaClasses.hpp

Print this page




1208   // Debugging/initialization
1209   friend class JavaClasses;
1210 };
1211 
1212 
1213 // Interface to java.lang.ClassLoader objects
1214 
1215 #define CLASSLOADER_INJECTED_FIELDS(macro)                            \
1216   macro(java_lang_ClassLoader, loader_data,  intptr_signature, false)
1217 
1218 class java_lang_ClassLoader : AllStatic {
1219  private:
1220   // The fake offsets are added by the class loader when java.lang.Class is loaded
1221   enum {
1222    hc_parent_offset = 0
1223   };
1224   static int _loader_data_offset;
1225   static bool offsets_computed;
1226   static int parent_offset;
1227   static int parallelCapable_offset;

1228   static int unnamedModule_offset;
1229 
1230  public:
1231   static void compute_offsets();
1232 
1233   static ClassLoaderData** loader_data_addr(oop loader);
1234   static ClassLoaderData* loader_data(oop loader);
1235 
1236   static oop parent(oop loader);

1237   static bool isAncestor(oop loader, oop cl);
1238 
1239   // Support for parallelCapable field
1240   static bool parallelCapable(oop the_class_mirror);
1241 
1242   static bool is_trusted_loader(oop loader);
1243 
1244   // Fix for 4474172
1245   static oop  non_reflection_class_loader(oop loader);
1246 
1247   // Testers
1248   static bool is_subclass(Klass* klass) {
1249     return klass->is_subclass_of(SystemDictionary::ClassLoader_klass());
1250   }
1251   static bool is_instance(oop obj);
1252 
1253   static oop unnamedModule(oop loader);
1254 
1255   // Debugging
1256   friend class JavaClasses;


1274   static int static_err_offset;
1275   static int static_security_offset;
1276 
1277  public:
1278   static int  in_offset_in_bytes();
1279   static int out_offset_in_bytes();
1280   static int err_offset_in_bytes();
1281 
1282   static bool has_security_manager();
1283 
1284   // Debugging
1285   friend class JavaClasses;
1286 };
1287 
1288 
1289 // Interface to java.lang.StackTraceElement objects
1290 
1291 class java_lang_StackTraceElement: AllStatic {
1292  private:
1293   enum {
1294     hc_moduleName_offset = 0,
1295     hc_moduleVersion_offset = 1,
1296     hc_declaringClass_offset = 2,
1297     hc_methodName_offset = 3,
1298     hc_fileName_offset   = 4,
1299     hc_lineNumber_offset = 5


1300   };
1301 


1302   static int moduleName_offset;
1303   static int moduleVersion_offset;
1304   static int declaringClass_offset;
1305   static int methodName_offset;
1306   static int fileName_offset;
1307   static int lineNumber_offset;
1308 
1309   // Setters

1310   static void set_moduleName(oop element, oop value);
1311   static void set_moduleVersion(oop element, oop value);
1312   static void set_declaringClass(oop element, oop value);
1313   static void set_methodName(oop element, oop value);
1314   static void set_fileName(oop element, oop value);
1315   static void set_lineNumber(oop element, int value);

1316 
1317  public:
1318   // Create an instance of StackTraceElement
1319   static oop create(const methodHandle& method, int bci, TRAPS);
1320 
1321   static void fill_in(Handle element, InstanceKlass* holder, const methodHandle& method,
1322                       int version, int bci, int cpref, TRAPS);
1323 
1324   // Debugging
1325   friend class JavaClasses;
1326 };
1327 
1328 
1329 class Backtrace: AllStatic {
1330  public:
1331   // Helper backtrace functions to store bci|version together.
1332   static int merge_bci_and_version(int bci, int version);
1333   static int merge_mid_and_cpref(int mid, int cpref);
1334   static int bci_at(unsigned int merged);
1335   static int version_at(unsigned int merged);




1208   // Debugging/initialization
1209   friend class JavaClasses;
1210 };
1211 
1212 
1213 // Interface to java.lang.ClassLoader objects
1214 
1215 #define CLASSLOADER_INJECTED_FIELDS(macro)                            \
1216   macro(java_lang_ClassLoader, loader_data,  intptr_signature, false)
1217 
1218 class java_lang_ClassLoader : AllStatic {
1219  private:
1220   // The fake offsets are added by the class loader when java.lang.Class is loaded
1221   enum {
1222    hc_parent_offset = 0
1223   };
1224   static int _loader_data_offset;
1225   static bool offsets_computed;
1226   static int parent_offset;
1227   static int parallelCapable_offset;
1228   static int name_offset;
1229   static int unnamedModule_offset;
1230 
1231  public:
1232   static void compute_offsets();
1233 
1234   static ClassLoaderData** loader_data_addr(oop loader);
1235   static ClassLoaderData* loader_data(oop loader);
1236 
1237   static oop parent(oop loader);
1238   static oop name(oop loader);
1239   static bool isAncestor(oop loader, oop cl);
1240 
1241   // Support for parallelCapable field
1242   static bool parallelCapable(oop the_class_mirror);
1243 
1244   static bool is_trusted_loader(oop loader);
1245 
1246   // Fix for 4474172
1247   static oop  non_reflection_class_loader(oop loader);
1248 
1249   // Testers
1250   static bool is_subclass(Klass* klass) {
1251     return klass->is_subclass_of(SystemDictionary::ClassLoader_klass());
1252   }
1253   static bool is_instance(oop obj);
1254 
1255   static oop unnamedModule(oop loader);
1256 
1257   // Debugging
1258   friend class JavaClasses;


1276   static int static_err_offset;
1277   static int static_security_offset;
1278 
1279  public:
1280   static int  in_offset_in_bytes();
1281   static int out_offset_in_bytes();
1282   static int err_offset_in_bytes();
1283 
1284   static bool has_security_manager();
1285 
1286   // Debugging
1287   friend class JavaClasses;
1288 };
1289 
1290 
1291 // Interface to java.lang.StackTraceElement objects
1292 
1293 class java_lang_StackTraceElement: AllStatic {
1294  private:
1295   enum {
1296     hc_classOrLoaderModuleClassName_offset = 0,
1297     hc_classLoaderName_offset      = 1,
1298     hc_moduleName_offset           = 2,
1299     hc_moduleVersion_offset        = 3,
1300     hc_declaringClass_offset       = 4,
1301     hc_methodName_offset           = 5,
1302     hc_fileName_offset             = 6,
1303     hc_lineNumber_offset           = 7
1304   };
1305 
1306   static int classOrLoaderModuleClassName_offset;
1307   static int classLoaderName_offset;
1308   static int moduleName_offset;
1309   static int moduleVersion_offset;
1310   static int declaringClass_offset;
1311   static int methodName_offset;
1312   static int fileName_offset;
1313   static int lineNumber_offset;
1314 
1315   // Setters
1316   static void set_classLoaderName(oop element, oop value);
1317   static void set_moduleName(oop element, oop value);
1318   static void set_moduleVersion(oop element, oop value);
1319   static void set_declaringClass(oop element, oop value);
1320   static void set_methodName(oop element, oop value);
1321   static void set_fileName(oop element, oop value);
1322   static void set_lineNumber(oop element, int value);
1323   static void set_declaringClassObject(oop element, oop value);
1324 
1325  public:
1326   // Create an instance of StackTraceElement
1327   static oop create(const methodHandle& method, int bci, TRAPS);
1328 
1329   static void fill_in(Handle element, InstanceKlass* holder, const methodHandle& method,
1330                       int version, int bci, int cpref, TRAPS);
1331 
1332   // Debugging
1333   friend class JavaClasses;
1334 };
1335 
1336 
1337 class Backtrace: AllStatic {
1338  public:
1339   // Helper backtrace functions to store bci|version together.
1340   static int merge_bci_and_version(int bci, int version);
1341   static int merge_mid_and_cpref(int mid, int cpref);
1342   static int bci_at(unsigned int merged);
1343   static int version_at(unsigned int merged);


< prev index next >