1347 1348 class Backtrace: AllStatic { 1349 public: 1350 // Helper backtrace functions to store bci|version together. 1351 static int merge_bci_and_version(int bci, int version); 1352 static int merge_mid_and_cpref(int mid, int cpref); 1353 static int bci_at(unsigned int merged); 1354 static int version_at(unsigned int merged); 1355 static int mid_at(unsigned int merged); 1356 static int cpref_at(unsigned int merged); 1357 static int get_line_number(const methodHandle& method, int bci); 1358 static Symbol* get_source_file_name(InstanceKlass* holder, int version); 1359 1360 // Debugging 1361 friend class JavaClasses; 1362 }; 1363 1364 // Interface to java.lang.StackFrameInfo objects 1365 1366 #define STACKFRAMEINFO_INJECTED_FIELDS(macro) \ 1367 macro(java_lang_StackFrameInfo, mid, short_signature, false) \ 1368 macro(java_lang_StackFrameInfo, version, short_signature, false) \ 1369 macro(java_lang_StackFrameInfo, cpref, short_signature, false) 1370 1371 class java_lang_StackFrameInfo: AllStatic { 1372 private: 1373 static int _declaringClass_offset; 1374 static int _memberName_offset; 1375 static int _bci_offset; 1376 static int _methodName_offset; 1377 static int _fileName_offset; 1378 static int _lineNumber_offset; 1379 1380 static int _mid_offset; 1381 static int _version_offset; 1382 static int _cpref_offset; 1383 1384 static Method* get_method(Handle stackFrame, InstanceKlass* holder, TRAPS); 1385 static Symbol* get_file_name(Handle stackFrame, InstanceKlass* holder); 1386 1387 public: 1388 // Setters 1389 static void set_declaringClass(oop info, oop value); 1390 static void set_method_and_bci(Handle stackFrame, const methodHandle& method, int bci); 1391 static void set_bci(oop info, int value); 1392 1393 // set method info in an instance of StackFrameInfo 1394 static void fill_methodInfo(Handle info, TRAPS); 1395 static void set_methodName(oop info, oop value); 1396 static void set_fileName(oop info, oop value); 1397 static void set_lineNumber(oop info, int value); 1398 1399 // these injected fields are only used if -XX:-MemberNameInStackFrame set 1400 static void set_mid(oop info, short value); 1401 static void set_version(oop info, short value); 1402 static void set_cpref(oop info, short value); 1403 1404 static void compute_offsets(); 1405 1406 // Debugging 1407 friend class JavaClasses; 1408 }; 1409 1410 class java_lang_LiveStackFrameInfo: AllStatic { 1411 private: 1412 static int _monitors_offset; 1413 static int _locals_offset; 1414 static int _operands_offset; 1415 1416 public: 1417 static void set_monitors(oop info, oop value); 1418 static void set_locals(oop info, oop value); 1419 static void set_operands(oop info, oop value); 1420 1421 static void compute_offsets(); 1422 1423 // Debugging 1424 friend class JavaClasses; | 1347 1348 class Backtrace: AllStatic { 1349 public: 1350 // Helper backtrace functions to store bci|version together. 1351 static int merge_bci_and_version(int bci, int version); 1352 static int merge_mid_and_cpref(int mid, int cpref); 1353 static int bci_at(unsigned int merged); 1354 static int version_at(unsigned int merged); 1355 static int mid_at(unsigned int merged); 1356 static int cpref_at(unsigned int merged); 1357 static int get_line_number(const methodHandle& method, int bci); 1358 static Symbol* get_source_file_name(InstanceKlass* holder, int version); 1359 1360 // Debugging 1361 friend class JavaClasses; 1362 }; 1363 1364 // Interface to java.lang.StackFrameInfo objects 1365 1366 #define STACKFRAMEINFO_INJECTED_FIELDS(macro) \ 1367 macro(java_lang_StackFrameInfo, version, short_signature, false) 1368 1369 class java_lang_StackFrameInfo: AllStatic { 1370 private: 1371 static int _declaringClass_offset; 1372 static int _memberName_offset; 1373 static int _bci_offset; 1374 static int _version_offset; 1375 1376 static Method* get_method(Handle stackFrame, InstanceKlass* holder, TRAPS); 1377 1378 public: 1379 // Setters 1380 static void set_declaringClass(oop info, oop value); 1381 static void set_method_and_bci(Handle stackFrame, const methodHandle& method, int bci); 1382 static void set_bci(oop info, int value); 1383 1384 static void set_version(oop info, short value); 1385 1386 static void compute_offsets(); 1387 1388 static void fill_methodInfo(Handle stackFrame, Handle stack_trace_element, TRAPS); 1389 1390 // Debugging 1391 friend class JavaClasses; 1392 }; 1393 1394 class java_lang_LiveStackFrameInfo: AllStatic { 1395 private: 1396 static int _monitors_offset; 1397 static int _locals_offset; 1398 static int _operands_offset; 1399 1400 public: 1401 static void set_monitors(oop info, oop value); 1402 static void set_locals(oop info, oop value); 1403 static void set_operands(oop info, oop value); 1404 1405 static void compute_offsets(); 1406 1407 // Debugging 1408 friend class JavaClasses; |