/hg/icedtea6: 4 new changesets

mjw at icedtea.classpath.org mjw at icedtea.classpath.org
Fri Aug 10 07:40:29 PDT 2012


changeset 3698dcbffc3f in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=3698dcbffc3f
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 3f817235ba8d in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=3f817235ba8d
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 3c980c916ff7 in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=3c980c916ff7
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.


changeset 5cdc730ba01e in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=5cdc730ba01e
author: Mark Wielaard <mark at klomp.org>
date: Fri Aug 10 16:39:56 2012 +0200

	merge


diffstat:

 ChangeLog                |  26 ++++++++++++++++++++
 Makefile.am              |  12 ++++++++-
 README                   |   2 +-
 tapset/jstack.stp.in     |  34 +++++++++++++++++++++++----
 test/tapset/jstaptest.pl |  60 ++++++++++++++++++++++++++++++++++++++---------
 5 files changed, 114 insertions(+), 20 deletions(-)

diffs (283 lines):

diff -r 0ad57a8403af -r 5cdc730ba01e ChangeLog
--- a/ChangeLog	Thu Aug 09 21:08:15 2012 +0100
+++ b/ChangeLog	Fri Aug 10 16:39:56 2012 +0200
@@ -1,3 +1,29 @@
+2012-08-10  Stefan Ring  <stefan at complang.tuwien.ac.at>
+
+	* README: Fix CACAO URL.
+
+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-08-09  Stefan Ring  <stefan at complang.tuwien.ac.at>
 
 	* Makefile.am: copy entire CACAO directory, including .hg
diff -r 0ad57a8403af -r 5cdc730ba01e Makefile.am
--- a/Makefile.am	Thu Aug 09 21:08:15 2012 +0100
+++ b/Makefile.am	Fri Aug 10 16:39:56 2012 +0200
@@ -2372,13 +2372,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 0ad57a8403af -r 5cdc730ba01e README
--- a/README	Thu Aug 09 21:08:15 2012 +0100
+++ b/README	Fri Aug 10 16:39:56 2012 +0200
@@ -65,7 +65,7 @@
 CACAO as VM
 ===========
 
-The CACAO virtual machine (http://cacaovm.org) can be used as an
+The CACAO virtual machine (http://cacaojvm.org) can be used as an
 alternative to the HotSpot virtual machine. One advantage of this is
 that it already provides a JIT for many platforms to which HotSpot has
 not yet been ported, including ppc, ppc64, arm and mips.  To use CACAO
diff -r 0ad57a8403af -r 5cdc730ba01e tapset/jstack.stp.in
--- a/tapset/jstack.stp.in	Thu Aug 09 21:08:15 2012 +0100
+++ b/tapset/jstack.stp.in	Fri Aug 10 16:39:56 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 0ad57a8403af -r 5cdc730ba01e test/tapset/jstaptest.pl
--- a/test/tapset/jstaptest.pl	Thu Aug 09 21:08:15 2012 +0100
+++ b/test/tapset/jstaptest.pl	Fri Aug 10 16:39:56 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