--- old/src/os/solaris/dtrace/libjvm_db.c 2014-07-14 19:49:36.936304182 -0400 +++ new/src/os/solaris/dtrace/libjvm_db.c 2014-07-14 19:49:36.672304182 -0400 @@ -164,7 +164,7 @@ int32_t SIZE_CodeCache_log2_segment; uint64_t methodPtr; - uint64_t bcx; + uint64_t bcp; Nmethod_t *N; /*Inlined methods support */ Frame_t prev_fr; @@ -1068,19 +1068,9 @@ return err; } -int is_bci(intptr_t bcx) { - switch (DATA_MODEL) { - case PR_MODEL_LP64: - return ((uintptr_t) bcx) <= ((uintptr_t) MAX_METHOD_CODE_SIZE) ; - case PR_MODEL_ILP32: - default: - return 0 <= bcx && bcx <= MAX_METHOD_CODE_SIZE; - } -} - static int name_for_imethod(jvm_agent_t* J, - uint64_t bcx, + uint64_t bcp, uint64_t method, char *result, size_t size, @@ -1095,7 +1085,7 @@ err = read_pointer(J, method + OFFSET_Method_constMethod, &constMethod); CHECK_FAIL(err); - bci = is_bci(bcx) ? bcx : bcx - (constMethod + (uint64_t) SIZE_ConstMethod); + bci = bcp - (constMethod + (uint64_t) SIZE_ConstMethod); if (debug) fprintf(stderr, "\t name_for_imethod: BEGIN: method: %#llx\n", method); @@ -1169,7 +1159,7 @@ if (err == PS_OK && strncmp(name, "Interpreter", 11) == 0) { *is_interpreted = 1; if (is_method(J, J->methodPtr)) { - return name_for_imethod(J, J->bcx, J->methodPtr, result, size, jframe); + return name_for_imethod(J, J->bcp, J->methodPtr, result, size, jframe); } } @@ -1326,7 +1316,7 @@ /* arguments given to read_pointer need to be worst case sized */ uint64_t methodPtr = 0; uint64_t sender_sp; - uint64_t bcx = 0; + uint64_t bcp = 0; int is_interpreted = 0; int result = PS_OK; int err = PS_OK; @@ -1357,7 +1347,7 @@ * regs[R_PC] contains a CALL instruction pc offset. */ pc += 8; - bcx = (uintptr_t) regs[R_L1]; + bcp = (uintptr_t) regs[R_L1]; methodPtr = (uintptr_t) regs[R_L2]; sender_sp = regs[R_I5]; if (debug > 2) { @@ -1385,13 +1375,13 @@ if (read_pointer(J, fp + OFFSET_interpreter_frame_sender_sp, &sender_sp) != PS_OK) { sender_sp = 0; } - if (read_pointer(J, fp + OFFSET_interpreter_frame_bcx_offset, &bcx) != PS_OK) { - bcx = 0; + if (read_pointer(J, fp + OFFSET_interpreter_frame_bcp_offset, &bcp) != PS_OK) { + bcp = 0; } #endif /* i386 */ J->methodPtr = methodPtr; - J->bcx = bcx; + J->bcp = bcp; /* On x86 with C2 JVM: native frame may have wrong regs[R_FP] * For example: JVM_SuspendThread frame poins to the top interpreted frame. @@ -1402,7 +1392,7 @@ */ #ifndef X86_COMPILER2 if (is_method(J, J->methodPtr)) { - result = name_for_imethod(J, bcx, J->methodPtr, name, size, jframe); + result = name_for_imethod(J, bcp, J->methodPtr, name, size, jframe); /* If the methodPtr is a method then this is highly likely to be an interpreter frame */ if (result >= 0) { @@ -1416,7 +1406,7 @@ } #ifdef X86_COMPILER2 else if (is_method(J, J->methodPtr)) { - result = name_for_imethod(J, bcx, J->methodPtr, name, size, jframe); + result = name_for_imethod(J, bcp, J->methodPtr, name, size, jframe); /* If the methodPtr is a method then this is highly likely to be an interpreter frame */ if (result >= 0) {