/hg/icedtea7: 3 new changesets
mark at icedtea.classpath.org
mark at icedtea.classpath.org
Wed Aug 8 11:28:34 PDT 2012
changeset 069e50dcd06a in /hg/icedtea7
details: http://icedtea.classpath.org/hg/icedtea7?cmd=changeset;node=069e50dcd06a
author: Yasumasa Suenaga <suenaga.yasumasa at lab.ntt.co.jp>
date: Sun Aug 05 22:16:29 2012 +0200
Support CompressedOops for jstack.stp.
* 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.
changeset cbaab02d2dda in /hg/icedtea7
details: http://icedtea.classpath.org/hg/icedtea7?cmd=changeset;node=cbaab02d2dda
author: Mark Wielaard <mark at klomp.org>
date: Sun Aug 05 22:32:14 2012 +0200
Add UseCompressedOops tests to jstaptest.pl.
* 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.
changeset 3a36c4e4b975 in /hg/icedtea7
details: http://icedtea.classpath.org/hg/icedtea7?cmd=changeset;node=3a36c4e4b975
author: Mark Wielaard <mark at klomp.org>
date: Mon Aug 06 17:12:29 2012 +0200
test/tapset/jstaptest.pl: Expect non-zero value for NewObjectA.return.
diffstat:
ChangeLog | 22 +++++++++++++++++
Makefile.am | 12 ++++++++-
tapset/jstack.stp.in | 34 +++++++++++++++++++++++----
test/tapset/jstaptest.pl | 60 ++++++++++++++++++++++++++++++++++++++---------
4 files changed, 109 insertions(+), 19 deletions(-)
diffs (267 lines):
diff -r f61cb5d6d39b -r 3a36c4e4b975 ChangeLog
--- a/ChangeLog Fri Jul 27 09:26:20 2012 +0100
+++ b/ChangeLog Mon Aug 06 17:12:29 2012 +0200
@@ -1,3 +1,25 @@
+2012-08-06 Mark Wielaard <mjw at redhat.com>
+
+ * test/tapset/jstaptest.pl (probestrings): Expect non-zero value
+ for hotspot.jni.NewObjectA.return.
+
+2012-08-03 Mark Wielaard <mjw at 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 at 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-07-27 Andrew John Hughes <gnu_andrew at member.fsf.org>
* Makefile.am:
diff -r f61cb5d6d39b -r 3a36c4e4b975 Makefile.am
--- a/Makefile.am Fri Jul 27 09:26:20 2012 +0100
+++ b/Makefile.am Mon Aug 06 17:12:29 2012 +0200
@@ -2329,13 +2329,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
diff -r f61cb5d6d39b -r 3a36c4e4b975 tapset/jstack.stp.in
--- a/tapset/jstack.stp.in Fri Jul 27 09:26:20 2012 +0100
+++ b/tapset/jstack.stp.in Mon Aug 06 17:12:29 2012 +0200
@@ -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 at 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 at codeCache.cpp")
%: $_heap %);
+ /**
+ * Does target process use CompressedOops ?
+ */
+ NarrowOopStruct[pid()] = 0;
+ %( systemtap_v >= "1.8"
+ %? if (@var("UseCompressedOops at globals.cpp"))
+ NarrowOopStruct[pid()] = &@var("_narrow_oop at 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()]);
}
diff -r f61cb5d6d39b -r 3a36c4e4b975 test/tapset/jstaptest.pl
--- a/test/tapset/jstaptest.pl Fri Jul 27 09:26:20 2012 +0100
+++ b/test/tapset/jstaptest.pl Mon Aug 06 17:12:29 2012 +0200
@@ -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");
}
#######################################################################
More information about the distro-pkg-dev
mailing list