< prev index next >

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

Print this page




1342   static int methodName_offset;
1343   static int fileName_offset;
1344   static int lineNumber_offset;
1345 
1346  public:
1347   // Setters
1348   static void set_declaringClass(oop element, oop value);
1349   static void set_methodName(oop element, oop value);
1350   static void set_fileName(oop element, oop value);
1351   static void set_lineNumber(oop element, int value);
1352 
1353   // Create an instance of StackTraceElement
1354   static oop create(Handle mirror, int method, int version, int bci, int cpref, TRAPS);
1355   static oop create(const methodHandle& method, int bci, TRAPS);
1356 
1357   // Debugging
1358   friend class JavaClasses;
1359 };
1360 
1361 















































































1362 // Interface to java.lang.AssertionStatusDirectives objects
1363 
1364 class java_lang_AssertionStatusDirectives: AllStatic {
1365  private:
1366   enum {
1367     hc_classes_offset,
1368     hc_classEnabled_offset,
1369     hc_packages_offset,
1370     hc_packageEnabled_offset,
1371     hc_deflt_offset
1372   };
1373 
1374   static int classes_offset;
1375   static int classEnabled_offset;
1376   static int packages_offset;
1377   static int packageEnabled_offset;
1378   static int deflt_offset;
1379 
1380  public:
1381   // Setters


1425 
1426   Klass* klass() const    { return SystemDictionary::well_known_klass(klass_id); }
1427   Symbol* name() const      { return lookup_symbol(name_index); }
1428   Symbol* signature() const { return lookup_symbol(signature_index); }
1429 
1430   int compute_offset();
1431 
1432   // Find the Symbol for this index
1433   static Symbol* lookup_symbol(int symbol_index) {
1434     return vmSymbols::symbol_at((vmSymbols::SID)symbol_index);
1435   }
1436 };
1437 
1438 #define DECLARE_INJECTED_FIELD_ENUM(klass, name, signature, may_be_java) \
1439   klass##_##name##_enum,
1440 
1441 #define ALL_INJECTED_FIELDS(macro)          \
1442   CLASS_INJECTED_FIELDS(macro)              \
1443   CLASSLOADER_INJECTED_FIELDS(macro)        \
1444   MEMBERNAME_INJECTED_FIELDS(macro)         \
1445   CALLSITECONTEXT_INJECTED_FIELDS(macro)


1446 
1447 // Interface to hard-coded offset checking
1448 
1449 class JavaClasses : AllStatic {
1450  private:
1451 
1452   static InjectedField _injected_fields[];
1453 
1454   static bool check_offset(const char *klass_name, int offset, const char *field_name, const char* field_sig) PRODUCT_RETURN0;
1455   static bool check_static_offset(const char *klass_name, int hardcoded_offset, const char *field_name, const char* field_sig) PRODUCT_RETURN0;
1456   static bool check_constant(const char *klass_name, int constant, const char *field_name, const char* field_sig) PRODUCT_RETURN0;
1457 
1458  public:
1459   enum InjectedFieldID {
1460     ALL_INJECTED_FIELDS(DECLARE_INJECTED_FIELD_ENUM)
1461     MAX_enum
1462   };
1463 
1464   static int compute_injected_offset(InjectedFieldID id);
1465 


1342   static int methodName_offset;
1343   static int fileName_offset;
1344   static int lineNumber_offset;
1345 
1346  public:
1347   // Setters
1348   static void set_declaringClass(oop element, oop value);
1349   static void set_methodName(oop element, oop value);
1350   static void set_fileName(oop element, oop value);
1351   static void set_lineNumber(oop element, int value);
1352 
1353   // Create an instance of StackTraceElement
1354   static oop create(Handle mirror, int method, int version, int bci, int cpref, TRAPS);
1355   static oop create(const methodHandle& method, int bci, TRAPS);
1356 
1357   // Debugging
1358   friend class JavaClasses;
1359 };
1360 
1361 
1362 class Backtrace: AllStatic {
1363  public:
1364   // Helper backtrace functions to store bci|version together.
1365   static int merge_bci_and_version(int bci, int version);
1366   static int merge_mid_and_cpref(int mid, int cpref);
1367   static int bci_at(unsigned int merged);
1368   static int version_at(unsigned int merged);
1369   static int mid_at(unsigned int merged);
1370   static int cpref_at(unsigned int merged);
1371   static int get_line_number(const methodHandle& method, int bci);
1372   static Symbol* get_source_file_name(InstanceKlass* holder, int version);
1373 
1374   // Debugging
1375   friend class JavaClasses;
1376 };
1377 
1378 // Interface to java.lang.StackFrameInfo objects
1379 
1380 #define STACKFRAMEINFO_INJECTED_FIELDS(macro)                      \
1381   macro(java_lang_StackFrameInfo, mid,     short_signature, false) \
1382   macro(java_lang_StackFrameInfo, version, short_signature, false) \
1383   macro(java_lang_StackFrameInfo, cpref,   short_signature, false)
1384 
1385 class java_lang_StackFrameInfo: AllStatic {
1386 private:
1387   static int _declaringClass_offset;
1388   static int _memberName_offset;
1389   static int _bci_offset;
1390   static int _methodName_offset;
1391   static int _fileName_offset;
1392   static int _lineNumber_offset;
1393 
1394   static int _mid_offset;
1395   static int _version_offset;
1396   static int _cpref_offset;
1397 
1398   static Method* get_method(Handle stackFrame, InstanceKlass* holder, TRAPS);
1399   static Symbol* get_file_name(Handle stackFrame, InstanceKlass* holder);
1400 
1401 public:
1402   // Setters
1403   static void set_declaringClass(oop info, oop value);
1404   static void set_method_and_bci(Handle stackFrame, const methodHandle& method, int bci);
1405   static void set_bci(oop info, int value);
1406 
1407   // set method info in an instance of StackFrameInfo
1408   static void fill_methodInfo(Handle info, TRAPS);
1409   static void set_methodName(oop info, oop value);
1410   static void set_fileName(oop info, oop value);
1411   static void set_lineNumber(oop info, int value);
1412 
1413   // these injected fields are only used if -XX:-MemberNameInStackFrame set
1414   static void set_mid(oop info, short value);
1415   static void set_version(oop info, short value);
1416   static void set_cpref(oop info, short value);
1417 
1418   static void compute_offsets();
1419 
1420   // Debugging
1421   friend class JavaClasses;
1422 };
1423 
1424 class java_lang_LiveStackFrameInfo: AllStatic {
1425  private:
1426   static int _monitors_offset;
1427   static int _locals_offset;
1428   static int _operands_offset;
1429 
1430  public:
1431   static void set_monitors(oop info, oop value);
1432   static void set_locals(oop info, oop value);
1433   static void set_operands(oop info, oop value);
1434 
1435   static void compute_offsets();
1436 
1437   // Debugging
1438   friend class JavaClasses;
1439 };
1440 
1441 // Interface to java.lang.AssertionStatusDirectives objects
1442 
1443 class java_lang_AssertionStatusDirectives: AllStatic {
1444  private:
1445   enum {
1446     hc_classes_offset,
1447     hc_classEnabled_offset,
1448     hc_packages_offset,
1449     hc_packageEnabled_offset,
1450     hc_deflt_offset
1451   };
1452 
1453   static int classes_offset;
1454   static int classEnabled_offset;
1455   static int packages_offset;
1456   static int packageEnabled_offset;
1457   static int deflt_offset;
1458 
1459  public:
1460   // Setters


1504 
1505   Klass* klass() const    { return SystemDictionary::well_known_klass(klass_id); }
1506   Symbol* name() const      { return lookup_symbol(name_index); }
1507   Symbol* signature() const { return lookup_symbol(signature_index); }
1508 
1509   int compute_offset();
1510 
1511   // Find the Symbol for this index
1512   static Symbol* lookup_symbol(int symbol_index) {
1513     return vmSymbols::symbol_at((vmSymbols::SID)symbol_index);
1514   }
1515 };
1516 
1517 #define DECLARE_INJECTED_FIELD_ENUM(klass, name, signature, may_be_java) \
1518   klass##_##name##_enum,
1519 
1520 #define ALL_INJECTED_FIELDS(macro)          \
1521   CLASS_INJECTED_FIELDS(macro)              \
1522   CLASSLOADER_INJECTED_FIELDS(macro)        \
1523   MEMBERNAME_INJECTED_FIELDS(macro)         \
1524   CALLSITECONTEXT_INJECTED_FIELDS(macro)    \
1525   STACKFRAMEINFO_INJECTED_FIELDS(macro)
1526 
1527 
1528 // Interface to hard-coded offset checking
1529 
1530 class JavaClasses : AllStatic {
1531  private:
1532 
1533   static InjectedField _injected_fields[];
1534 
1535   static bool check_offset(const char *klass_name, int offset, const char *field_name, const char* field_sig) PRODUCT_RETURN0;
1536   static bool check_static_offset(const char *klass_name, int hardcoded_offset, const char *field_name, const char* field_sig) PRODUCT_RETURN0;
1537   static bool check_constant(const char *klass_name, int constant, const char *field_name, const char* field_sig) PRODUCT_RETURN0;
1538 
1539  public:
1540   enum InjectedFieldID {
1541     ALL_INJECTED_FIELDS(DECLARE_INJECTED_FIELD_ENUM)
1542     MAX_enum
1543   };
1544 
1545   static int compute_injected_offset(InjectedFieldID id);
1546 
< prev index next >