mirror of
https://github.com/openjdk/jdk.git
synced 2026-05-12 06:29:37 +00:00
8030812: Change the solaris DTrace implementation to use USDT2 instead of USDT1
Reviewed-by: coleenp, sspitsyn, dsamersoff
This commit is contained in:
parent
0aac4235b3
commit
b35fb5f8c0
@ -68,11 +68,9 @@ endif
|
||||
|
||||
# Use mapfile with libjvm_db.so
|
||||
LIBJVM_DB_MAPFILE = # no mapfile for usdt2 # $(MAKEFILES_DIR)/mapfile-vers-jvm_db
|
||||
#LFLAGS_JVM_DB += $(MAPFLAG:FILENAME=$(LIBJVM_DB_MAPFILE))
|
||||
|
||||
# Use mapfile with libjvm_dtrace.so
|
||||
LIBJVM_DTRACE_MAPFILE = # no mapfile for usdt2 # $(MAKEFILES_DIR)/mapfile-vers-jvm_dtrace
|
||||
#LFLAGS_JVM_DTRACE += $(MAPFLAG:FILENAME=$(LIBJVM_DTRACE_MAPFILE))
|
||||
|
||||
LFLAGS_JVM_DB += $(PICFLAG) # -D_REENTRANT
|
||||
LFLAGS_JVM_DTRACE += $(PICFLAG) # -D_REENTRANT
|
||||
@ -260,9 +258,6 @@ ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
|
||||
endif
|
||||
endif
|
||||
|
||||
#$(DTRACE).d: $(DTRACE_SRCDIR)/hotspot.d $(DTRACE_SRCDIR)/hotspot_jni.d \
|
||||
# $(DTRACE_SRCDIR)/hs_private.d $(DTRACE_SRCDIR)/jhelper.d
|
||||
# $(QUIETLY) cat $^ > $@
|
||||
|
||||
$(DtraceOutDir):
|
||||
mkdir $(DtraceOutDir)
|
||||
@ -276,100 +271,25 @@ $(DtraceOutDir)/hotspot_jni.h: $(DTRACE_SRCDIR)/hotspot_jni.d | $(DtraceOutDir)
|
||||
$(DtraceOutDir)/hs_private.h: $(DTRACE_SRCDIR)/hs_private.d | $(DtraceOutDir)
|
||||
$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_SRCDIR)/hs_private.d
|
||||
|
||||
$(DtraceOutDir)/jhelper.h: $(DTRACE_SRCDIR)/jhelper.d $(JVMOFFS).o | $(DtraceOutDir)
|
||||
$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_SRCDIR)/jhelper.d
|
||||
|
||||
# jhelper currently disabled
|
||||
dtrace_gen_headers: $(DtraceOutDir)/hotspot.h $(DtraceOutDir)/hotspot_jni.h $(DtraceOutDir)/hs_private.h
|
||||
|
||||
DTraced_Files = ciEnv.o \
|
||||
classLoadingService.o \
|
||||
compileBroker.o \
|
||||
hashtable.o \
|
||||
instanceKlass.o \
|
||||
java.o \
|
||||
jni.o \
|
||||
jvm.o \
|
||||
memoryManager.o \
|
||||
nmethod.o \
|
||||
objectMonitor.o \
|
||||
runtimeService.o \
|
||||
sharedRuntime.o \
|
||||
synchronizer.o \
|
||||
thread.o \
|
||||
unsafe.o \
|
||||
vmThread.o \
|
||||
vmCMSOperations.o \
|
||||
vmPSOperations.o \
|
||||
vmGCOperations.o \
|
||||
|
||||
# Dtrace is available, so we build $(DTRACE.o)
|
||||
#$(DTRACE.o): $(DTRACE).d $(JVMOFFS).h $(JVMOFFS)Index.h $(DTraced_Files)
|
||||
# @echo Compiling $(DTRACE).d
|
||||
|
||||
# $(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -G -xlazyload -o $@ -s $(DTRACE).d \
|
||||
# $(DTraced_Files) ||\
|
||||
# STATUS=$$?;\
|
||||
# if [ x"$$STATUS" = x"1" -a \
|
||||
# x`uname -r` = x"5.10" -a \
|
||||
# x`uname -p` = x"sparc" ]; then\
|
||||
# echo "*****************************************************************";\
|
||||
# echo "* If you are building server compiler, and the error message is ";\
|
||||
# echo "* \"incorrect ELF machine type...\", you have run into solaris bug ";\
|
||||
# echo "* 6213962, \"dtrace -G doesn't work on sparcv8+ object files\".";\
|
||||
# echo "* Either patch/upgrade your system (>= S10u1_15), or set the ";\
|
||||
# echo "* environment variable HOTSPOT_DISABLE_DTRACE_PROBES to disable ";\
|
||||
# echo "* dtrace probes for this build.";\
|
||||
# echo "*****************************************************************";\
|
||||
# fi;\
|
||||
# exit $$STATUS
|
||||
# Since some DTraced_Files are in LIBJVM.o and they are touched by this
|
||||
# command, and libgenerateJvmOffsets.so depends on LIBJVM.o, 'make' will
|
||||
# think it needs to rebuild libgenerateJvmOffsets.so and thus JvmOffsets*
|
||||
# files, but it doesn't, so we touch the necessary files to prevent later
|
||||
# recompilation. Note: we only touch the necessary files if they already
|
||||
# exist in order to close a race where an empty file can be created
|
||||
# before the real build rule is executed.
|
||||
# But, we can't touch the *.h files: This rule depends
|
||||
# on them, and that would cause an infinite cycle of rebuilding.
|
||||
# Neither the *.h or *.ccp files need to be touched, since they have
|
||||
# rules which do not update them when the generator file has not
|
||||
# changed their contents.
|
||||
# $(QUIETLY) if [ -f lib$(GENOFFS).so ]; then touch lib$(GENOFFS).so; fi
|
||||
# $(QUIETLY) if [ -f $(GENOFFS) ]; then touch $(GENOFFS); fi
|
||||
# $(QUIETLY) if [ -f $(JVMOFFS.o) ]; then touch $(JVMOFFS.o); fi
|
||||
|
||||
.PHONY: dtraceCheck
|
||||
|
||||
#SYSTEM_DTRACE_H = /usr/include/dtrace.h
|
||||
SYSTEM_DTRACE_PROG = /usr/sbin/dtrace
|
||||
#PATCH_DTRACE_PROG = /opt/SUNWdtrd/sbin/dtrace
|
||||
systemDtraceFound := $(wildcard ${SYSTEM_DTRACE_PROG})
|
||||
#patchDtraceFound := $(wildcard ${PATCH_DTRACE_PROG})
|
||||
#systemDtraceHdrFound := $(wildcard $(SYSTEM_DTRACE_H))
|
||||
|
||||
#ifneq ("$(systemDtraceHdrFound)", "")
|
||||
#CFLAGS += -DHAVE_DTRACE_H
|
||||
#endif
|
||||
|
||||
#ifneq ("$(patchDtraceFound)", "")
|
||||
#DTRACE_PROG=$(PATCH_DTRACE_PROG)
|
||||
#DTRACE_INCL=-I/opt/SUNWdtrd/include
|
||||
#else
|
||||
ifneq ("$(systemDtraceFound)", "")
|
||||
DTRACE_PROG=$(SYSTEM_DTRACE_PROG)
|
||||
else
|
||||
|
||||
endif # ifneq ("$(systemDtraceFound)", "")
|
||||
#endif # ifneq ("$(patchDtraceFound)", "")
|
||||
endif
|
||||
|
||||
ifneq ("${DTRACE_PROG}", "")
|
||||
ifeq ("${HOTSPOT_DISABLE_DTRACE_PROBES}", "")
|
||||
|
||||
DTRACE_OBJS = $(DTRACE.o) #$(JVMOFFS.o)
|
||||
CFLAGS += -DDTRACE_ENABLED #$(DTRACE_INCL)
|
||||
#clangCFLAGS += -DDTRACE_ENABLED -fno-optimize-sibling-calls
|
||||
#MAPFILE_DTRACE_OPT = $(MAPFILE_DTRACE)
|
||||
|
||||
|
||||
dtraceCheck:
|
||||
|
||||
@ -117,7 +117,7 @@ SUBMAKE_DIRS = $(addprefix $(PLATFORM_DIR)/,$(TARGETS))
|
||||
# For dependencies and recursive makes.
|
||||
BUILDTREE_MAKE = $(GAMMADIR)/make/$(OS_FAMILY)/makefiles/buildtree.make
|
||||
|
||||
BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make sa.make
|
||||
BUILDTREE_TARGETS = Makefile flags.make flags_vm.make vm.make adlc.make jvmti.make trace.make sa.make dtrace.make
|
||||
|
||||
BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OS_FAMILY) \
|
||||
ARCH=$(ARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT)
|
||||
@ -349,6 +349,16 @@ sa.make: $(BUILDTREE_MAKE)
|
||||
echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
|
||||
) > $@
|
||||
|
||||
dtrace.make: $(BUILDTREE_MAKE)
|
||||
@echo Creating $@ ...
|
||||
$(QUIETLY) ( \
|
||||
$(BUILDTREE_COMMENT); \
|
||||
echo; \
|
||||
echo include flags.make; \
|
||||
echo; \
|
||||
echo "include \$$(GAMMADIR)/make/$(OS_FAMILY)/makefiles/$(@F)"; \
|
||||
) > $@
|
||||
|
||||
FORCE:
|
||||
|
||||
.PHONY: all FORCE
|
||||
|
||||
@ -36,6 +36,8 @@ dtraceCheck:
|
||||
|
||||
else
|
||||
|
||||
DtraceOutDir = $(GENERATED)/dtracefiles
|
||||
|
||||
JVM_DB = libjvm_db
|
||||
LIBJVM_DB = libjvm_db.so
|
||||
|
||||
@ -326,6 +328,22 @@ $(DTRACE.o): $(DTRACE).d $(JVMOFFS).h $(JVMOFFS)Index.h $(DTraced_Files)
|
||||
$(QUIETLY) if [ -f $(GENOFFS) ]; then touch $(GENOFFS); fi
|
||||
$(QUIETLY) if [ -f $(JVMOFFS.o) ]; then touch $(JVMOFFS.o); fi
|
||||
|
||||
|
||||
$(DtraceOutDir):
|
||||
mkdir $(DtraceOutDir)
|
||||
|
||||
$(DtraceOutDir)/hotspot.h: $(DTRACE_SRCDIR)/hotspot.d | $(DtraceOutDir)
|
||||
$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_SRCDIR)/hotspot.d
|
||||
|
||||
$(DtraceOutDir)/hotspot_jni.h: $(DTRACE_SRCDIR)/hotspot_jni.d | $(DtraceOutDir)
|
||||
$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_SRCDIR)/hotspot_jni.d
|
||||
|
||||
$(DtraceOutDir)/hs_private.h: $(DTRACE_SRCDIR)/hs_private.d | $(DtraceOutDir)
|
||||
$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_SRCDIR)/hs_private.d
|
||||
|
||||
dtrace_gen_headers: $(DtraceOutDir)/hotspot.h $(DtraceOutDir)/hotspot_jni.h $(DtraceOutDir)/hs_private.h
|
||||
|
||||
|
||||
.PHONY: dtraceCheck
|
||||
|
||||
SYSTEM_DTRACE_H = /usr/include/dtrace.h
|
||||
|
||||
@ -73,7 +73,7 @@ default: vm_build_preliminaries the_vm
|
||||
@echo All done.
|
||||
|
||||
# This is an explicit dependency for the sake of parallel makes.
|
||||
vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) jvmti_stuff trace_stuff sa_stuff
|
||||
vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) jvmti_stuff trace_stuff sa_stuff dtrace_stuff
|
||||
@# We need a null action here, so implicit rules don't get consulted.
|
||||
|
||||
$(Cached_plat): $(Plat_File)
|
||||
@ -95,6 +95,9 @@ trace_stuff: jvmti_stuff $(Cached_plat) $(adjust-mflags)
|
||||
sa_stuff:
|
||||
@$(MAKE) -f sa.make $(MFLAGS-adjusted)
|
||||
|
||||
dtrace_stuff: $(Cached_plat) $(adjust-mflags)
|
||||
@$(MAKE) -f dtrace.make dtrace_gen_headers $(MFLAGS-adjusted) GENERATED=$(GENERATED)
|
||||
|
||||
# and the VM: must use other makefile with dependencies included
|
||||
|
||||
# We have to go to great lengths to get control over the -jN argument
|
||||
|
||||
@ -56,7 +56,7 @@ provider hotspot {
|
||||
probe thread__park__end(uintptr_t);
|
||||
probe thread__unpark(uintptr_t);
|
||||
probe method__compile__begin(
|
||||
const char*, uintptr_t, const char*, uintptr_t, const char*, uintptr_t, const char*, uintptr_t);
|
||||
char*, uintptr_t, char*, uintptr_t, char*, uintptr_t, char*, uintptr_t);
|
||||
probe method__compile__end(
|
||||
char*, uintptr_t, char*, uintptr_t, char*, uintptr_t,
|
||||
char*, uintptr_t, uintptr_t);
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
provider hotspot {
|
||||
probe class__loaded(char*, uintptr_t, void*, uintptr_t);
|
||||
probe class__unloaded(char*, uintptr_t, void*, uintptr_t);
|
||||
probe class__initialization__required(char*, uintptr_t, void*, intptr_t,int);
|
||||
probe class__initialization__required(char*, uintptr_t, void*, intptr_t);
|
||||
probe class__initialization__recursive(char*, uintptr_t, void*, intptr_t,int);
|
||||
probe class__initialization__concurrent(char*, uintptr_t, void*, intptr_t,int);
|
||||
probe class__initialization__erroneous(char*, uintptr_t, void*, intptr_t, int);
|
||||
|
||||
@ -211,7 +211,7 @@ provider hotspot_jni {
|
||||
probe CallVoidMethodV__return();
|
||||
probe CreateJavaVM__entry(void**, void**, void*);
|
||||
probe CreateJavaVM__return(uint32_t);
|
||||
probe DefineClass__entry(void*, const char*, void*, char, uintptr_t);
|
||||
probe DefineClass__entry(void*, const char*, void*, char*, uintptr_t);
|
||||
probe DefineClass__return(void*);
|
||||
probe DeleteGlobalRef__entry(void*, void*);
|
||||
probe DeleteGlobalRef__return();
|
||||
|
||||
@ -98,7 +98,7 @@ HS_DTRACE_PROBE_DECL9(hotspot, method__compile__end,
|
||||
Symbol* name = (method)->name(); \
|
||||
Symbol* signature = (method)->signature(); \
|
||||
HOTSPOT_METHOD_COMPILE_BEGIN( \
|
||||
comp_name, strlen(comp_name), \
|
||||
(char *) comp_name, strlen(comp_name), \
|
||||
(char *) klass_name->bytes(), klass_name->utf8_length(), \
|
||||
(char *) name->bytes(), name->utf8_length(), \
|
||||
(char *) signature->bytes(), signature->utf8_length()); \
|
||||
@ -110,7 +110,7 @@ HS_DTRACE_PROBE_DECL9(hotspot, method__compile__end,
|
||||
Symbol* name = (method)->name(); \
|
||||
Symbol* signature = (method)->signature(); \
|
||||
HOTSPOT_METHOD_COMPILE_END( \
|
||||
comp_name, strlen(comp_name), \
|
||||
(char *) comp_name, strlen(comp_name), \
|
||||
(char *) klass_name->bytes(), klass_name->utf8_length(), \
|
||||
(char *) name->bytes(), name->utf8_length(), \
|
||||
(char *) signature->bytes(), signature->utf8_length(), (success)); \
|
||||
|
||||
@ -141,8 +141,7 @@ void VM_CMS_Initial_Mark::doit() {
|
||||
#ifndef USDT2
|
||||
HS_DTRACE_PROBE(hs_private, cms__initmark__begin);
|
||||
#else /* USDT2 */
|
||||
HS_PRIVATE_CMS_INITMARK_BEGIN(
|
||||
);
|
||||
HS_PRIVATE_CMS_INITMARK_BEGIN();
|
||||
#endif /* USDT2 */
|
||||
|
||||
_collector->_gc_timer_cm->register_gc_pause_start("Initial Mark");
|
||||
@ -162,8 +161,7 @@ void VM_CMS_Initial_Mark::doit() {
|
||||
#ifndef USDT2
|
||||
HS_DTRACE_PROBE(hs_private, cms__initmark__end);
|
||||
#else /* USDT2 */
|
||||
HS_PRIVATE_CMS_INITMARK_END(
|
||||
);
|
||||
HS_PRIVATE_CMS_INITMARK_END();
|
||||
#endif /* USDT2 */
|
||||
}
|
||||
|
||||
@ -178,8 +176,7 @@ void VM_CMS_Final_Remark::doit() {
|
||||
#ifndef USDT2
|
||||
HS_DTRACE_PROBE(hs_private, cms__remark__begin);
|
||||
#else /* USDT2 */
|
||||
HS_PRIVATE_CMS_REMARK_BEGIN(
|
||||
);
|
||||
HS_PRIVATE_CMS_REMARK_BEGIN();
|
||||
#endif /* USDT2 */
|
||||
|
||||
_collector->_gc_timer_cm->register_gc_pause_start("Final Mark");
|
||||
@ -200,8 +197,7 @@ void VM_CMS_Final_Remark::doit() {
|
||||
#ifndef USDT2
|
||||
HS_DTRACE_PROBE(hs_private, cms__remark__end);
|
||||
#else /* USDT2 */
|
||||
HS_PRIVATE_CMS_REMARK_END(
|
||||
);
|
||||
HS_PRIVATE_CMS_REMARK_END();
|
||||
#endif /* USDT2 */
|
||||
}
|
||||
|
||||
|
||||
@ -56,6 +56,7 @@ void VM_GC_Operation::notify_gc_begin(bool full) {
|
||||
#else /* USDT2 */
|
||||
HOTSPOT_GC_BEGIN(
|
||||
full);
|
||||
HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
|
||||
#endif /* USDT2 */
|
||||
}
|
||||
|
||||
@ -64,8 +65,8 @@ void VM_GC_Operation::notify_gc_end() {
|
||||
HS_DTRACE_PROBE(hotspot, gc__end);
|
||||
HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
|
||||
#else /* USDT2 */
|
||||
HOTSPOT_GC_END(
|
||||
);
|
||||
HOTSPOT_GC_END();
|
||||
HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
|
||||
#endif /* USDT2 */
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -608,6 +608,7 @@ void notify_vm_shutdown() {
|
||||
HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
|
||||
#else /* USDT2 */
|
||||
HOTSPOT_VM_SHUTDOWN();
|
||||
HS_DTRACE_WORKAROUND_TAIL_CALL_BUG();
|
||||
#endif /* USDT2 */
|
||||
}
|
||||
|
||||
|
||||
@ -38,7 +38,10 @@
|
||||
#define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() \
|
||||
do { volatile size_t dtrace_workaround_tail_call_bug = 1; } while (0)
|
||||
|
||||
#define USDT1 1
|
||||
#define USDT2 1
|
||||
#include "dtracefiles/hotspot.h"
|
||||
#include "dtracefiles/hotspot_jni.h"
|
||||
#include "dtracefiles/hs_private.h"
|
||||
#elif defined(LINUX)
|
||||
#define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG()
|
||||
#define USDT1 1
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user