From ba6f35d3dc4d93694f1c9b6e6f2cbf009459753f Mon Sep 17 00:00:00 2001 From: Christian Thalinger Date: Tue, 18 Sep 2007 15:50:31 +0200 Subject: [PATCH] * src/cacaoh/cacaoh.c (main): Removed linkverbose. * src/vm/vm.c (vm_printconfig): Made static. (vm_create): Call vm_printconfig after the VM is initialized. * src/vm/vm.h (vm_printconfig): Removed. * src/vmcore/linker.c (TRACELINKCLASS): New macro. (link_class_intern): Use TRACELINKCLASS. * src/vmcore/options.c (linkverbose): Removed. (opt_TraceLinkClass): Added. (options_xx): OPT_PrintConfig: Don't call vm_printconfig, OPT_TraceLinkClass: Added. * src/vmcore/options.h (linkverbose): Removed. (opt_TraceLinkClass): Added. --- src/cacaoh/cacaoh.c | 1 - src/vm/vm.c | 10 +++++++++- src/vm/vm.h | 1 - src/vmcore/linker.c | 29 ++++++++++++++++++++--------- src/vmcore/options.c | 10 ++++++++-- src/vmcore/options.h | 2 +- 6 files changed, 38 insertions(+), 15 deletions(-) diff --git a/src/cacaoh/cacaoh.c b/src/cacaoh/cacaoh.c index 8590feb5e..91177b244 100644 --- a/src/cacaoh/cacaoh.c +++ b/src/cacaoh/cacaoh.c @@ -247,7 +247,6 @@ int main(int argc, char **argv) case OPT_VERBOSE: opt_verbose = true; loadverbose = true; - linkverbose = true; break; default: diff --git a/src/vm/vm.c b/src/vm/vm.c index 991ee4a4a..41d5a75bb 100644 --- a/src/vm/vm.c +++ b/src/vm/vm.c @@ -634,7 +634,7 @@ static void fullversion(void) } -void vm_printconfig(void) +static void vm_printconfig(void) { puts("Configure/Build options:\n"); puts(" ./configure: "VERSION_CONFIGURE_ARGS""); @@ -1639,6 +1639,14 @@ bool vm_create(JavaVMInitArgs *vm_args) vm_initializing = false; +#if !defined(NDEBUG) + /* Print the VM configuration after all stuff is set and the VM is + initialized. */ + + if (opt_PrintConfig) + vm_printconfig(); +#endif + /* everything's ok */ return true; diff --git a/src/vm/vm.h b/src/vm/vm.h index 7f1a46771..997636a3e 100644 --- a/src/vm/vm.h +++ b/src/vm/vm.h @@ -61,7 +61,6 @@ extern u1 *intrp_main_stack; /* function prototypes ********************************************************/ void usage(void); -void vm_printconfig(void); bool vm_createjvm(JavaVM **p_vm, void **p_env, void *vm_args); bool vm_create(JavaVMInitArgs *vm_args); diff --git a/src/vmcore/linker.c b/src/vmcore/linker.c index 0c9f34af1..fa58ea474 100644 --- a/src/vmcore/linker.c +++ b/src/vmcore/linker.c @@ -55,6 +55,25 @@ #include "vmcore/options.h" #include "vmcore/rt-timing.h" + +/* debugging macros ***********************************************************/ + +#if !defined(NDEBUG) +# define TRACELINKCLASS(c) \ + do { \ + if (opt_TraceLinkClass) { \ + log_start(); \ + log_print("[Linking "); \ + class_print((c)); \ + log_print("]"); \ + log_finish(); \ + } \ + } while (0) +#else +# define TRACELINKCLASS(c) +#endif + + /* #include "vm/resolve.h" */ /* copied prototype to avoid bootstrapping problem: */ classinfo *resolve_classref_or_classinfo_eager(classref_or_classinfo cls, bool checkaccess); @@ -518,10 +537,7 @@ static classinfo *link_class_intern(classinfo *c) RT_TIMING_GET_TIME(time_start); -#if !defined(NDEBUG) - if (linkverbose) - log_message_class("Linking class: ", c); -#endif + TRACELINKCLASS(c); /* the class must be loaded */ @@ -930,11 +946,6 @@ static classinfo *link_class_intern(classinfo *c) FREE(wi, method_worklist); } -#if !defined(NDEBUG) - if (linkverbose) - log_message_class("Linking done class: ", c); -#endif - RT_TIMING_TIME_DIFF(time_start ,time_resolving ,RT_TIMING_LINK_RESOLVE); RT_TIMING_TIME_DIFF(time_resolving ,time_compute_vftbl,RT_TIMING_LINK_C_VFTBL); RT_TIMING_TIME_DIFF(time_compute_vftbl,time_abstract ,RT_TIMING_LINK_ABSTRACT); diff --git a/src/vmcore/options.c b/src/vmcore/options.c index 71a94838b..b6435373f 100644 --- a/src/vmcore/options.c +++ b/src/vmcore/options.c @@ -75,7 +75,6 @@ bool opt_debugcolor = false; /* use ANSI terminal sequences */ bool compileall = false; bool loadverbose = false; -bool linkverbose = false; bool initverbose = false; bool opt_verboseclass = false; @@ -198,6 +197,7 @@ int32_t opt_TraceExceptions = 0; int32_t opt_TraceJavaCalls = 0; int32_t opt_TraceJNICalls = 0; int32_t opt_TraceJVMCalls = 0; +int32_t opt_TraceLinkClass = 0; #if defined(ENABLE_REPLACEMENT) int32_t opt_TraceReplacement = 0; #endif @@ -230,6 +230,7 @@ enum { OPT_TraceJavaCalls, OPT_TraceJNICalls, OPT_TraceJVMCalls, + OPT_TraceLinkClass, OPT_TraceReplacement }; @@ -260,6 +261,7 @@ option_t options_XX[] = { { "TraceJavaCalls", OPT_TraceJavaCalls, OPT_TYPE_BOOLEAN, "trace Java method calls" }, { "TraceJNICalls", OPT_TraceJNICalls, OPT_TYPE_BOOLEAN, "trace JNI method calls" }, { "TraceJVMCalls", OPT_TraceJVMCalls, OPT_TYPE_BOOLEAN, "TODO" }, + { "TraceLinkClass", OPT_TraceLinkClass, OPT_TYPE_BOOLEAN, "trace class linking" }, #if defined(ENABLE_REPLACEMENT) { "TraceReplacement", OPT_TraceReplacement, OPT_TYPE_VALUE, "trace on-stack replacement with the given verbosity level (default: 1)" }, #endif @@ -567,7 +569,7 @@ void options_xx(JavaVMInitArgs *vm_args) break; case OPT_PrintConfig: - vm_printconfig(); + opt_PrintConfig = enable; break; case OPT_ProfileGCMemoryUsage: @@ -625,6 +627,10 @@ void options_xx(JavaVMInitArgs *vm_args) opt_TraceJVMCalls = enable; break; + case OPT_TraceLinkClass: + opt_TraceLinkClass = enable; + break; + #if defined(ENABLE_REPLACEMENT) case OPT_TraceReplacement: if (value == NULL) diff --git a/src/vmcore/options.h b/src/vmcore/options.h index bd289bd53..15dbbd9d0 100644 --- a/src/vmcore/options.h +++ b/src/vmcore/options.h @@ -90,7 +90,6 @@ extern bool opt_debugcolor; extern bool compileall; extern bool loadverbose; /* Print debug messages during loading */ -extern bool linkverbose; extern bool initverbose; /* Log class initialization */ extern bool opt_verboseclass; @@ -213,6 +212,7 @@ extern int32_t opt_TraceExceptions; extern int32_t opt_TraceJavaCalls; extern int32_t opt_TraceJNICalls; extern int32_t opt_TraceJVMCalls; +extern int32_t opt_TraceLinkClass; #if defined(ENABLE_REPLACEMENT) extern int32_t opt_TraceReplacement; #endif -- 2.25.1