libjvm_db.c revision 2842
2842N/A * or visit www.oracle.com if you need additional information or have any
2842N/A#include "libjvm_db.h"
2842N/A#include "JvmOffsets.h"
2842N/A#define X86_COMPILER2
2842N/A uint64_t new_sp; /* "raw" sp for the next frame (includes extension by interpreter/adapter */
2842N/Atypedef struct VMStructEntry {
2842N/A struct ps_prochandle* P;
2842N/A switch (DATA_MODEL) {
2842N/A case PR_MODEL_LP64:
2842N/A case PR_MODEL_ILP32:
2842N/A err = ps_pread(J->P, J->Use_Compressed_Oops_address, &J->Use_Compressed_Oops, sizeof(uint8_t));
2842N/A J->Use_Compressed_Oops = 0;
2842N/A err = ps_pread(J->P, J->Universe_narrow_oop_shift_address, &J->Universe_narrow_oop_shift, sizeof(uint32_t));
2842N/A jvm_agent_t* J;
2842N/A#ifdef X86_COMPILER2
2842N/A fprintf(stderr, "Jagent_create: R_SP=%d, R_FP=%d, POINTER_SIZE=%d\n", R_SP, R_FP, POINTER_SIZE);
2842N/A if (J->Use_Compressed_Oops != 0) {
2842N/A // decode heap oop, same as oop.inline.hpp
2842N/A short signatureIndex;
2842N/A short klassSymbolLength;
2842N/A short nameSymbolLength;
2842N/A short signatureSymbolLength;
2842N/A err = read_pointer(J, constantPool + nameIndex * POINTER_SIZE + SIZE_constantPoolOopDesc, &nameSymbol);
2842N/A err = ps_pread(J->P, constMethod + OFFSET_constMethodOopDesc_signature_index, &signatureIndex, 2);
2842N/A err = read_pointer(J, constantPool + signatureIndex * POINTER_SIZE + SIZE_constantPoolOopDesc, &signatureSymbol);
2842N/A err = ps_pread(J->P, signatureSymbol + OFFSET_Symbol_body, signatureString, signatureSymbolLength);
2842N/A jvm_agent_t *J = N->J;
2842N/A N->orig_pc_offset);
2842N/A // see compressedStream.hpp
2842N/A err = ps_pread(J->P, constMethod + OFFSET_constMethodOopDesc_flags, &access_flags, sizeof(int8_t));
2842N/A buffer = constMethod + (uint64_t) SIZE_constMethodOopDesc + (uint64_t) code_size + code_end_delta;
2842N/A while (decode_offset > 0) {
2842N/A int deoptimized = 0;
2842N/A fprintf(stderr, "name_for_nmethod: found deoptimized frame converting pc from %#8llx to %#8llx\n",
2842N/A if (deoptimized) {
2842N/A switch (DATA_MODEL) {
2842N/A case PR_MODEL_LP64:
2842N/A case PR_MODEL_ILP32:
2842N/A *is_interpreted = 0;
2842N/A#ifdef X86_COMPILER2
2842N/A int frame_size;
2842N/A fprintf(stderr, "name_for_codecache: found matching fp/pc combo at 0x%llx\n", base - POINTER_SIZE);
2842N/A if (frame_size > 0) {
2842N/A int is_interpreted = 0;
2842N/A fprintf(stderr, "\nregs[R_I1]=%lx, regs[R_I2]=%lx, regs[R_I5]=%lx, regs[R_L1]=%lx, regs[R_L2]=%lx\n",
2842N/A#ifdef X86_COMPILER2
2842N/A methodOopPtr = 0;
2842N/A#ifndef X86_COMPILER2
2842N/A#ifdef X86_COMPILER2
2842N/A if (!is_interpreted) {
2842N/A#ifdef X86_COMPILER2
2842N/A#ifdef X86_COMPILER2
2842N/A fprintf(stderr, "update_gregs: before update sp = 0x%llx, fp = 0x%llx, pc = 0x%llx\n", gregs[R_SP], gregs[R_FP], gregs[R_PC]);
2842N/A fprintf(stderr, "update_gregs: after update sp = 0x%llx, fp = 0x%llx, pc = 0x%llx\n", gregs[R_SP], gregs[R_FP], gregs[R_PC]);
2842N/A#ifdef X86_COMPILER2