Merge
This commit is contained in:
commit
69a86594a2
@ -25,7 +25,7 @@ ifeq ($(INCLUDE_JVMTI), false)
|
||||
CXXFLAGS += -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 \
|
||||
jvmtiCodeBlobEvents.cpp jvmtiEnv.cpp jvmtiRedefineClasses.cpp jvmtiEnvBase.cpp jvmtiEnvThreadState.cpp \
|
||||
jvmtiTagMap.cpp jvmtiEventController.cpp evmCompat.cpp jvmtiEnter.xsl jvmtiExport.cpp \
|
||||
|
@ -35,6 +35,19 @@
|
||||
#include "runtime/vframe.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
|
||||
enum {
|
||||
ticks_no_Java_frame = 0,
|
||||
@ -50,6 +63,8 @@ enum {
|
||||
ticks_safepoint = -10
|
||||
};
|
||||
|
||||
#if INCLUDE_JVMTI
|
||||
|
||||
//-------------------------------------------------------
|
||||
|
||||
// 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,
|
||||
ASGCT_CallTrace* trace,
|
||||
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);
|
||||
#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
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include "services/memReporter.hpp"
|
||||
#include "services/memTracker.hpp"
|
||||
#include "utilities/decoder.hpp"
|
||||
#include "utilities/defaultStream.hpp"
|
||||
#include "utilities/globalDefinitions.hpp"
|
||||
|
||||
bool NMT_track_callsite = false;
|
||||
@ -77,7 +78,15 @@ void MemTracker::init_tracking_options(const char* option_line) {
|
||||
if (strcmp(option_line, "=summary") == 0) {
|
||||
_tracking_level = NMT_summary;
|
||||
} else if (strcmp(option_line, "=detail") == 0) {
|
||||
_tracking_level = NMT_detail;
|
||||
// detail relies on a stack-walking ability that may not
|
||||
// be available depending on platform and/or compiler flags
|
||||
if (PLATFORM_NMT_DETAIL_SUPPORTED) {
|
||||
_tracking_level = NMT_detail;
|
||||
} else {
|
||||
jio_fprintf(defaultStream::error_stream(),
|
||||
"NMT detail is not supported on this platform. Using NMT summary instead.");
|
||||
_tracking_level = NMT_summary;
|
||||
}
|
||||
} else if (strcmp(option_line, "=off") != 0) {
|
||||
vm_exit_during_initialization("Syntax error, expecting -XX:NativeMemoryTracking=[off|summary|detail]", NULL);
|
||||
}
|
||||
|
@ -380,6 +380,14 @@ const uint64_t KlassEncodingMetaspaceMax = (uint64_t(max_juint) + 1) << LogKlass
|
||||
# include "globalDefinitions_ppc.hpp"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If a platform does not support NMT_detail
|
||||
* the platform specific globalDefinitions (above)
|
||||
* can set PLATFORM_NMT_DETAIL_SUPPORTED to false
|
||||
*/
|
||||
#ifndef PLATFORM_NMT_DETAIL_SUPPORTED
|
||||
#define PLATFORM_NMT_DETAIL_SUPPORTED true
|
||||
#endif
|
||||
|
||||
// The byte alignment to be used by Arena::Amalloc. See bugid 4169348.
|
||||
// Note: this value must be a power of 2
|
||||
|
Loading…
Reference in New Issue
Block a user