Mercurial > hg > icedtea7
changeset 2579:cc751b4320d0
Merge
author | Andrew John Hughes <gnu_andrew@member.fsf.org> |
---|---|
date | Tue, 14 Aug 2012 09:51:07 +0100 |
parents | ba9886ae5d7f (current diff) 3a36c4e4b975 (diff) |
children | 32dfd32d5674 |
files | ChangeLog Makefile.am |
diffstat | 4 files changed, 109 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Tue Aug 14 09:49:22 2012 +0100 +++ b/ChangeLog Tue Aug 14 09:51:07 2012 +0100 @@ -16,6 +16,28 @@ * configure.ac: Check for java.util.regex.Matcher.quoteReplacement. +2012-08-06 Mark Wielaard <mjw@redhat.com> + + * test/tapset/jstaptest.pl (probestrings): Expect non-zero value + for hotspot.jni.NewObjectA.return. + +2012-08-03 Mark Wielaard <mjw@redhat.com> + + * Makefile.am (check-tapset-probes): New target. + (check-tapset-jstack): Likewise. + (check-tapset): Depend on check-tapset-probes check-tapset-jstack. + * test/tapset/jstaptest.pl (process_args): Add -p [$run_test_probes] + and -j [$run_test_jstack]. + (test_jstack): Takes argument to pass to java process. + Pass -XX:+UseCompressedOops and/or -Xmx5G. + +2012-08-03 Yasumasa Suenaga <suenaga.yasumasa@lab.ntt.co.jp> + + * tapset/jstack.stp.in (NarrowOopStruct): New global. + (hotspot.vm_init_end): Initialize NarrowOopStruct. + (hotspot.vm_shutdown): Delete NarrowOopStruct for pid. + (jstack_call): Use NarrowOopStruct to calculate methodOopKlass. + 2012-08-02 Andrew John Hughes <gnu_andrew@member.fsf.org> * Makefile.am:
--- a/Makefile.am Tue Aug 14 09:49:22 2012 +0100 +++ b/Makefile.am Tue Aug 14 09:51:07 2012 +0100 @@ -2343,13 +2343,21 @@ $(jtreg_processes); \ fi -check-tapset: +check-tapset-probes: if ENABLE_SYSTEMTAP $(abs_top_srcdir)/test/tapset/jstaptest.pl \ -B $(BUILD_OUTPUT_DIR) -A $(BUILD_ARCH_DIR) \ -S $(abs_top_srcdir)/test/tapset \ - -o test/check-stap.log + -a test/check-stap.log -p endif +check-tapset-jstack: +if ENABLE_SYSTEMTAP + $(abs_top_srcdir)/test/tapset/jstaptest.pl \ + -B $(BUILD_OUTPUT_DIR) -A $(BUILD_ARCH_DIR) \ + -S $(abs_top_srcdir)/test/tapset \ + -a test/check-stap.log -j +endif +check-tapset: check-tapset-probes check-tapset-jstack clean-tapset-report: if ENABLE_SYSTEMTAP
--- a/tapset/jstack.stp.in Tue Aug 14 09:49:22 2012 +0100 +++ b/tapset/jstack.stp.in Tue Aug 14 09:51:07 2012 +0100 @@ -49,6 +49,7 @@ global Universe_collectedHeap; global HeapWordSize; global CodeCache_heap; +global NarrowOopStruct; global sp_register; global fp_register; @@ -71,9 +72,6 @@ %? @var("_methodKlassObj@universe.cpp") %: $_methodKlassObj %); - // For compressed oops. - // Universe_heap_base = $_heap_base; - /** * The Universe class holds some of the interesting statics for * introspection into HotSpot. The CollectedHeap @@ -109,6 +107,17 @@ %? @var("_heap@codeCache.cpp") %: $_heap %); + /** + * Does target process use CompressedOops ? + */ + NarrowOopStruct[pid()] = 0; + %( systemtap_v >= "1.8" + %? if (@var("UseCompressedOops@globals.cpp")) + NarrowOopStruct[pid()] = &@var("_narrow_oop@universe.cpp"); + %: if($UseCompressedOops) + NarrowOopStruct[pid()] = $_narrow_oop; + %) + // Should really check arch of user space (for 32bit jvm on 64bit kernel). %( arch == "i386" %? sp_register = "esp"; @@ -142,6 +151,7 @@ delete(Universe_collectedHeap[pid()]); delete(HeapWordSize[pid()]); delete(CodeCache_heap[pid()]); + delete(NarrowOopStruct[pid()]); delete(vm_inited[pid()]); } @@ -353,8 +363,22 @@ isMethodOop = 0 else { - methodOopKlass = @cast(methodOopPtr, "methodOopDesc", - "@ABS_SERVER_LIBJVM_SO@")->_metadata->_klass; + if (NarrowOopStruct[pid()]) + { + methodOopKlass = @cast(methodOopPtr, "methodOopDesc", + "@ABS_SERVER_LIBJVM_SO@")->_metadata->_compressed_klass; + methodOopKlass = (@cast(NarrowOopStruct[pid()], + "NarrowOopStruct", + "@ABS_SERVER_LIBJVM_SO@")->_base + + (methodOopKlass + << @cast(NarrowOopStruct[pid()], + "NarrowOopStruct", + "@ABS_SERVER_LIBJVM_SO@")->_shift)); + } + else + methodOopKlass = @cast(methodOopPtr, "methodOopDesc", + "@ABS_SERVER_LIBJVM_SO@")->_metadata->_klass; + isMethodOop = (methodOopKlass == Universe_methodKlassObj[pid()]); }
--- a/test/tapset/jstaptest.pl Tue Aug 14 09:49:22 2012 +0100 +++ b/test/tapset/jstaptest.pl Tue Aug 14 09:51:07 2012 +0100 @@ -14,7 +14,7 @@ use Getopt::Std; $Getopt::Std::OUTPUT_HELP_VERSION = 1; # sub main::HELP_MESSAGE defined below. -our($opt_B, $opt_A, $opt_o, $opt_a, $opt_S, $opt_J); +our($opt_B, $opt_A, $opt_o, $opt_a, $opt_S, $opt_J, $opt_p, $opt_j); # Gigantic nested array. # Each element in outer array should be of the form: @@ -414,7 +414,7 @@ ["hotspot.jni.NewLongArray", "\"%slen=%d\\n\",name,length", "NewLongArraylen=5"], ["hotspot.jni.NewLongArray.return", "\"%sret=%d\\n\",name,ret", "NewLongArrayret=[^0]"], ["hotspot.jni.NewObjectA", "\"%s\\n\",name", "NewObjectA"], - ["hotspot.jni.NewObjectA.return", "\"%sret=%d\\n\",name,ret", "NewObjectAret=0"], + ["hotspot.jni.NewObjectA.return", "\"%sret=%d\\n\",name,ret", "NewObjectAret=[^0]"], ["hotspot.jni.NewObjectArray", "\"%slen=%dinit=%d\\n\",name,length,initial", "NewObjectArraylen=5init=0"], ["hotspot.jni.NewObjectArray.return", "\"%sret=%d\\n\",name,ret", "NewObjectArrayret=[^0]"], ["hotspot.jni.NewObject", "\"%s\\n\",name", "NewObject"], @@ -546,6 +546,8 @@ my $jvm_so = ""; my $test_sourcedir = "."; my @include_dirs = (); +my $run_test_probes = 1; +my $run_test_jstack = 1; ### MAIN BODY @@ -553,11 +555,30 @@ process_args(); log_preamble(); build_tests(); -my @detected_probes = detect_probes(@probestrings); -if (can_run_probes()) { - test_probes(@detected_probes); - test_jstack(); + +my $can_probe = can_run_probes(); +my @detected_probes; + +if ($run_test_probes) { + @detected_probes = detect_probes(@probestrings); + if ($can_probe) { + test_probes(@detected_probes); + } } + +if ($run_test_jstack && $can_probe) { + # Default, no arguments. + test_jstack(""); + # Explicitly turn on compressed oops. + test_jstack("-XX:+UseCompressedOops"); + # Explicitly turn off compressed oops. + test_jstack("-XX:-UseCompressedOops"); + # Force some shift value for compressed oops by having a 4GB+ heap. + test_jstack("-XX:+UseCompressedOops -Xmx5G"); + # Explicitly disable compressed oops, but use large heap anyway. + test_jstack("-XX:-UseCompressedOops -Xmx5G"); +} + summarize(); log_postamble(); clean_up(); @@ -571,8 +592,9 @@ # based on args. sub process_args { die "Try \"jstaptest.pl --help\" for usage information.\n" - if (!getopts('B:A:J:o:a:S:') || ($opt_o && $opt_a)); - # -o and -a are mutually exclusive. + if (!getopts('B:A:J:o:a:S:pj') + || ($opt_o && $opt_a) # -o and -a are mutually exclusive. + || ($opt_p && $opt_j)); # -p and -j are mutually exclusive. if ($opt_B && $opt_A) { die "Directory $opt_B not found." unless (-d $opt_B); die "Directory $opt_B/j2sdk-image/tapset not found.\nTry rebuilding Icedtea with systemtap support.\n" @@ -610,6 +632,14 @@ open($log_file, '>>', $opt_a) or die "Couldn't open log file: $opt_a\n$!"; } + if ($opt_p) { + $run_test_probes = 1; + $run_test_jstack = 0; + } + if ($opt_j) { + $run_test_probes = 0; + $run_test_jstack = 1; + } } # Any text that should precede a test run in the log file goes here. @@ -790,13 +820,14 @@ } sub test_jstack { - log_and_print("Testing if jstack works as expected..."); my ($stap_pre, $stap_script, $stap_post, $stap_command, $stap_result); + my ($jargs) = @_; + log_and_print("Testing if jstack works as expected with '$jargs'..."); # Run staptest.SystemtapTester compiled_method_unload which does a lot # and can generate a somewhat "deep" stack. $stap_pre = "stap " . join(' ', @tapset_dirs) . " -e '"; - $stap_post = "' -c '$java_exec staptest.SystemtapTester compiled_method_unload'"; + $stap_post = "' -c '$java_exec $jargs staptest.SystemtapTester compiled_method_unload'"; # Simple test jstack() should at least show our main method. # The test program runs the unloaded probe tester twice, pick the second @@ -857,7 +888,7 @@ # Any text that should follow a test run in the log file goes here. sub log_postamble { - if ($broken_count | $undetected_count) { + if ($broken_count | $undetected_count | $broken_jstack) { log_and_print("Some tests did not work as expected. See file " . $logfile_name . " for details."); } @@ -964,7 +995,7 @@ print("\n"); print("To run test suite:\n"); print("\n"); - print(" $ ./jstaptest.sh [[--help] | [<[-B <DIR> -A <ARCH>] | [-J <DIR>]> [-S <DIR>] [-<o|a> <LOGFILE>]]]\n"); + print(" $ ./jstaptest.sh [[--help] | [<[-B <DIR> -A <ARCH>] | [-J <DIR>]> [-S <DIR>] [-<o|a> <LOGFILE>]]] -<p|j>\n"); print("\n"); print("--help will display this help message.\n"); print("\n"); @@ -1003,6 +1034,11 @@ print(" the arguments passed to the script and the command executed\n"); print(" for each test\n"); print("\n"); + print("-p specifies that only the tapset probes should be tested.\n"); + print("-j specifies that only the jstack tapset should be tested.\n"); + print("Only one of -p or -j may be given. Both are tested by default.\n"); + print("\n"); + print("\n"); } #######################################################################