mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8013461: There is a symbol AsyncGetCallTrace in libjvm.symbols that does not exist in minimal/libjvm.a when DEBUG_LEVEL == release
AsyncGetCallTrace is needed in libjvm.symbols so that programs which reference it can build correctly. Reviewed-by: dholmes, bobv
This commit is contained in:
parent
ddea5b012c
commit
b0dcc34e06
2 changed files with 25 additions and 15 deletions
|
@ -25,7 +25,7 @@ ifeq ($(INCLUDE_JVMTI), false)
|
||||||
CXXFLAGS += -DINCLUDE_JVMTI=0
|
CXXFLAGS += -DINCLUDE_JVMTI=0
|
||||||
CFLAGS += -DINCLUDE_JVMTI=0
|
CFLAGS += -DINCLUDE_JVMTI=0
|
||||||
|
|
||||||
Src_Files_EXCLUDE += jvmtiGetLoadedClasses.cpp forte.cpp jvmtiThreadState.cpp jvmtiExtensions.cpp \
|
Src_Files_EXCLUDE += jvmtiGetLoadedClasses.cpp jvmtiThreadState.cpp jvmtiExtensions.cpp \
|
||||||
jvmtiImpl.cpp jvmtiManageCapabilities.cpp jvmtiRawMonitor.cpp jvmtiUtil.cpp jvmtiTrace.cpp \
|
jvmtiImpl.cpp jvmtiManageCapabilities.cpp jvmtiRawMonitor.cpp jvmtiUtil.cpp jvmtiTrace.cpp \
|
||||||
jvmtiCodeBlobEvents.cpp jvmtiEnv.cpp jvmtiRedefineClasses.cpp jvmtiEnvBase.cpp jvmtiEnvThreadState.cpp \
|
jvmtiCodeBlobEvents.cpp jvmtiEnv.cpp jvmtiRedefineClasses.cpp jvmtiEnvBase.cpp jvmtiEnvThreadState.cpp \
|
||||||
jvmtiTagMap.cpp jvmtiEventController.cpp evmCompat.cpp jvmtiEnter.xsl jvmtiExport.cpp \
|
jvmtiTagMap.cpp jvmtiEventController.cpp evmCompat.cpp jvmtiEnter.xsl jvmtiExport.cpp \
|
||||||
|
|
|
@ -35,6 +35,19 @@
|
||||||
#include "runtime/vframe.hpp"
|
#include "runtime/vframe.hpp"
|
||||||
#include "runtime/vframeArray.hpp"
|
#include "runtime/vframeArray.hpp"
|
||||||
|
|
||||||
|
// call frame copied from old .h file and renamed
|
||||||
|
typedef struct {
|
||||||
|
jint lineno; // line number in the source file
|
||||||
|
jmethodID method_id; // method executed in this frame
|
||||||
|
} ASGCT_CallFrame;
|
||||||
|
|
||||||
|
// call trace copied from old .h file and renamed
|
||||||
|
typedef struct {
|
||||||
|
JNIEnv *env_id; // Env where trace was recorded
|
||||||
|
jint num_frames; // number of frames in this trace
|
||||||
|
ASGCT_CallFrame *frames; // frames
|
||||||
|
} ASGCT_CallTrace;
|
||||||
|
|
||||||
// These name match the names reported by the forte quality kit
|
// These name match the names reported by the forte quality kit
|
||||||
enum {
|
enum {
|
||||||
ticks_no_Java_frame = 0,
|
ticks_no_Java_frame = 0,
|
||||||
|
@ -50,6 +63,8 @@ enum {
|
||||||
ticks_safepoint = -10
|
ticks_safepoint = -10
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if INCLUDE_JVMTI
|
||||||
|
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
|
|
||||||
// Native interfaces for use by Forte tools.
|
// Native interfaces for use by Forte tools.
|
||||||
|
@ -360,20 +375,6 @@ static bool find_initial_Java_frame(JavaThread* thread,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// call frame copied from old .h file and renamed
|
|
||||||
typedef struct {
|
|
||||||
jint lineno; // line number in the source file
|
|
||||||
jmethodID method_id; // method executed in this frame
|
|
||||||
} ASGCT_CallFrame;
|
|
||||||
|
|
||||||
// call trace copied from old .h file and renamed
|
|
||||||
typedef struct {
|
|
||||||
JNIEnv *env_id; // Env where trace was recorded
|
|
||||||
jint num_frames; // number of frames in this trace
|
|
||||||
ASGCT_CallFrame *frames; // frames
|
|
||||||
} ASGCT_CallTrace;
|
|
||||||
|
|
||||||
static void forte_fill_call_trace_given_top(JavaThread* thd,
|
static void forte_fill_call_trace_given_top(JavaThread* thd,
|
||||||
ASGCT_CallTrace* trace,
|
ASGCT_CallTrace* trace,
|
||||||
int depth,
|
int depth,
|
||||||
|
@ -634,3 +635,12 @@ void Forte::register_stub(const char* name, address start, address end) {
|
||||||
pointer_delta(end, start, sizeof(jbyte)), 0, NULL);
|
pointer_delta(end, start, sizeof(jbyte)), 0, NULL);
|
||||||
#endif // !_WINDOWS && !IA64
|
#endif // !_WINDOWS && !IA64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else // INCLUDE_JVMTI
|
||||||
|
extern "C" {
|
||||||
|
JNIEXPORT
|
||||||
|
void AsyncGetCallTrace(ASGCT_CallTrace *trace, jint depth, void* ucontext) {
|
||||||
|
trace->num_frames = ticks_no_class_load; // -1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif // INCLUDE_JVMTI
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue