Merge
authoramurillo
Fri, 07 Feb 2014 09:41:36 -0800
changeset 22740 ab191bdb1dc9
parent 22557 1a1c5b99b152 (current diff)
parent 22739 74105c330330 (diff)
child 22751 0822e84a4968
child 22771 e2ad29fc5416
child 23477 6c2348280d09
Merge
hotspot/src/os/bsd/dtrace/hotspot.d
hotspot/src/os/bsd/dtrace/hotspot_jni.d
hotspot/src/os/bsd/dtrace/hs_private.d
hotspot/src/os/solaris/dtrace/hotspot.d
hotspot/src/os/solaris/dtrace/hotspot_jni.d
hotspot/src/os/solaris/dtrace/hs_private.d
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/ClassLoaderStats.java	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/ClassLoaderStats.java	Fri Feb 07 09:41:36 2014 -0800
@@ -103,11 +103,12 @@
       }
 
       SystemDictionary dict = VM.getVM().getSystemDictionary();
-      dict.classesDo(new SystemDictionary.ClassAndLoaderVisitor() {
-                        public void visit(Klass k, Oop loader) {
+      dict.classesDo(new SystemDictionary.ClassVisitor() {
+                        public void visit(Klass k) {
                            if (! (k instanceof InstanceKlass)) {
                               return;
                            }
+                           Oop loader = ((InstanceKlass) k).getClassLoader();
                            LoaderData ld = (loader != null) ? (LoaderData)loaderMap.get(loader)
                                                             : bootstrapLoaderData;
                            if (ld != null) {
--- a/hotspot/make/Makefile	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/make/Makefile	Fri Feb 07 09:41:36 2014 -0800
@@ -557,11 +557,11 @@
 
 
 # Testing the built JVM
-RUN_JVM=JAVA_HOME=$(JDK_IMPORT_PATH) $(JDK_IMPORT_PATH)/bin/java -d$(ARCH_DATA_MODEL) -Dsun.java.launcher=gamma
+RUN_JVM=JAVA_HOME=$(JDK_IMPORT_PATH) $(JDK_IMPORT_PATH)/bin/java -d$(ARCH_DATA_MODEL) -XXaltjvm=$(ALTJVM_DIR) -Dsun.java.launcher.is_altjvm=true
 generic_test:
 	@$(ECHO) "Running with: $(ALTJVM_DIR)"
-	@$(RUN_JVM) -XXaltjvm=$(ALTJVM_DIR) -Xinternalversion
-	@$(RUN_JVM) -XXaltjvm=$(ALTJVM_DIR) -showversion -help
+	@$(RUN_JVM) -Xinternalversion
+	@$(RUN_JVM) -showversion -help
 
 # C2 test targets
 test_product test_optimized test_fastdebug test_debug:
--- a/hotspot/make/bsd/makefiles/dtrace.make	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/make/bsd/makefiles/dtrace.make	Fri Feb 07 09:41:36 2014 -0800
@@ -53,6 +53,7 @@
 GENOFFS = generate$(JVMOFFS)
 
 DTRACE_SRCDIR = $(GAMMADIR)/src/os/$(Platform_os_family)/dtrace
+DTRACE_COMMON_SRCDIR = $(GAMMADIR)/src/os/posix/dtrace
 DTRACE = dtrace
 DTRACE.o = $(DTRACE).o
 
@@ -262,14 +263,14 @@
 $(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.h: $(DTRACE_COMMON_SRCDIR)/hotspot.d | $(DtraceOutDir)
+	$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_COMMON_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)/hotspot_jni.h: $(DTRACE_COMMON_SRCDIR)/hotspot_jni.d | $(DtraceOutDir)
+	$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_COMMON_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
+$(DtraceOutDir)/hs_private.h: $(DTRACE_COMMON_SRCDIR)/hs_private.d | $(DtraceOutDir)
+	$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_COMMON_SRCDIR)/hs_private.d
 
 dtrace_gen_headers: $(DtraceOutDir)/hotspot.h $(DtraceOutDir)/hotspot_jni.h $(DtraceOutDir)/hs_private.h 
 
--- a/hotspot/make/hotspot.script	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/make/hotspot.script	Fri Feb 07 09:41:36 2014 -0800
@@ -49,7 +49,7 @@
     GDB=gdb
 fi
 
-# This is the name of the gdb binary to use
+# This is the name of the dbx binary to use
 if [ ! "$DBX" ]
 then
     DBX=dbx
@@ -68,9 +68,16 @@
 # End of user changeable parameters -----------------------------------------
 #
 
+OS=`uname -s`
+
 # Make sure the paths are fully specified, i.e. they must begin with /.
 REL_MYDIR=`dirname $0`
 MYDIR=`cd $REL_MYDIR && pwd`
+case "$OS" in
+CYGWIN*)
+    MYDIR=`cygpath -m "$MYDIR"`
+    ;;
+esac
 
 #
 # Look whether the user wants to run inside gdb
@@ -102,8 +109,17 @@
     JDK=@@JDK_IMPORT_PATH@@
 fi
 
-if [ "${JDK}" = "" ]; then
-    echo "Failed to find JDK.  Either ALT_JAVA_HOME is not set or JDK_IMPORT_PATH is empty."
+if [ "${JDK}" != "" ]; then
+    case "$OS" in
+    CYGWIN*)
+        JDK=`cygpath -m "$JDK"`
+        ;;
+	esac
+
+else
+    echo "Failed to find JDK." \
+        "Either ALT_JAVA_HOME is not set or JDK_IMPORT_PATH is empty."
+    exit 1
 fi
 
 # We will set the LD_LIBRARY_PATH as follows:
@@ -120,7 +136,6 @@
 
 
 # Set up a suitable LD_LIBRARY_PATH or DYLD_LIBRARY_PATH
-OS=`uname -s`
 if [ "${OS}" = "Darwin" ]
 then
     if [ -z "$DYLD_LIBRARY_PATH" ]
@@ -141,7 +156,7 @@
     export LD_LIBRARY_PATH
 fi
 
-JPARMS="-Dsun.java.launcher=gamma -XXaltjvm=$MYDIR $@ $JAVA_ARGS";
+JPARMS="-XXaltjvm=$MYDIR -Dsun.java.launcher.is_altjvm=true $@ $JAVA_ARGS";
 
 # Locate the java launcher
 LAUNCHER=$JDK/bin/java
@@ -152,6 +167,11 @@
 
 GDBSRCDIR=$MYDIR
 BASEDIR=`cd $MYDIR/../../.. && pwd`
+case "$OS" in
+CYGWIN*)
+    BASEDIR=`cygpath -m "$BASEDIR"`
+    ;;
+esac
 
 init_gdb() {
 # Create a gdb script in case we should run inside gdb
--- a/hotspot/make/linux/makefiles/buildtree.make	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/make/linux/makefiles/buildtree.make	Fri Feb 07 09:41:36 2014 -0800
@@ -124,7 +124,7 @@
 # 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) \
 	SRCARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) VARIANT=$(VARIANT)
@@ -361,6 +361,16 @@
 	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
--- a/hotspot/make/linux/makefiles/dtrace.make	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/make/linux/makefiles/dtrace.make	Fri Feb 07 09:41:36 2014 -0800
@@ -42,18 +42,39 @@
 else
   SDT_H_FILE = /usr/include/sys/sdt.h
 endif
+
 DTRACE_ENABLED = $(shell test -f $(SDT_H_FILE) && echo $(SDT_H_FILE))
 REASON = "$(SDT_H_FILE) not found"
 
+endif # GCC version
+endif # OPENJDK
+
+
+DTRACE_COMMON_SRCDIR = $(GAMMADIR)/src/os/posix/dtrace
+DTRACE_PROG = dtrace
+DtraceOutDir = $(GENERATED)/dtracefiles
+
+$(DtraceOutDir):
+	mkdir $(DtraceOutDir)
+
+$(DtraceOutDir)/hotspot.h: $(DTRACE_COMMON_SRCDIR)/hotspot.d | $(DtraceOutDir)
+	$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_COMMON_SRCDIR)/hotspot.d
+
+$(DtraceOutDir)/hotspot_jni.h: $(DTRACE_COMMON_SRCDIR)/hotspot_jni.d | $(DtraceOutDir)
+	$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_COMMON_SRCDIR)/hotspot_jni.d
+
+$(DtraceOutDir)/hs_private.h: $(DTRACE_COMMON_SRCDIR)/hs_private.d | $(DtraceOutDir)
+	$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_COMMON_SRCDIR)/hs_private.d
+
 ifneq ($(DTRACE_ENABLED),)
-  CFLAGS += -DDTRACE_ENABLED
-endif
-
-endif
+CFLAGS += -DDTRACE_ENABLED
+dtrace_gen_headers: $(DtraceOutDir)/hotspot.h $(DtraceOutDir)/hotspot_jni.h $(DtraceOutDir)/hs_private.h
+else
+dtrace_gen_headers:
+	$(QUIETLY) echo "**NOTICE** Dtrace support disabled: $(REASON)"
 endif
 
 # Phony target used in vm.make build target to check whether enabled.
-.PHONY: dtraceCheck
 ifeq ($(DTRACE_ENABLED),)
 dtraceCheck:
 	$(QUIETLY) echo "**NOTICE** Dtrace support disabled: $(REASON)"
@@ -61,5 +82,7 @@
 dtraceCheck:
 endif
 
+.PHONY: dtrace_gen_headers dtraceCheck
+
 # It doesn't support HAVE_DTRACE_H though.
 
--- a/hotspot/make/linux/makefiles/top.make	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/make/linux/makefiles/top.make	Fri Feb 07 09:41:36 2014 -0800
@@ -80,7 +80,7 @@
 	@echo All done.
 
 # This is an explicit dependency for the sake of parallel makes.
-vm_build_preliminaries:  checks $(Cached_plat) $(AD_Files_If_Required) trace_stuff jvmti_stuff sa_stuff
+vm_build_preliminaries:  checks $(Cached_plat) $(AD_Files_If_Required) trace_stuff jvmti_stuff sa_stuff dtrace_stuff
 	@# We need a null action here, so implicit rules don't get consulted.
 
 $(Cached_plat): $(Plat_File)
@@ -102,6 +102,9 @@
 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
--- a/hotspot/make/solaris/makefiles/dtrace.make	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/make/solaris/makefiles/dtrace.make	Fri Feb 07 09:41:36 2014 -0800
@@ -55,6 +55,7 @@
 GENOFFS = generate$(JVMOFFS)
 
 DTRACE_SRCDIR = $(GAMMADIR)/src/os/$(Platform_os_family)/dtrace
+DTRACE_COMMON_SRCDIR = $(GAMMADIR)/src/os/posix/dtrace
 DTRACE = dtrace
 DTRACE.o = $(DTRACE).o
 
@@ -253,8 +254,8 @@
   endif
 endif
 
-$(DTRACE).d: $(DTRACE_SRCDIR)/hotspot.d $(DTRACE_SRCDIR)/hotspot_jni.d \
-             $(DTRACE_SRCDIR)/hs_private.d $(DTRACE_SRCDIR)/jhelper.d
+$(DTRACE).d: $(DTRACE_COMMON_SRCDIR)/hotspot.d $(DTRACE_COMMON_SRCDIR)/hotspot_jni.d \
+             $(DTRACE_COMMON_SRCDIR)/hs_private.d $(DTRACE_SRCDIR)/jhelper.d
 	$(QUIETLY) cat $^ > $@
 
 DTraced_Files = ciEnv.o \
@@ -332,14 +333,14 @@
 $(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.h: $(DTRACE_COMMON_SRCDIR)/hotspot.d | $(DtraceOutDir)
+	$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_COMMON_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)/hotspot_jni.h: $(DTRACE_COMMON_SRCDIR)/hotspot_jni.d | $(DtraceOutDir)
+	$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_COMMON_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
+$(DtraceOutDir)/hs_private.h: $(DTRACE_COMMON_SRCDIR)/hs_private.d | $(DtraceOutDir)
+	$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -h -o $@ -s $(DTRACE_COMMON_SRCDIR)/hs_private.d
 
 dtrace_gen_headers: $(DtraceOutDir)/hotspot.h $(DtraceOutDir)/hotspot_jni.h $(DtraceOutDir)/hs_private.h
 
--- a/hotspot/src/os/bsd/dtrace/hotspot.d	Wed Feb 05 08:57:33 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *  
- */
-
-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);
-  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);
-  probe class__initialization__super__failed(char*, uintptr_t, void*, intptr_t,int);
-  probe class__initialization__clinit(char*, uintptr_t, void*, intptr_t,int);
-  probe class__initialization__error(char*, uintptr_t, void*, intptr_t,int);
-  probe class__initialization__end(char*, uintptr_t, void*, intptr_t,int);
-  probe vm__init__begin();
-  probe vm__init__end();
-  probe vm__shutdown();
-  probe vmops__request(char*, uintptr_t, int);
-  probe vmops__begin(char*, uintptr_t, int);
-  probe vmops__end(char*, uintptr_t, int);
-  probe gc__begin(uintptr_t);
-  probe gc__end();
-  probe mem__pool__gc__begin(
-    char*, uintptr_t, char*, uintptr_t, 
-    uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-  probe mem__pool__gc__end(
-    char*, uintptr_t, char*, uintptr_t, 
-    uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-  probe thread__start(char*, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-  probe thread__stop(char*, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-  probe thread__sleep__begin(long long);
-  probe thread__sleep__end(int);
-  probe thread__yield();
-  probe thread__park__begin(uintptr_t, int, long long);
-  probe thread__park__end(uintptr_t);
-  probe thread__unpark(uintptr_t);
-  probe method__compile__begin(
-    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); 
-  probe compiled__method__load(
-    char*, uintptr_t, char*, uintptr_t, char*, uintptr_t, void*, uintptr_t);
-  probe compiled__method__unload(
-    char*, uintptr_t, char*, uintptr_t, char*, uintptr_t); 
-  probe monitor__contended__enter(uintptr_t, uintptr_t, char*, uintptr_t);
-  probe monitor__contended__entered(uintptr_t, uintptr_t, char*, uintptr_t);
-  probe monitor__contended__exit(uintptr_t, uintptr_t, char*, uintptr_t);
-  probe monitor__wait(uintptr_t, uintptr_t, char*, uintptr_t, uintptr_t);
-  probe monitor__waited(uintptr_t, uintptr_t, char*, uintptr_t);
-  probe monitor__notify(uintptr_t, uintptr_t, char*, uintptr_t);
-  probe monitor__notifyAll(uintptr_t, uintptr_t, char*, uintptr_t);
-
-  probe object__alloc(int, char*, uintptr_t, uintptr_t);
-  probe method__entry(
-    int, char*, int, char*, int, char*, int);
-  probe method__return(
-    int, char*, int, char*, int, char*, int);
-};
-
-#pragma D attributes Evolving/Evolving/Common provider hotspot provider
-#pragma D attributes Private/Private/Unknown provider hotspot module
-#pragma D attributes Private/Private/Unknown provider hotspot function
-#pragma D attributes Evolving/Evolving/Common provider hotspot name
-#pragma D attributes Evolving/Evolving/Common provider hotspot args
--- a/hotspot/src/os/bsd/dtrace/hotspot_jni.d	Wed Feb 05 08:57:33 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,506 +0,0 @@
-/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *  
- */
-
-provider hotspot_jni {
-  probe AllocObject__entry(void*, void*);
-  probe AllocObject__return(void*);
-  probe AttachCurrentThreadAsDaemon__entry(void*, void**, void*);
-  probe AttachCurrentThreadAsDaemon__return(uint32_t);
-  probe AttachCurrentThread__entry(void*, void**, void*);
-  probe AttachCurrentThread__return(uint32_t);
-  probe CallBooleanMethodA__entry(void*, void*, uintptr_t);
-  probe CallBooleanMethodA__return(uintptr_t);
-  probe CallBooleanMethod__entry(void*, void*, uintptr_t);
-  probe CallBooleanMethod__return(uintptr_t);
-  probe CallBooleanMethodV__entry(void*, void*, uintptr_t);
-  probe CallBooleanMethodV__return(uintptr_t);
-  probe CallByteMethodA__entry(void*, void*, uintptr_t);
-  probe CallByteMethodA__return(char);
-  probe CallByteMethod__entry(void*, void*, uintptr_t);
-  probe CallByteMethod__return(char);
-  probe CallByteMethodV__entry(void*, void*, uintptr_t);
-  probe CallByteMethodV__return(char);
-  probe CallCharMethodA__entry(void*, void*, uintptr_t);
-  probe CallCharMethodA__return(uint16_t);
-  probe CallCharMethod__entry(void*, void*, uintptr_t);
-  probe CallCharMethod__return(uint16_t);
-  probe CallCharMethodV__entry(void*, void*, uintptr_t);
-  probe CallCharMethodV__return(uint16_t);
-  probe CallDoubleMethodA__entry(void*, void*, uintptr_t);
-  probe CallDoubleMethodA__return();
-  probe CallDoubleMethod__entry(void*, void*, uintptr_t);
-  probe CallDoubleMethod__return();
-  probe CallDoubleMethodV__entry(void*, void*, uintptr_t);
-  probe CallDoubleMethodV__return();
-  probe CallFloatMethodA__entry(void*, void*, uintptr_t);
-  probe CallFloatMethodA__return();
-  probe CallFloatMethod__entry(void*, void*, uintptr_t);
-  probe CallFloatMethod__return();
-  probe CallFloatMethodV__entry(void*, void*, uintptr_t);
-  probe CallFloatMethodV__return();
-  probe CallIntMethodA__entry(void*, void*, uintptr_t);
-  probe CallIntMethodA__return(uint32_t);
-  probe CallIntMethod__entry(void*, void*, uintptr_t);
-  probe CallIntMethod__return(uint32_t);
-  probe CallIntMethodV__entry(void*, void*, uintptr_t);
-  probe CallIntMethodV__return(uint32_t);
-  probe CallLongMethodA__entry(void*, void*, uintptr_t);
-  probe CallLongMethodA__return(uintptr_t);
-  probe CallLongMethod__entry(void*, void*, uintptr_t);
-  probe CallLongMethod__return(uintptr_t);
-  probe CallLongMethodV__entry(void*, void*, uintptr_t);
-  probe CallLongMethodV__return(uintptr_t);
-  probe CallNonvirtualBooleanMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualBooleanMethodA__return(uintptr_t);
-  probe CallNonvirtualBooleanMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualBooleanMethod__return(uintptr_t);
-  probe CallNonvirtualBooleanMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualBooleanMethodV__return(uintptr_t);
-  probe CallNonvirtualByteMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualByteMethodA__return(char);
-  probe CallNonvirtualByteMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualByteMethod__return(char);
-  probe CallNonvirtualByteMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualByteMethodV__return(char);
-  probe CallNonvirtualCharMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualCharMethodA__return(uint16_t);
-  probe CallNonvirtualCharMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualCharMethod__return(uint16_t);
-  probe CallNonvirtualCharMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualCharMethodV__return(uint16_t);
-  probe CallNonvirtualDoubleMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualDoubleMethodA__return();
-  probe CallNonvirtualDoubleMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualDoubleMethod__return();
-  probe CallNonvirtualDoubleMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualDoubleMethodV__return();
-  probe CallNonvirtualFloatMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualFloatMethodA__return();
-  probe CallNonvirtualFloatMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualFloatMethod__return();
-  probe CallNonvirtualFloatMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualFloatMethodV__return();
-  probe CallNonvirtualIntMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualIntMethodA__return(uint32_t);
-  probe CallNonvirtualIntMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualIntMethod__return(uint32_t);
-  probe CallNonvirtualIntMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualIntMethodV__return(uint32_t);
-  probe CallNonvirtualLongMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualLongMethodA__return(uintptr_t);
-  probe CallNonvirtualLongMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualLongMethod__return(uintptr_t);
-  probe CallNonvirtualLongMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualLongMethodV__return(uintptr_t);
-  probe CallNonvirtualObjectMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualObjectMethodA__return(void*);
-  probe CallNonvirtualObjectMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualObjectMethod__return(void*);
-  probe CallNonvirtualObjectMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualObjectMethodV__return(void*);
-  probe CallNonvirtualShortMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualShortMethodA__return(uint16_t);
-  probe CallNonvirtualShortMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualShortMethod__return(uint16_t);
-  probe CallNonvirtualShortMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualShortMethodV__return(uint16_t);
-  probe CallNonvirtualVoidMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualVoidMethodA__return();
-  probe CallNonvirtualVoidMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualVoidMethod__return();
-  probe CallNonvirtualVoidMethodV__entry(void*, void*, void*, uintptr_t);  
-  probe CallNonvirtualVoidMethodV__return();
-  probe CallObjectMethodA__entry(void*, void*, uintptr_t);
-  probe CallObjectMethodA__return(void*);
-  probe CallObjectMethod__entry(void*, void*, uintptr_t);
-  probe CallObjectMethod__return(void*);
-  probe CallObjectMethodV__entry(void*, void*, uintptr_t);
-  probe CallObjectMethodV__return(void*);
-  probe CallShortMethodA__entry(void*, void*, uintptr_t);
-  probe CallShortMethodA__return(uint16_t);
-  probe CallShortMethod__entry(void*, void*, uintptr_t);
-  probe CallShortMethod__return(uint16_t);
-  probe CallShortMethodV__entry(void*, void*, uintptr_t);
-  probe CallShortMethodV__return(uint16_t);
-  probe CallStaticBooleanMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticBooleanMethodA__return(uintptr_t);
-  probe CallStaticBooleanMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticBooleanMethod__return(uintptr_t);
-  probe CallStaticBooleanMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticBooleanMethodV__return(uintptr_t);
-  probe CallStaticByteMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticByteMethodA__return(char);
-  probe CallStaticByteMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticByteMethod__return(char);
-  probe CallStaticByteMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticByteMethodV__return(char);
-  probe CallStaticCharMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticCharMethodA__return(uint16_t);
-  probe CallStaticCharMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticCharMethod__return(uint16_t);
-  probe CallStaticCharMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticCharMethodV__return(uint16_t);
-  probe CallStaticDoubleMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticDoubleMethodA__return();
-  probe CallStaticDoubleMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticDoubleMethod__return();
-  probe CallStaticDoubleMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticDoubleMethodV__return();
-  probe CallStaticFloatMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticFloatMethodA__return();
-  probe CallStaticFloatMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticFloatMethod__return();
-  probe CallStaticFloatMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticFloatMethodV__return();
-  probe CallStaticIntMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticIntMethodA__return(uint32_t);
-  probe CallStaticIntMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticIntMethod__return(uint32_t);
-  probe CallStaticIntMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticIntMethodV__return(uint32_t);
-  probe CallStaticLongMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticLongMethodA__return(uintptr_t);
-  probe CallStaticLongMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticLongMethod__return(uintptr_t);
-  probe CallStaticLongMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticLongMethodV__return(uintptr_t);
-  probe CallStaticObjectMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticObjectMethodA__return(void*);
-  probe CallStaticObjectMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticObjectMethod__return(void*);
-  probe CallStaticObjectMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticObjectMethodV__return(void*);
-  probe CallStaticShortMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticShortMethodA__return(uint16_t);
-  probe CallStaticShortMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticShortMethod__return(uint16_t);
-  probe CallStaticShortMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticShortMethodV__return(uint16_t);
-  probe CallStaticVoidMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticVoidMethodA__return();
-  probe CallStaticVoidMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticVoidMethod__return(); 
-  probe CallStaticVoidMethodV__entry(void*, void*, uintptr_t);  
-  probe CallStaticVoidMethodV__return();
-  probe CallVoidMethodA__entry(void*, void*, uintptr_t);  
-  probe CallVoidMethodA__return();
-  probe CallVoidMethod__entry(void*, void*, uintptr_t);  
-  probe CallVoidMethod__return(); 
-  probe CallVoidMethodV__entry(void*, void*, uintptr_t);  
-  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__return(void*);
-  probe DeleteGlobalRef__entry(void*, void*);
-  probe DeleteGlobalRef__return();
-  probe DeleteLocalRef__entry(void*, void*);
-  probe DeleteLocalRef__return();
-  probe DeleteWeakGlobalRef__entry(void*, void*);
-  probe DeleteWeakGlobalRef__return();
-  probe DestroyJavaVM__entry(void*);
-  probe DestroyJavaVM__return(uint32_t);
-  probe DetachCurrentThread__entry(void*);
-  probe DetachCurrentThread__return(uint32_t);
-  probe EnsureLocalCapacity__entry(void*, uint32_t);
-  probe EnsureLocalCapacity__return(uint32_t);
-  probe ExceptionCheck__entry(void*);
-  probe ExceptionCheck__return(uintptr_t);
-  probe ExceptionClear__entry(void*);
-  probe ExceptionClear__return();
-  probe ExceptionDescribe__entry(void*);  
-  probe ExceptionDescribe__return();
-  probe ExceptionOccurred__entry(void*);
-  probe ExceptionOccurred__return(void*);
-  probe FatalError__entry(void* env, const char*);
-  probe FindClass__entry(void*, const char*);
-  probe FindClass__return(void*);
-  probe FromReflectedField__entry(void*, void*);
-  probe FromReflectedField__return(uintptr_t);
-  probe FromReflectedMethod__entry(void*, void*);
-  probe FromReflectedMethod__return(uintptr_t);
-  probe GetArrayLength__entry(void*, void*);
-  probe GetArrayLength__return(uintptr_t);
-  probe GetBooleanArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetBooleanArrayElements__return(uintptr_t*);
-  probe GetBooleanArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, uintptr_t*);
-  probe GetBooleanArrayRegion__return();
-  probe GetBooleanField__entry(void*, void*, uintptr_t);
-  probe GetBooleanField__return(uintptr_t);
-  probe GetByteArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetByteArrayElements__return(char*);
-  probe GetByteArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, char*);
-  probe GetByteArrayRegion__return();
-  probe GetByteField__entry(void*, void*, uintptr_t);
-  probe GetByteField__return(char);
-  probe GetCharArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetCharArrayElements__return(uint16_t*);
-  probe GetCharArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, uint16_t*);
-  probe GetCharArrayRegion__return();
-  probe GetCharField__entry(void*, void*, uintptr_t);
-  probe GetCharField__return(uint16_t);
-  probe GetCreatedJavaVMs__entry(void**, uintptr_t, uintptr_t*);
-  probe GetCreatedJavaVMs__return(uintptr_t);
-  probe GetDefaultJavaVMInitArgs__entry(void*);
-  probe GetDefaultJavaVMInitArgs__return(uint32_t);
-  probe GetDirectBufferAddress__entry(void*, void*);
-  probe GetDirectBufferAddress__return(void*);
-  probe GetDirectBufferCapacity__entry(void*, void*);
-  probe GetDirectBufferCapacity__return(uintptr_t);
-  probe GetDoubleArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetDoubleArrayElements__return(double*);
-  probe GetDoubleArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, double*);
-  probe GetDoubleArrayRegion__return();
-  probe GetDoubleField__entry(void*, void*, uintptr_t);
-  probe GetDoubleField__return();
-  probe GetEnv__entry(void*, void*, uint32_t);
-  probe GetEnv__return(uint32_t);
-  probe GetFieldID__entry(void*, void*, const char*, const char*);
-  probe GetFieldID__return(uintptr_t);
-  probe GetFloatArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetFloatArrayElements__return(float*);
-  probe GetFloatArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, float*);
-  probe GetFloatArrayRegion__return();
-  probe GetFloatField__entry(void*, void*, uintptr_t);
-  probe GetFloatField__return();
-  probe GetIntArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetIntArrayElements__return(uint32_t*);
-  probe GetIntArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, uint32_t*);
-  probe GetIntArrayRegion__return();
-  probe GetIntField__entry(void*, void*, uintptr_t);
-  probe GetIntField__return(uint32_t);
-  probe GetJavaVM__entry(void*, void**);
-  probe GetJavaVM__return(uint32_t);
-  probe GetLongArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetLongArrayElements__return(uintptr_t*);
-  probe GetLongArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, uintptr_t*);
-  probe GetLongArrayRegion__return();
-  probe GetLongField__entry(void*, void*, uintptr_t);
-  probe GetLongField__return(uintptr_t);
-  probe GetMethodID__entry(void*, void*, const char*, const char*);
-  probe GetMethodID__return(uintptr_t);
-  probe GetObjectArrayElement__entry(void*, void*, uintptr_t);
-  probe GetObjectArrayElement__return(void*);
-  probe GetObjectClass__entry(void*, void*);
-  probe GetObjectClass__return(void*);
-  probe GetObjectField__entry(void*, void*, uintptr_t);
-  probe GetObjectField__return(void*);
-  probe GetObjectRefType__entry(void*, void*);
-  probe GetObjectRefType__return(void*);
-  probe GetPrimitiveArrayCritical__entry(void*, void*, uintptr_t*);
-  probe GetPrimitiveArrayCritical__return(void*);
-  probe GetShortArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetShortArrayElements__return(uint16_t*);
-  probe GetShortArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, uint16_t*);
-  probe GetShortArrayRegion__return();
-  probe GetShortField__entry(void*, void*, uintptr_t);
-  probe GetShortField__return(uint16_t);
-  probe GetStaticBooleanField__entry(void*, void*, uintptr_t);
-  probe GetStaticBooleanField__return(uintptr_t);
-  probe GetStaticByteField__entry(void*, void*, uintptr_t);
-  probe GetStaticByteField__return(char);
-  probe GetStaticCharField__entry(void*, void*, uintptr_t);
-  probe GetStaticCharField__return(uint16_t);
-  probe GetStaticDoubleField__entry(void*, void*, uintptr_t);
-  probe GetStaticDoubleField__return();
-  probe GetStaticFieldID__entry(void*, void*, const char*, const char*);
-  probe GetStaticFieldID__return(uintptr_t);
-  probe GetStaticFloatField__entry(void*, void*, uintptr_t);
-  probe GetStaticFloatField__return();
-  probe GetStaticIntField__entry(void*, void*, uintptr_t);
-  probe GetStaticIntField__return(uint32_t);
-  probe GetStaticLongField__entry(void*, void*, uintptr_t);
-  probe GetStaticLongField__return(uintptr_t);
-  probe GetStaticMethodID__entry(void*, void*, const char*, const char*);
-  probe GetStaticMethodID__return(uintptr_t);
-  probe GetStaticObjectField__entry(void*, void*, uintptr_t);
-  probe GetStaticObjectField__return(void*);
-  probe GetStaticShortField__entry(void*, void*, uintptr_t);
-  probe GetStaticShortField__return(uint16_t);
-  probe GetStringChars__entry(void*, void*, uintptr_t*);
-  probe GetStringChars__return(const uint16_t*);
-  probe GetStringCritical__entry(void*, void*, uintptr_t*);
-  probe GetStringCritical__return(const uint16_t*);
-  probe GetStringLength__entry(void*, void*);
-  probe GetStringLength__return(uintptr_t);
-  probe GetStringRegion__entry(void*, void*, uintptr_t, uintptr_t, uint16_t*);
-  probe GetStringRegion__return();
-  probe GetStringUTFChars__entry(void*, void*, uintptr_t*);
-  probe GetStringUTFChars__return(const char*);
-  probe GetStringUTFLength__entry(void*, void*);
-  probe GetStringUTFLength__return(uintptr_t);
-  probe GetStringUTFRegion__entry(void*, void*, uintptr_t, uintptr_t, char*);
-  probe GetStringUTFRegion__return();
-  probe GetSuperclass__entry(void*, void*);
-  probe GetSuperclass__return(void*);
-  probe GetVersion__entry(void*);
-  probe GetVersion__return(uint32_t);
-  probe IsAssignableFrom__entry(void*, void*, void*);
-  probe IsAssignableFrom__return(uintptr_t);
-  probe IsInstanceOf__entry(void*, void*, void*);
-  probe IsInstanceOf__return(uintptr_t);
-  probe IsSameObject__entry(void*, void*, void*);
-  probe IsSameObject__return(uintptr_t);
-  probe MonitorEnter__entry(void*, void*);
-  probe MonitorEnter__return(uint32_t);
-  probe MonitorExit__entry(void*, void*);
-  probe MonitorExit__return(uint32_t);
-  probe NewBooleanArray__entry(void*, uintptr_t);
-  probe NewBooleanArray__return(void*);
-  probe NewByteArray__entry(void*, uintptr_t);
-  probe NewByteArray__return(void*);
-  probe NewCharArray__entry(void*, uintptr_t);
-  probe NewCharArray__return(void*);
-  probe NewDirectByteBuffer__entry(void*, void*, uintptr_t);
-  probe NewDirectByteBuffer__return(void*);
-  probe NewDoubleArray__entry(void*, uintptr_t);
-  probe NewDoubleArray__return(void*);
-  probe NewFloatArray__entry(void*, uintptr_t);
-  probe NewFloatArray__return(void*);
-  probe NewGlobalRef__entry(void*, void*);
-  probe NewGlobalRef__return(void*);
-  probe NewIntArray__entry(void*, uintptr_t);
-  probe NewIntArray__return(void*);
-  probe NewLocalRef__entry(void*, void*);
-  probe NewLocalRef__return(void*);
-  probe NewLongArray__entry(void*, uintptr_t);
-  probe NewLongArray__return(void*);
-  probe NewObjectA__entry(void*, void*, uintptr_t);  
-  probe NewObjectA__return(void*);
-  probe NewObjectArray__entry(void*, uintptr_t, void*, void*);
-  probe NewObjectArray__return(void*);
-  probe NewObject__entry(void*, void*, uintptr_t); 
-  probe NewObject__return(void*);
-  probe NewObjectV__entry(void*, void*, uintptr_t);  
-  probe NewObjectV__return(void*);
-  probe NewShortArray__entry(void*, uintptr_t);
-  probe NewShortArray__return(void*);
-  probe NewString__entry(void*, const uint16_t*, uintptr_t);
-  probe NewString__return(void*);
-  probe NewStringUTF__entry(void*, const char*);
-  probe NewStringUTF__return(void*);
-  probe NewWeakGlobalRef__entry(void*, void*);
-  probe NewWeakGlobalRef__return(void*);
-  probe PopLocalFrame__entry(void*, void*);
-  probe PopLocalFrame__return(void*);
-  probe PushLocalFrame__entry(void*, uint32_t);
-  probe PushLocalFrame__return(uint32_t);
-  probe RegisterNatives__entry(void*, void*, const void*, uint32_t);  
-  probe RegisterNatives__return(uint32_t);
-  probe ReleaseBooleanArrayElements__entry(void*, void*, uintptr_t*, uint32_t);
-  probe ReleaseBooleanArrayElements__return();
-  probe ReleaseByteArrayElements__entry(void*, void*, char*, uint32_t);
-  probe ReleaseByteArrayElements__return();
-  probe ReleaseCharArrayElements__entry(void*, void*, uint16_t*, uint32_t);
-  probe ReleaseCharArrayElements__return();
-  probe ReleaseDoubleArrayElements__entry(void*, void*, double*, uint32_t);
-  probe ReleaseDoubleArrayElements__return();
-  probe ReleaseFloatArrayElements__entry(void*, void*, float*, uint32_t);
-  probe ReleaseFloatArrayElements__return();
-  probe ReleaseIntArrayElements__entry(void*, void*, uint32_t*, uint32_t);
-  probe ReleaseIntArrayElements__return();
-  probe ReleaseLongArrayElements__entry(void*, void*, uintptr_t*, uint32_t);
-  probe ReleaseLongArrayElements__return();
-  probe ReleasePrimitiveArrayCritical__entry(void*, void*, void*, uint32_t);
-  probe ReleasePrimitiveArrayCritical__return();
-  probe ReleaseShortArrayElements__entry(void*, void*, uint16_t*, uint32_t);
-  probe ReleaseShortArrayElements__return();
-  probe ReleaseStringChars__entry(void*, void*, const uint16_t*);
-  probe ReleaseStringChars__return();
-  probe ReleaseStringCritical__entry(void*, void*, const uint16_t*);
-  probe ReleaseStringCritical__return();
-  probe ReleaseStringUTFChars__entry(void*, void*, const char*);
-  probe ReleaseStringUTFChars__return();
-  probe SetBooleanArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const uintptr_t*);
-  probe SetBooleanArrayRegion__return();
-  probe SetBooleanField__entry(void*, void*, uintptr_t, uintptr_t);
-  probe SetBooleanField__return();
-  probe SetByteArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const char*);
-  probe SetByteArrayRegion__return();
-  probe SetByteField__entry(void*, void*, uintptr_t, char);
-  probe SetByteField__return();
-  probe SetCharArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const uint16_t*);
-  probe SetCharArrayRegion__return();
-  probe SetCharField__entry(void*, void*, uintptr_t, uint16_t);
-  probe SetCharField__return();
-  probe SetDoubleArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const double*);
-  probe SetDoubleArrayRegion__return();
-  probe SetDoubleField__entry(void*, void*, uintptr_t);
-  probe SetDoubleField__return();
-  probe SetFloatArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const float*);
-  probe SetFloatArrayRegion__return();
-  probe SetFloatField__entry(void*, void*, uintptr_t);
-  probe SetFloatField__return();
-  probe SetIntArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const uint32_t*);
-  probe SetIntArrayRegion__return();
-  probe SetIntField__entry(void*, void*, uintptr_t, uint32_t);
-  probe SetIntField__return();
-  probe SetLongArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const uintptr_t*);
-  probe SetLongArrayRegion__return();
-  probe SetLongField__entry(void*, void*, uintptr_t, uintptr_t);
-  probe SetLongField__return();
-  probe SetObjectArrayElement__entry(void*, void*, uintptr_t, void*);
-  probe SetObjectArrayElement__return();
-  probe SetObjectField__entry(void*, void*, uintptr_t, void*);
-  probe SetObjectField__return();
-  probe SetShortArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const uint16_t*);
-  probe SetShortArrayRegion__return();
-  probe SetShortField__entry(void*, void*, uintptr_t, uint16_t);
-  probe SetShortField__return();
-  probe SetStaticBooleanField__entry(void*, void*, uintptr_t, uintptr_t);
-  probe SetStaticBooleanField__return();
-  probe SetStaticByteField__entry(void*, void*, uintptr_t, char);
-  probe SetStaticByteField__return();
-  probe SetStaticCharField__entry(void*, void*, uintptr_t, uint16_t);
-  probe SetStaticCharField__return();
-  probe SetStaticDoubleField__entry(void*, void*, uintptr_t);
-  probe SetStaticDoubleField__return();
-  probe SetStaticFloatField__entry(void*, void*, uintptr_t);
-  probe SetStaticFloatField__return();
-  probe SetStaticIntField__entry(void*, void*, uintptr_t, uint32_t);
-  probe SetStaticIntField__return();
-  probe SetStaticLongField__entry(void*, void*, uintptr_t, uintptr_t);
-  probe SetStaticLongField__return();
-  probe SetStaticObjectField__entry(void*, void*, uintptr_t, void*);
-  probe SetStaticObjectField__return();
-  probe SetStaticShortField__entry(void*, void*, uintptr_t, uint16_t);
-  probe SetStaticShortField__return();
-  probe Throw__entry(void*, void*);
-  probe Throw__return(intptr_t);
-  probe ThrowNew__entry(void*, void*, const char*);  
-  probe ThrowNew__return(intptr_t);  
-  probe ToReflectedField__entry(void*, void*, uintptr_t, uintptr_t);
-  probe ToReflectedField__return(void*);
-  probe ToReflectedMethod__entry(void*, void*, uintptr_t, uintptr_t);
-  probe ToReflectedMethod__return(void*);
-  probe UnregisterNatives__entry(void*, void*);  
-  probe UnregisterNatives__return(uint32_t);
-};
-
-#pragma D attributes Standard/Standard/Common provider hotspot_jni provider
-#pragma D attributes Private/Private/Unknown provider hotspot_jni module
-#pragma D attributes Private/Private/Unknown provider hotspot_jni function
-#pragma D attributes Standard/Standard/Common provider hotspot_jni name
-#pragma D attributes Evolving/Evolving/Common provider hotspot_jni args
-
--- a/hotspot/src/os/bsd/dtrace/hs_private.d	Wed Feb 05 08:57:33 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *  
- */
-
-provider hs_private {
-  probe hashtable__new_entry(void*, uint32_t, uintptr_t, void*); 
-  probe safepoint__begin();
-  probe safepoint__end();
-  probe cms__initmark__begin();
-  probe cms__initmark__end();
-  probe cms__remark__begin();
-  probe cms__remark__end();
-};
-
-#pragma D attributes Private/Private/Common provider hs_private provider
-#pragma D attributes Private/Private/Unknown provider hs_private module
-#pragma D attributes Private/Private/Unknown provider hs_private function
-#pragma D attributes Private/Private/Common provider hs_private name
-#pragma D attributes Private/Private/Common provider hs_private args
-
--- a/hotspot/src/os/bsd/vm/os_bsd.cpp	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/src/os/bsd/vm/os_bsd.cpp	Fri Feb 07 09:41:36 2014 -0800
@@ -1788,12 +1788,14 @@
   if (rp == NULL)
     return;
 
-  if (Arguments::created_by_gamma_launcher()) {
-    // Support for the gamma launcher.  Typical value for buf is
-    // "<JAVA_HOME>/jre/lib/<arch>/<vmtype>/libjvm".  If "/jre/lib/" appears at
-    // the right place in the string, then assume we are installed in a JDK and
-    // we're done.  Otherwise, check for a JAVA_HOME environment variable and
-    // construct a path to the JVM being overridden.
+  if (Arguments::sun_java_launcher_is_altjvm()) {
+    // Support for the java launcher's '-XXaltjvm=<path>' option. Typical
+    // value for buf is "<JAVA_HOME>/jre/lib/<arch>/<vmtype>/libjvm.so"
+    // or "<JAVA_HOME>/jre/lib/<vmtype>/libjvm.dylib". If "/jre/lib/"
+    // appears at the right place in the string, then assume we are
+    // installed in a JDK and we're done. Otherwise, check for a
+    // JAVA_HOME environment variable and construct a path to the JVM
+    // being overridden.
 
     const char *p = buf + strlen(buf) - 1;
     for (int count = 0; p > buf && count < 5; ++count) {
--- a/hotspot/src/os/linux/vm/os_linux.cpp	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/src/os/linux/vm/os_linux.cpp	Fri Feb 07 09:41:36 2014 -0800
@@ -2371,13 +2371,14 @@
   if (rp == NULL)
     return;
 
-  if (Arguments::created_by_gamma_launcher()) {
-    // Support for the gamma launcher.  Typical value for buf is
-    // "<JAVA_HOME>/jre/lib/<arch>/<vmtype>/libjvm.so".  If "/jre/lib/" appears at
-    // the right place in the string, then assume we are installed in a JDK and
-    // we're done.  Otherwise, check for a JAVA_HOME environment variable and fix
-    // up the path so it looks like libjvm.so is installed there (append a
-    // fake suffix hotspot/libjvm.so).
+  if (Arguments::sun_java_launcher_is_altjvm()) {
+    // Support for the java launcher's '-XXaltjvm=<path>' option. Typical
+    // value for buf is "<JAVA_HOME>/jre/lib/<arch>/<vmtype>/libjvm.so".
+    // If "/jre/lib/" appears at the right place in the string, then
+    // assume we are installed in a JDK and we're done. Otherwise, check
+    // for a JAVA_HOME environment variable and fix up the path so it
+    // looks like libjvm.so is installed there (append a fake suffix
+    // hotspot/libjvm.so).
     const char *p = buf + strlen(buf) - 1;
     for (int count = 0; p > buf && count < 5; ++count) {
       for (--p; p > buf && *p != '/'; --p)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/os/posix/dtrace/hotspot.d	Fri Feb 07 09:41:36 2014 -0800
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *  
+ */
+
+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);
+  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);
+  probe class__initialization__super__failed(char*, uintptr_t, void*, intptr_t,int);
+  probe class__initialization__clinit(char*, uintptr_t, void*, intptr_t,int);
+  probe class__initialization__error(char*, uintptr_t, void*, intptr_t,int);
+  probe class__initialization__end(char*, uintptr_t, void*, intptr_t,int);
+  probe vm__init__begin();
+  probe vm__init__end();
+  probe vm__shutdown();
+  probe vmops__request(char*, uintptr_t, int);
+  probe vmops__begin(char*, uintptr_t, int);
+  probe vmops__end(char*, uintptr_t, int);
+  probe gc__begin(uintptr_t);
+  probe gc__end();
+  probe mem__pool__gc__begin(
+    char*, uintptr_t, char*, uintptr_t, 
+    uintptr_t, uintptr_t, uintptr_t, uintptr_t);
+  probe mem__pool__gc__end(
+    char*, uintptr_t, char*, uintptr_t, 
+    uintptr_t, uintptr_t, uintptr_t, uintptr_t);
+  probe thread__start(char*, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
+  probe thread__stop(char*, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
+  probe thread__sleep__begin(long long);
+  probe thread__sleep__end(int);
+  probe thread__yield();
+  probe thread__park__begin(uintptr_t, int, long long);
+  probe thread__park__end(uintptr_t);
+  probe thread__unpark(uintptr_t);
+  probe method__compile__begin(
+    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); 
+  probe compiled__method__load(
+    char*, uintptr_t, char*, uintptr_t, char*, uintptr_t, void*, uintptr_t);
+  probe compiled__method__unload(
+    char*, uintptr_t, char*, uintptr_t, char*, uintptr_t); 
+  probe monitor__contended__enter(uintptr_t, uintptr_t, char*, uintptr_t);
+  probe monitor__contended__entered(uintptr_t, uintptr_t, char*, uintptr_t);
+  probe monitor__contended__exit(uintptr_t, uintptr_t, char*, uintptr_t);
+  probe monitor__wait(uintptr_t, uintptr_t, char*, uintptr_t, uintptr_t);
+  probe monitor__waited(uintptr_t, uintptr_t, char*, uintptr_t);
+  probe monitor__notify(uintptr_t, uintptr_t, char*, uintptr_t);
+  probe monitor__notifyAll(uintptr_t, uintptr_t, char*, uintptr_t);
+
+  probe object__alloc(int, char*, uintptr_t, uintptr_t);
+  probe method__entry(
+    int, char*, int, char*, int, char*, int);
+  probe method__return(
+    int, char*, int, char*, int, char*, int);
+};
+
+#pragma D attributes Evolving/Evolving/Common provider hotspot provider
+#pragma D attributes Private/Private/Unknown provider hotspot module
+#pragma D attributes Private/Private/Unknown provider hotspot function
+#pragma D attributes Evolving/Evolving/Common provider hotspot name
+#pragma D attributes Evolving/Evolving/Common provider hotspot args
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/os/posix/dtrace/hotspot_jni.d	Fri Feb 07 09:41:36 2014 -0800
@@ -0,0 +1,506 @@
+/*
+ * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *  
+ */
+
+provider hotspot_jni {
+  probe AllocObject__entry(void*, void*);
+  probe AllocObject__return(void*);
+  probe AttachCurrentThreadAsDaemon__entry(void*, void**, void*);
+  probe AttachCurrentThreadAsDaemon__return(uint32_t);
+  probe AttachCurrentThread__entry(void*, void**, void*);
+  probe AttachCurrentThread__return(uint32_t);
+  probe CallBooleanMethodA__entry(void*, void*, uintptr_t);
+  probe CallBooleanMethodA__return(uintptr_t);
+  probe CallBooleanMethod__entry(void*, void*, uintptr_t);
+  probe CallBooleanMethod__return(uintptr_t);
+  probe CallBooleanMethodV__entry(void*, void*, uintptr_t);
+  probe CallBooleanMethodV__return(uintptr_t);
+  probe CallByteMethodA__entry(void*, void*, uintptr_t);
+  probe CallByteMethodA__return(char);
+  probe CallByteMethod__entry(void*, void*, uintptr_t);
+  probe CallByteMethod__return(char);
+  probe CallByteMethodV__entry(void*, void*, uintptr_t);
+  probe CallByteMethodV__return(char);
+  probe CallCharMethodA__entry(void*, void*, uintptr_t);
+  probe CallCharMethodA__return(uint16_t);
+  probe CallCharMethod__entry(void*, void*, uintptr_t);
+  probe CallCharMethod__return(uint16_t);
+  probe CallCharMethodV__entry(void*, void*, uintptr_t);
+  probe CallCharMethodV__return(uint16_t);
+  probe CallDoubleMethodA__entry(void*, void*, uintptr_t);
+  probe CallDoubleMethodA__return();
+  probe CallDoubleMethod__entry(void*, void*, uintptr_t);
+  probe CallDoubleMethod__return();
+  probe CallDoubleMethodV__entry(void*, void*, uintptr_t);
+  probe CallDoubleMethodV__return();
+  probe CallFloatMethodA__entry(void*, void*, uintptr_t);
+  probe CallFloatMethodA__return();
+  probe CallFloatMethod__entry(void*, void*, uintptr_t);
+  probe CallFloatMethod__return();
+  probe CallFloatMethodV__entry(void*, void*, uintptr_t);
+  probe CallFloatMethodV__return();
+  probe CallIntMethodA__entry(void*, void*, uintptr_t);
+  probe CallIntMethodA__return(uint32_t);
+  probe CallIntMethod__entry(void*, void*, uintptr_t);
+  probe CallIntMethod__return(uint32_t);
+  probe CallIntMethodV__entry(void*, void*, uintptr_t);
+  probe CallIntMethodV__return(uint32_t);
+  probe CallLongMethodA__entry(void*, void*, uintptr_t);
+  probe CallLongMethodA__return(uintptr_t);
+  probe CallLongMethod__entry(void*, void*, uintptr_t);
+  probe CallLongMethod__return(uintptr_t);
+  probe CallLongMethodV__entry(void*, void*, uintptr_t);
+  probe CallLongMethodV__return(uintptr_t);
+  probe CallNonvirtualBooleanMethodA__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualBooleanMethodA__return(uintptr_t);
+  probe CallNonvirtualBooleanMethod__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualBooleanMethod__return(uintptr_t);
+  probe CallNonvirtualBooleanMethodV__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualBooleanMethodV__return(uintptr_t);
+  probe CallNonvirtualByteMethodA__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualByteMethodA__return(char);
+  probe CallNonvirtualByteMethod__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualByteMethod__return(char);
+  probe CallNonvirtualByteMethodV__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualByteMethodV__return(char);
+  probe CallNonvirtualCharMethodA__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualCharMethodA__return(uint16_t);
+  probe CallNonvirtualCharMethod__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualCharMethod__return(uint16_t);
+  probe CallNonvirtualCharMethodV__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualCharMethodV__return(uint16_t);
+  probe CallNonvirtualDoubleMethodA__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualDoubleMethodA__return();
+  probe CallNonvirtualDoubleMethod__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualDoubleMethod__return();
+  probe CallNonvirtualDoubleMethodV__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualDoubleMethodV__return();
+  probe CallNonvirtualFloatMethodA__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualFloatMethodA__return();
+  probe CallNonvirtualFloatMethod__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualFloatMethod__return();
+  probe CallNonvirtualFloatMethodV__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualFloatMethodV__return();
+  probe CallNonvirtualIntMethodA__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualIntMethodA__return(uint32_t);
+  probe CallNonvirtualIntMethod__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualIntMethod__return(uint32_t);
+  probe CallNonvirtualIntMethodV__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualIntMethodV__return(uint32_t);
+  probe CallNonvirtualLongMethodA__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualLongMethodA__return(uintptr_t);
+  probe CallNonvirtualLongMethod__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualLongMethod__return(uintptr_t);
+  probe CallNonvirtualLongMethodV__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualLongMethodV__return(uintptr_t);
+  probe CallNonvirtualObjectMethodA__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualObjectMethodA__return(void*);
+  probe CallNonvirtualObjectMethod__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualObjectMethod__return(void*);
+  probe CallNonvirtualObjectMethodV__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualObjectMethodV__return(void*);
+  probe CallNonvirtualShortMethodA__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualShortMethodA__return(uint16_t);
+  probe CallNonvirtualShortMethod__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualShortMethod__return(uint16_t);
+  probe CallNonvirtualShortMethodV__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualShortMethodV__return(uint16_t);
+  probe CallNonvirtualVoidMethodA__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualVoidMethodA__return();
+  probe CallNonvirtualVoidMethod__entry(void*, void*, void*, uintptr_t);
+  probe CallNonvirtualVoidMethod__return();
+  probe CallNonvirtualVoidMethodV__entry(void*, void*, void*, uintptr_t);  
+  probe CallNonvirtualVoidMethodV__return();
+  probe CallObjectMethodA__entry(void*, void*, uintptr_t);
+  probe CallObjectMethodA__return(void*);
+  probe CallObjectMethod__entry(void*, void*, uintptr_t);
+  probe CallObjectMethod__return(void*);
+  probe CallObjectMethodV__entry(void*, void*, uintptr_t);
+  probe CallObjectMethodV__return(void*);
+  probe CallShortMethodA__entry(void*, void*, uintptr_t);
+  probe CallShortMethodA__return(uint16_t);
+  probe CallShortMethod__entry(void*, void*, uintptr_t);
+  probe CallShortMethod__return(uint16_t);
+  probe CallShortMethodV__entry(void*, void*, uintptr_t);
+  probe CallShortMethodV__return(uint16_t);
+  probe CallStaticBooleanMethodA__entry(void*, void*, uintptr_t);
+  probe CallStaticBooleanMethodA__return(uintptr_t);
+  probe CallStaticBooleanMethod__entry(void*, void*, uintptr_t);
+  probe CallStaticBooleanMethod__return(uintptr_t);
+  probe CallStaticBooleanMethodV__entry(void*, void*, uintptr_t);
+  probe CallStaticBooleanMethodV__return(uintptr_t);
+  probe CallStaticByteMethodA__entry(void*, void*, uintptr_t);
+  probe CallStaticByteMethodA__return(char);
+  probe CallStaticByteMethod__entry(void*, void*, uintptr_t);
+  probe CallStaticByteMethod__return(char);
+  probe CallStaticByteMethodV__entry(void*, void*, uintptr_t);
+  probe CallStaticByteMethodV__return(char);
+  probe CallStaticCharMethodA__entry(void*, void*, uintptr_t);
+  probe CallStaticCharMethodA__return(uint16_t);
+  probe CallStaticCharMethod__entry(void*, void*, uintptr_t);
+  probe CallStaticCharMethod__return(uint16_t);
+  probe CallStaticCharMethodV__entry(void*, void*, uintptr_t);
+  probe CallStaticCharMethodV__return(uint16_t);
+  probe CallStaticDoubleMethodA__entry(void*, void*, uintptr_t);
+  probe CallStaticDoubleMethodA__return();
+  probe CallStaticDoubleMethod__entry(void*, void*, uintptr_t);
+  probe CallStaticDoubleMethod__return();
+  probe CallStaticDoubleMethodV__entry(void*, void*, uintptr_t);
+  probe CallStaticDoubleMethodV__return();
+  probe CallStaticFloatMethodA__entry(void*, void*, uintptr_t);
+  probe CallStaticFloatMethodA__return();
+  probe CallStaticFloatMethod__entry(void*, void*, uintptr_t);
+  probe CallStaticFloatMethod__return();
+  probe CallStaticFloatMethodV__entry(void*, void*, uintptr_t);
+  probe CallStaticFloatMethodV__return();
+  probe CallStaticIntMethodA__entry(void*, void*, uintptr_t);
+  probe CallStaticIntMethodA__return(uint32_t);
+  probe CallStaticIntMethod__entry(void*, void*, uintptr_t);
+  probe CallStaticIntMethod__return(uint32_t);
+  probe CallStaticIntMethodV__entry(void*, void*, uintptr_t);
+  probe CallStaticIntMethodV__return(uint32_t);
+  probe CallStaticLongMethodA__entry(void*, void*, uintptr_t);
+  probe CallStaticLongMethodA__return(uintptr_t);
+  probe CallStaticLongMethod__entry(void*, void*, uintptr_t);
+  probe CallStaticLongMethod__return(uintptr_t);
+  probe CallStaticLongMethodV__entry(void*, void*, uintptr_t);
+  probe CallStaticLongMethodV__return(uintptr_t);
+  probe CallStaticObjectMethodA__entry(void*, void*, uintptr_t);
+  probe CallStaticObjectMethodA__return(void*);
+  probe CallStaticObjectMethod__entry(void*, void*, uintptr_t);
+  probe CallStaticObjectMethod__return(void*);
+  probe CallStaticObjectMethodV__entry(void*, void*, uintptr_t);
+  probe CallStaticObjectMethodV__return(void*);
+  probe CallStaticShortMethodA__entry(void*, void*, uintptr_t);
+  probe CallStaticShortMethodA__return(uint16_t);
+  probe CallStaticShortMethod__entry(void*, void*, uintptr_t);
+  probe CallStaticShortMethod__return(uint16_t);
+  probe CallStaticShortMethodV__entry(void*, void*, uintptr_t);
+  probe CallStaticShortMethodV__return(uint16_t);
+  probe CallStaticVoidMethodA__entry(void*, void*, uintptr_t);
+  probe CallStaticVoidMethodA__return();
+  probe CallStaticVoidMethod__entry(void*, void*, uintptr_t);
+  probe CallStaticVoidMethod__return(); 
+  probe CallStaticVoidMethodV__entry(void*, void*, uintptr_t);  
+  probe CallStaticVoidMethodV__return();
+  probe CallVoidMethodA__entry(void*, void*, uintptr_t);  
+  probe CallVoidMethodA__return();
+  probe CallVoidMethod__entry(void*, void*, uintptr_t);  
+  probe CallVoidMethod__return(); 
+  probe CallVoidMethodV__entry(void*, void*, uintptr_t);  
+  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__return(void*);
+  probe DeleteGlobalRef__entry(void*, void*);
+  probe DeleteGlobalRef__return();
+  probe DeleteLocalRef__entry(void*, void*);
+  probe DeleteLocalRef__return();
+  probe DeleteWeakGlobalRef__entry(void*, void*);
+  probe DeleteWeakGlobalRef__return();
+  probe DestroyJavaVM__entry(void*);
+  probe DestroyJavaVM__return(uint32_t);
+  probe DetachCurrentThread__entry(void*);
+  probe DetachCurrentThread__return(uint32_t);
+  probe EnsureLocalCapacity__entry(void*, uint32_t);
+  probe EnsureLocalCapacity__return(uint32_t);
+  probe ExceptionCheck__entry(void*);
+  probe ExceptionCheck__return(uintptr_t);
+  probe ExceptionClear__entry(void*);
+  probe ExceptionClear__return();
+  probe ExceptionDescribe__entry(void*);  
+  probe ExceptionDescribe__return();
+  probe ExceptionOccurred__entry(void*);
+  probe ExceptionOccurred__return(void*);
+  probe FatalError__entry(void* env, const char*);
+  probe FindClass__entry(void*, const char*);
+  probe FindClass__return(void*);
+  probe FromReflectedField__entry(void*, void*);
+  probe FromReflectedField__return(uintptr_t);
+  probe FromReflectedMethod__entry(void*, void*);
+  probe FromReflectedMethod__return(uintptr_t);
+  probe GetArrayLength__entry(void*, void*);
+  probe GetArrayLength__return(uintptr_t);
+  probe GetBooleanArrayElements__entry(void*, void*, uintptr_t*);
+  probe GetBooleanArrayElements__return(uintptr_t*);
+  probe GetBooleanArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, uintptr_t*);
+  probe GetBooleanArrayRegion__return();
+  probe GetBooleanField__entry(void*, void*, uintptr_t);
+  probe GetBooleanField__return(uintptr_t);
+  probe GetByteArrayElements__entry(void*, void*, uintptr_t*);
+  probe GetByteArrayElements__return(char*);
+  probe GetByteArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, char*);
+  probe GetByteArrayRegion__return();
+  probe GetByteField__entry(void*, void*, uintptr_t);
+  probe GetByteField__return(char);
+  probe GetCharArrayElements__entry(void*, void*, uintptr_t*);
+  probe GetCharArrayElements__return(uint16_t*);
+  probe GetCharArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, uint16_t*);
+  probe GetCharArrayRegion__return();
+  probe GetCharField__entry(void*, void*, uintptr_t);
+  probe GetCharField__return(uint16_t);
+  probe GetCreatedJavaVMs__entry(void**, uintptr_t, uintptr_t*);
+  probe GetCreatedJavaVMs__return(uintptr_t);
+  probe GetDefaultJavaVMInitArgs__entry(void*);
+  probe GetDefaultJavaVMInitArgs__return(uint32_t);
+  probe GetDirectBufferAddress__entry(void*, void*);
+  probe GetDirectBufferAddress__return(void*);
+  probe GetDirectBufferCapacity__entry(void*, void*);
+  probe GetDirectBufferCapacity__return(uintptr_t);
+  probe GetDoubleArrayElements__entry(void*, void*, uintptr_t*);
+  probe GetDoubleArrayElements__return(double*);
+  probe GetDoubleArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, double*);
+  probe GetDoubleArrayRegion__return();
+  probe GetDoubleField__entry(void*, void*, uintptr_t);
+  probe GetDoubleField__return();
+  probe GetEnv__entry(void*, void*, uint32_t);
+  probe GetEnv__return(uint32_t);
+  probe GetFieldID__entry(void*, void*, const char*, const char*);
+  probe GetFieldID__return(uintptr_t);
+  probe GetFloatArrayElements__entry(void*, void*, uintptr_t*);
+  probe GetFloatArrayElements__return(float*);
+  probe GetFloatArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, float*);
+  probe GetFloatArrayRegion__return();
+  probe GetFloatField__entry(void*, void*, uintptr_t);
+  probe GetFloatField__return();
+  probe GetIntArrayElements__entry(void*, void*, uintptr_t*);
+  probe GetIntArrayElements__return(uint32_t*);
+  probe GetIntArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, uint32_t*);
+  probe GetIntArrayRegion__return();
+  probe GetIntField__entry(void*, void*, uintptr_t);
+  probe GetIntField__return(uint32_t);
+  probe GetJavaVM__entry(void*, void**);
+  probe GetJavaVM__return(uint32_t);
+  probe GetLongArrayElements__entry(void*, void*, uintptr_t*);
+  probe GetLongArrayElements__return(uintptr_t*);
+  probe GetLongArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, uintptr_t*);
+  probe GetLongArrayRegion__return();
+  probe GetLongField__entry(void*, void*, uintptr_t);
+  probe GetLongField__return(uintptr_t);
+  probe GetMethodID__entry(void*, void*, const char*, const char*);
+  probe GetMethodID__return(uintptr_t);
+  probe GetObjectArrayElement__entry(void*, void*, uintptr_t);
+  probe GetObjectArrayElement__return(void*);
+  probe GetObjectClass__entry(void*, void*);
+  probe GetObjectClass__return(void*);
+  probe GetObjectField__entry(void*, void*, uintptr_t);
+  probe GetObjectField__return(void*);
+  probe GetObjectRefType__entry(void*, void*);
+  probe GetObjectRefType__return(void*);
+  probe GetPrimitiveArrayCritical__entry(void*, void*, uintptr_t*);
+  probe GetPrimitiveArrayCritical__return(void*);
+  probe GetShortArrayElements__entry(void*, void*, uintptr_t*);
+  probe GetShortArrayElements__return(uint16_t*);
+  probe GetShortArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, uint16_t*);
+  probe GetShortArrayRegion__return();
+  probe GetShortField__entry(void*, void*, uintptr_t);
+  probe GetShortField__return(uint16_t);
+  probe GetStaticBooleanField__entry(void*, void*, uintptr_t);
+  probe GetStaticBooleanField__return(uintptr_t);
+  probe GetStaticByteField__entry(void*, void*, uintptr_t);
+  probe GetStaticByteField__return(char);
+  probe GetStaticCharField__entry(void*, void*, uintptr_t);
+  probe GetStaticCharField__return(uint16_t);
+  probe GetStaticDoubleField__entry(void*, void*, uintptr_t);
+  probe GetStaticDoubleField__return();
+  probe GetStaticFieldID__entry(void*, void*, const char*, const char*);
+  probe GetStaticFieldID__return(uintptr_t);
+  probe GetStaticFloatField__entry(void*, void*, uintptr_t);
+  probe GetStaticFloatField__return();
+  probe GetStaticIntField__entry(void*, void*, uintptr_t);
+  probe GetStaticIntField__return(uint32_t);
+  probe GetStaticLongField__entry(void*, void*, uintptr_t);
+  probe GetStaticLongField__return(uintptr_t);
+  probe GetStaticMethodID__entry(void*, void*, const char*, const char*);
+  probe GetStaticMethodID__return(uintptr_t);
+  probe GetStaticObjectField__entry(void*, void*, uintptr_t);
+  probe GetStaticObjectField__return(void*);
+  probe GetStaticShortField__entry(void*, void*, uintptr_t);
+  probe GetStaticShortField__return(uint16_t);
+  probe GetStringChars__entry(void*, void*, uintptr_t*);
+  probe GetStringChars__return(const uint16_t*);
+  probe GetStringCritical__entry(void*, void*, uintptr_t*);
+  probe GetStringCritical__return(const uint16_t*);
+  probe GetStringLength__entry(void*, void*);
+  probe GetStringLength__return(uintptr_t);
+  probe GetStringRegion__entry(void*, void*, uintptr_t, uintptr_t, uint16_t*);
+  probe GetStringRegion__return();
+  probe GetStringUTFChars__entry(void*, void*, uintptr_t*);
+  probe GetStringUTFChars__return(const char*);
+  probe GetStringUTFLength__entry(void*, void*);
+  probe GetStringUTFLength__return(uintptr_t);
+  probe GetStringUTFRegion__entry(void*, void*, uintptr_t, uintptr_t, char*);
+  probe GetStringUTFRegion__return();
+  probe GetSuperclass__entry(void*, void*);
+  probe GetSuperclass__return(void*);
+  probe GetVersion__entry(void*);
+  probe GetVersion__return(uint32_t);
+  probe IsAssignableFrom__entry(void*, void*, void*);
+  probe IsAssignableFrom__return(uintptr_t);
+  probe IsInstanceOf__entry(void*, void*, void*);
+  probe IsInstanceOf__return(uintptr_t);
+  probe IsSameObject__entry(void*, void*, void*);
+  probe IsSameObject__return(uintptr_t);
+  probe MonitorEnter__entry(void*, void*);
+  probe MonitorEnter__return(uint32_t);
+  probe MonitorExit__entry(void*, void*);
+  probe MonitorExit__return(uint32_t);
+  probe NewBooleanArray__entry(void*, uintptr_t);
+  probe NewBooleanArray__return(void*);
+  probe NewByteArray__entry(void*, uintptr_t);
+  probe NewByteArray__return(void*);
+  probe NewCharArray__entry(void*, uintptr_t);
+  probe NewCharArray__return(void*);
+  probe NewDirectByteBuffer__entry(void*, void*, uintptr_t);
+  probe NewDirectByteBuffer__return(void*);
+  probe NewDoubleArray__entry(void*, uintptr_t);
+  probe NewDoubleArray__return(void*);
+  probe NewFloatArray__entry(void*, uintptr_t);
+  probe NewFloatArray__return(void*);
+  probe NewGlobalRef__entry(void*, void*);
+  probe NewGlobalRef__return(void*);
+  probe NewIntArray__entry(void*, uintptr_t);
+  probe NewIntArray__return(void*);
+  probe NewLocalRef__entry(void*, void*);
+  probe NewLocalRef__return(void*);
+  probe NewLongArray__entry(void*, uintptr_t);
+  probe NewLongArray__return(void*);
+  probe NewObjectA__entry(void*, void*, uintptr_t);  
+  probe NewObjectA__return(void*);
+  probe NewObjectArray__entry(void*, uintptr_t, void*, void*);
+  probe NewObjectArray__return(void*);
+  probe NewObject__entry(void*, void*, uintptr_t); 
+  probe NewObject__return(void*);
+  probe NewObjectV__entry(void*, void*, uintptr_t);  
+  probe NewObjectV__return(void*);
+  probe NewShortArray__entry(void*, uintptr_t);
+  probe NewShortArray__return(void*);
+  probe NewString__entry(void*, const uint16_t*, uintptr_t);
+  probe NewString__return(void*);
+  probe NewStringUTF__entry(void*, const char*);
+  probe NewStringUTF__return(void*);
+  probe NewWeakGlobalRef__entry(void*, void*);
+  probe NewWeakGlobalRef__return(void*);
+  probe PopLocalFrame__entry(void*, void*);
+  probe PopLocalFrame__return(void*);
+  probe PushLocalFrame__entry(void*, uint32_t);
+  probe PushLocalFrame__return(uint32_t);
+  probe RegisterNatives__entry(void*, void*, const void*, uint32_t);  
+  probe RegisterNatives__return(uint32_t);
+  probe ReleaseBooleanArrayElements__entry(void*, void*, uintptr_t*, uint32_t);
+  probe ReleaseBooleanArrayElements__return();
+  probe ReleaseByteArrayElements__entry(void*, void*, char*, uint32_t);
+  probe ReleaseByteArrayElements__return();
+  probe ReleaseCharArrayElements__entry(void*, void*, uint16_t*, uint32_t);
+  probe ReleaseCharArrayElements__return();
+  probe ReleaseDoubleArrayElements__entry(void*, void*, double*, uint32_t);
+  probe ReleaseDoubleArrayElements__return();
+  probe ReleaseFloatArrayElements__entry(void*, void*, float*, uint32_t);
+  probe ReleaseFloatArrayElements__return();
+  probe ReleaseIntArrayElements__entry(void*, void*, uint32_t*, uint32_t);
+  probe ReleaseIntArrayElements__return();
+  probe ReleaseLongArrayElements__entry(void*, void*, uintptr_t*, uint32_t);
+  probe ReleaseLongArrayElements__return();
+  probe ReleasePrimitiveArrayCritical__entry(void*, void*, void*, uint32_t);
+  probe ReleasePrimitiveArrayCritical__return();
+  probe ReleaseShortArrayElements__entry(void*, void*, uint16_t*, uint32_t);
+  probe ReleaseShortArrayElements__return();
+  probe ReleaseStringChars__entry(void*, void*, const uint16_t*);
+  probe ReleaseStringChars__return();
+  probe ReleaseStringCritical__entry(void*, void*, const uint16_t*);
+  probe ReleaseStringCritical__return();
+  probe ReleaseStringUTFChars__entry(void*, void*, const char*);
+  probe ReleaseStringUTFChars__return();
+  probe SetBooleanArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const uintptr_t*);
+  probe SetBooleanArrayRegion__return();
+  probe SetBooleanField__entry(void*, void*, uintptr_t, uintptr_t);
+  probe SetBooleanField__return();
+  probe SetByteArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const char*);
+  probe SetByteArrayRegion__return();
+  probe SetByteField__entry(void*, void*, uintptr_t, char);
+  probe SetByteField__return();
+  probe SetCharArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const uint16_t*);
+  probe SetCharArrayRegion__return();
+  probe SetCharField__entry(void*, void*, uintptr_t, uint16_t);
+  probe SetCharField__return();
+  probe SetDoubleArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const double*);
+  probe SetDoubleArrayRegion__return();
+  probe SetDoubleField__entry(void*, void*, uintptr_t);
+  probe SetDoubleField__return();
+  probe SetFloatArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const float*);
+  probe SetFloatArrayRegion__return();
+  probe SetFloatField__entry(void*, void*, uintptr_t);
+  probe SetFloatField__return();
+  probe SetIntArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const uint32_t*);
+  probe SetIntArrayRegion__return();
+  probe SetIntField__entry(void*, void*, uintptr_t, uint32_t);
+  probe SetIntField__return();
+  probe SetLongArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const uintptr_t*);
+  probe SetLongArrayRegion__return();
+  probe SetLongField__entry(void*, void*, uintptr_t, uintptr_t);
+  probe SetLongField__return();
+  probe SetObjectArrayElement__entry(void*, void*, uintptr_t, void*);
+  probe SetObjectArrayElement__return();
+  probe SetObjectField__entry(void*, void*, uintptr_t, void*);
+  probe SetObjectField__return();
+  probe SetShortArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const uint16_t*);
+  probe SetShortArrayRegion__return();
+  probe SetShortField__entry(void*, void*, uintptr_t, uint16_t);
+  probe SetShortField__return();
+  probe SetStaticBooleanField__entry(void*, void*, uintptr_t, uintptr_t);
+  probe SetStaticBooleanField__return();
+  probe SetStaticByteField__entry(void*, void*, uintptr_t, char);
+  probe SetStaticByteField__return();
+  probe SetStaticCharField__entry(void*, void*, uintptr_t, uint16_t);
+  probe SetStaticCharField__return();
+  probe SetStaticDoubleField__entry(void*, void*, uintptr_t);
+  probe SetStaticDoubleField__return();
+  probe SetStaticFloatField__entry(void*, void*, uintptr_t);
+  probe SetStaticFloatField__return();
+  probe SetStaticIntField__entry(void*, void*, uintptr_t, uint32_t);
+  probe SetStaticIntField__return();
+  probe SetStaticLongField__entry(void*, void*, uintptr_t, uintptr_t);
+  probe SetStaticLongField__return();
+  probe SetStaticObjectField__entry(void*, void*, uintptr_t, void*);
+  probe SetStaticObjectField__return();
+  probe SetStaticShortField__entry(void*, void*, uintptr_t, uint16_t);
+  probe SetStaticShortField__return();
+  probe Throw__entry(void*, void*);
+  probe Throw__return(intptr_t);
+  probe ThrowNew__entry(void*, void*, const char*);  
+  probe ThrowNew__return(intptr_t);  
+  probe ToReflectedField__entry(void*, void*, uintptr_t, uintptr_t);
+  probe ToReflectedField__return(void*);
+  probe ToReflectedMethod__entry(void*, void*, uintptr_t, uintptr_t);
+  probe ToReflectedMethod__return(void*);
+  probe UnregisterNatives__entry(void*, void*);  
+  probe UnregisterNatives__return(uint32_t);
+};
+
+#pragma D attributes Standard/Standard/Common provider hotspot_jni provider
+#pragma D attributes Private/Private/Unknown provider hotspot_jni module
+#pragma D attributes Private/Private/Unknown provider hotspot_jni function
+#pragma D attributes Standard/Standard/Common provider hotspot_jni name
+#pragma D attributes Evolving/Evolving/Common provider hotspot_jni args
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/os/posix/dtrace/hs_private.d	Fri Feb 07 09:41:36 2014 -0800
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *  
+ */
+
+provider hs_private {
+  probe safepoint__begin();
+  probe safepoint__end();
+  probe cms__initmark__begin();
+  probe cms__initmark__end();
+  probe cms__remark__begin();
+  probe cms__remark__end();
+};
+
+#pragma D attributes Private/Private/Common provider hs_private provider
+#pragma D attributes Private/Private/Unknown provider hs_private module
+#pragma D attributes Private/Private/Unknown provider hs_private function
+#pragma D attributes Private/Private/Common provider hs_private name
+#pragma D attributes Private/Private/Common provider hs_private args
+
--- a/hotspot/src/os/solaris/dtrace/hotspot.d	Wed Feb 05 08:57:33 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *  
- */
-
-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);
-  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);
-  probe class__initialization__super__failed(char*, uintptr_t, void*, intptr_t,int);
-  probe class__initialization__clinit(char*, uintptr_t, void*, intptr_t,int);
-  probe class__initialization__error(char*, uintptr_t, void*, intptr_t,int);
-  probe class__initialization__end(char*, uintptr_t, void*, intptr_t,int);
-  probe vm__init__begin();
-  probe vm__init__end();
-  probe vm__shutdown();
-  probe vmops__request(char*, uintptr_t, int);
-  probe vmops__begin(char*, uintptr_t, int);
-  probe vmops__end(char*, uintptr_t, int);
-  probe gc__begin(uintptr_t);
-  probe gc__end();
-  probe mem__pool__gc__begin(
-    char*, uintptr_t, char*, uintptr_t, 
-    uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-  probe mem__pool__gc__end(
-    char*, uintptr_t, char*, uintptr_t, 
-    uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-  probe thread__start(char*, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-  probe thread__stop(char*, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-  probe thread__sleep__begin(long long);
-  probe thread__sleep__end(int);
-  probe thread__yield();
-  probe thread__park__begin(uintptr_t, int, long long);
-  probe thread__park__end(uintptr_t);
-  probe thread__unpark(uintptr_t);
-  probe method__compile__begin(
-    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); 
-  probe compiled__method__load(
-    char*, uintptr_t, char*, uintptr_t, char*, uintptr_t, void*, uintptr_t);
-  probe compiled__method__unload(
-    char*, uintptr_t, char*, uintptr_t, char*, uintptr_t); 
-  probe monitor__contended__enter(uintptr_t, uintptr_t, char*, uintptr_t);
-  probe monitor__contended__entered(uintptr_t, uintptr_t, char*, uintptr_t);
-  probe monitor__contended__exit(uintptr_t, uintptr_t, char*, uintptr_t);
-  probe monitor__wait(uintptr_t, uintptr_t, char*, uintptr_t, uintptr_t);
-  probe monitor__waited(uintptr_t, uintptr_t, char*, uintptr_t);
-  probe monitor__notify(uintptr_t, uintptr_t, char*, uintptr_t);
-  probe monitor__notifyAll(uintptr_t, uintptr_t, char*, uintptr_t);
-
-  probe object__alloc(int, char*, uintptr_t, uintptr_t);
-  probe method__entry(
-    int, char*, int, char*, int, char*, int);
-  probe method__return(
-    int, char*, int, char*, int, char*, int);
-};
-
-#pragma D attributes Evolving/Evolving/Common provider hotspot provider
-#pragma D attributes Private/Private/Unknown provider hotspot module
-#pragma D attributes Private/Private/Unknown provider hotspot function
-#pragma D attributes Evolving/Evolving/Common provider hotspot name
-#pragma D attributes Evolving/Evolving/Common provider hotspot args
--- a/hotspot/src/os/solaris/dtrace/hotspot_jni.d	Wed Feb 05 08:57:33 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,506 +0,0 @@
-/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *  
- */
-
-provider hotspot_jni {
-  probe AllocObject__entry(void*, void*);
-  probe AllocObject__return(void*);
-  probe AttachCurrentThreadAsDaemon__entry(void*, void**, void*);
-  probe AttachCurrentThreadAsDaemon__return(uint32_t);
-  probe AttachCurrentThread__entry(void*, void**, void*);
-  probe AttachCurrentThread__return(uint32_t);
-  probe CallBooleanMethodA__entry(void*, void*, uintptr_t);
-  probe CallBooleanMethodA__return(uintptr_t);
-  probe CallBooleanMethod__entry(void*, void*, uintptr_t);
-  probe CallBooleanMethod__return(uintptr_t);
-  probe CallBooleanMethodV__entry(void*, void*, uintptr_t);
-  probe CallBooleanMethodV__return(uintptr_t);
-  probe CallByteMethodA__entry(void*, void*, uintptr_t);
-  probe CallByteMethodA__return(char);
-  probe CallByteMethod__entry(void*, void*, uintptr_t);
-  probe CallByteMethod__return(char);
-  probe CallByteMethodV__entry(void*, void*, uintptr_t);
-  probe CallByteMethodV__return(char);
-  probe CallCharMethodA__entry(void*, void*, uintptr_t);
-  probe CallCharMethodA__return(uint16_t);
-  probe CallCharMethod__entry(void*, void*, uintptr_t);
-  probe CallCharMethod__return(uint16_t);
-  probe CallCharMethodV__entry(void*, void*, uintptr_t);
-  probe CallCharMethodV__return(uint16_t);
-  probe CallDoubleMethodA__entry(void*, void*, uintptr_t);
-  probe CallDoubleMethodA__return();
-  probe CallDoubleMethod__entry(void*, void*, uintptr_t);
-  probe CallDoubleMethod__return();
-  probe CallDoubleMethodV__entry(void*, void*, uintptr_t);
-  probe CallDoubleMethodV__return();
-  probe CallFloatMethodA__entry(void*, void*, uintptr_t);
-  probe CallFloatMethodA__return();
-  probe CallFloatMethod__entry(void*, void*, uintptr_t);
-  probe CallFloatMethod__return();
-  probe CallFloatMethodV__entry(void*, void*, uintptr_t);
-  probe CallFloatMethodV__return();
-  probe CallIntMethodA__entry(void*, void*, uintptr_t);
-  probe CallIntMethodA__return(uint32_t);
-  probe CallIntMethod__entry(void*, void*, uintptr_t);
-  probe CallIntMethod__return(uint32_t);
-  probe CallIntMethodV__entry(void*, void*, uintptr_t);
-  probe CallIntMethodV__return(uint32_t);
-  probe CallLongMethodA__entry(void*, void*, uintptr_t);
-  probe CallLongMethodA__return(uintptr_t);
-  probe CallLongMethod__entry(void*, void*, uintptr_t);
-  probe CallLongMethod__return(uintptr_t);
-  probe CallLongMethodV__entry(void*, void*, uintptr_t);
-  probe CallLongMethodV__return(uintptr_t);
-  probe CallNonvirtualBooleanMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualBooleanMethodA__return(uintptr_t);
-  probe CallNonvirtualBooleanMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualBooleanMethod__return(uintptr_t);
-  probe CallNonvirtualBooleanMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualBooleanMethodV__return(uintptr_t);
-  probe CallNonvirtualByteMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualByteMethodA__return(char);
-  probe CallNonvirtualByteMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualByteMethod__return(char);
-  probe CallNonvirtualByteMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualByteMethodV__return(char);
-  probe CallNonvirtualCharMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualCharMethodA__return(uint16_t);
-  probe CallNonvirtualCharMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualCharMethod__return(uint16_t);
-  probe CallNonvirtualCharMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualCharMethodV__return(uint16_t);
-  probe CallNonvirtualDoubleMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualDoubleMethodA__return();
-  probe CallNonvirtualDoubleMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualDoubleMethod__return();
-  probe CallNonvirtualDoubleMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualDoubleMethodV__return();
-  probe CallNonvirtualFloatMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualFloatMethodA__return();
-  probe CallNonvirtualFloatMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualFloatMethod__return();
-  probe CallNonvirtualFloatMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualFloatMethodV__return();
-  probe CallNonvirtualIntMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualIntMethodA__return(uint32_t);
-  probe CallNonvirtualIntMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualIntMethod__return(uint32_t);
-  probe CallNonvirtualIntMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualIntMethodV__return(uint32_t);
-  probe CallNonvirtualLongMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualLongMethodA__return(uintptr_t);
-  probe CallNonvirtualLongMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualLongMethod__return(uintptr_t);
-  probe CallNonvirtualLongMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualLongMethodV__return(uintptr_t);
-  probe CallNonvirtualObjectMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualObjectMethodA__return(void*);
-  probe CallNonvirtualObjectMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualObjectMethod__return(void*);
-  probe CallNonvirtualObjectMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualObjectMethodV__return(void*);
-  probe CallNonvirtualShortMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualShortMethodA__return(uint16_t);
-  probe CallNonvirtualShortMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualShortMethod__return(uint16_t);
-  probe CallNonvirtualShortMethodV__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualShortMethodV__return(uint16_t);
-  probe CallNonvirtualVoidMethodA__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualVoidMethodA__return();
-  probe CallNonvirtualVoidMethod__entry(void*, void*, void*, uintptr_t);
-  probe CallNonvirtualVoidMethod__return();
-  probe CallNonvirtualVoidMethodV__entry(void*, void*, void*, uintptr_t);  
-  probe CallNonvirtualVoidMethodV__return();
-  probe CallObjectMethodA__entry(void*, void*, uintptr_t);
-  probe CallObjectMethodA__return(void*);
-  probe CallObjectMethod__entry(void*, void*, uintptr_t);
-  probe CallObjectMethod__return(void*);
-  probe CallObjectMethodV__entry(void*, void*, uintptr_t);
-  probe CallObjectMethodV__return(void*);
-  probe CallShortMethodA__entry(void*, void*, uintptr_t);
-  probe CallShortMethodA__return(uint16_t);
-  probe CallShortMethod__entry(void*, void*, uintptr_t);
-  probe CallShortMethod__return(uint16_t);
-  probe CallShortMethodV__entry(void*, void*, uintptr_t);
-  probe CallShortMethodV__return(uint16_t);
-  probe CallStaticBooleanMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticBooleanMethodA__return(uintptr_t);
-  probe CallStaticBooleanMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticBooleanMethod__return(uintptr_t);
-  probe CallStaticBooleanMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticBooleanMethodV__return(uintptr_t);
-  probe CallStaticByteMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticByteMethodA__return(char);
-  probe CallStaticByteMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticByteMethod__return(char);
-  probe CallStaticByteMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticByteMethodV__return(char);
-  probe CallStaticCharMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticCharMethodA__return(uint16_t);
-  probe CallStaticCharMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticCharMethod__return(uint16_t);
-  probe CallStaticCharMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticCharMethodV__return(uint16_t);
-  probe CallStaticDoubleMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticDoubleMethodA__return();
-  probe CallStaticDoubleMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticDoubleMethod__return();
-  probe CallStaticDoubleMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticDoubleMethodV__return();
-  probe CallStaticFloatMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticFloatMethodA__return();
-  probe CallStaticFloatMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticFloatMethod__return();
-  probe CallStaticFloatMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticFloatMethodV__return();
-  probe CallStaticIntMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticIntMethodA__return(uint32_t);
-  probe CallStaticIntMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticIntMethod__return(uint32_t);
-  probe CallStaticIntMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticIntMethodV__return(uint32_t);
-  probe CallStaticLongMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticLongMethodA__return(uintptr_t);
-  probe CallStaticLongMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticLongMethod__return(uintptr_t);
-  probe CallStaticLongMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticLongMethodV__return(uintptr_t);
-  probe CallStaticObjectMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticObjectMethodA__return(void*);
-  probe CallStaticObjectMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticObjectMethod__return(void*);
-  probe CallStaticObjectMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticObjectMethodV__return(void*);
-  probe CallStaticShortMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticShortMethodA__return(uint16_t);
-  probe CallStaticShortMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticShortMethod__return(uint16_t);
-  probe CallStaticShortMethodV__entry(void*, void*, uintptr_t);
-  probe CallStaticShortMethodV__return(uint16_t);
-  probe CallStaticVoidMethodA__entry(void*, void*, uintptr_t);
-  probe CallStaticVoidMethodA__return();
-  probe CallStaticVoidMethod__entry(void*, void*, uintptr_t);
-  probe CallStaticVoidMethod__return(); 
-  probe CallStaticVoidMethodV__entry(void*, void*, uintptr_t);  
-  probe CallStaticVoidMethodV__return();
-  probe CallVoidMethodA__entry(void*, void*, uintptr_t);  
-  probe CallVoidMethodA__return();
-  probe CallVoidMethod__entry(void*, void*, uintptr_t);  
-  probe CallVoidMethod__return(); 
-  probe CallVoidMethodV__entry(void*, void*, uintptr_t);  
-  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__return(void*);
-  probe DeleteGlobalRef__entry(void*, void*);
-  probe DeleteGlobalRef__return();
-  probe DeleteLocalRef__entry(void*, void*);
-  probe DeleteLocalRef__return();
-  probe DeleteWeakGlobalRef__entry(void*, void*);
-  probe DeleteWeakGlobalRef__return();
-  probe DestroyJavaVM__entry(void*);
-  probe DestroyJavaVM__return(uint32_t);
-  probe DetachCurrentThread__entry(void*);
-  probe DetachCurrentThread__return(uint32_t);
-  probe EnsureLocalCapacity__entry(void*, uint32_t);
-  probe EnsureLocalCapacity__return(uint32_t);
-  probe ExceptionCheck__entry(void*);
-  probe ExceptionCheck__return(uintptr_t);
-  probe ExceptionClear__entry(void*);
-  probe ExceptionClear__return();
-  probe ExceptionDescribe__entry(void*);  
-  probe ExceptionDescribe__return();
-  probe ExceptionOccurred__entry(void*);
-  probe ExceptionOccurred__return(void*);
-  probe FatalError__entry(void* env, const char*);
-  probe FindClass__entry(void*, const char*);
-  probe FindClass__return(void*);
-  probe FromReflectedField__entry(void*, void*);
-  probe FromReflectedField__return(uintptr_t);
-  probe FromReflectedMethod__entry(void*, void*);
-  probe FromReflectedMethod__return(uintptr_t);
-  probe GetArrayLength__entry(void*, void*);
-  probe GetArrayLength__return(uintptr_t);
-  probe GetBooleanArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetBooleanArrayElements__return(uintptr_t*);
-  probe GetBooleanArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, uintptr_t*);
-  probe GetBooleanArrayRegion__return();
-  probe GetBooleanField__entry(void*, void*, uintptr_t);
-  probe GetBooleanField__return(uintptr_t);
-  probe GetByteArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetByteArrayElements__return(char*);
-  probe GetByteArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, char*);
-  probe GetByteArrayRegion__return();
-  probe GetByteField__entry(void*, void*, uintptr_t);
-  probe GetByteField__return(char);
-  probe GetCharArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetCharArrayElements__return(uint16_t*);
-  probe GetCharArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, uint16_t*);
-  probe GetCharArrayRegion__return();
-  probe GetCharField__entry(void*, void*, uintptr_t);
-  probe GetCharField__return(uint16_t);
-  probe GetCreatedJavaVMs__entry(void**, uintptr_t, uintptr_t*);
-  probe GetCreatedJavaVMs__return(uintptr_t);
-  probe GetDefaultJavaVMInitArgs__entry(void*);
-  probe GetDefaultJavaVMInitArgs__return(uint32_t);
-  probe GetDirectBufferAddress__entry(void*, void*);
-  probe GetDirectBufferAddress__return(void*);
-  probe GetDirectBufferCapacity__entry(void*, void*);
-  probe GetDirectBufferCapacity__return(uintptr_t);
-  probe GetDoubleArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetDoubleArrayElements__return(double*);
-  probe GetDoubleArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, double*);
-  probe GetDoubleArrayRegion__return();
-  probe GetDoubleField__entry(void*, void*, uintptr_t);
-  probe GetDoubleField__return();
-  probe GetEnv__entry(void*, void*, uint32_t);
-  probe GetEnv__return(uint32_t);
-  probe GetFieldID__entry(void*, void*, const char*, const char*);
-  probe GetFieldID__return(uintptr_t);
-  probe GetFloatArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetFloatArrayElements__return(float*);
-  probe GetFloatArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, float*);
-  probe GetFloatArrayRegion__return();
-  probe GetFloatField__entry(void*, void*, uintptr_t);
-  probe GetFloatField__return();
-  probe GetIntArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetIntArrayElements__return(uint32_t*);
-  probe GetIntArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, uint32_t*);
-  probe GetIntArrayRegion__return();
-  probe GetIntField__entry(void*, void*, uintptr_t);
-  probe GetIntField__return(uint32_t);
-  probe GetJavaVM__entry(void*, void**);
-  probe GetJavaVM__return(uint32_t);
-  probe GetLongArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetLongArrayElements__return(uintptr_t*);
-  probe GetLongArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, uintptr_t*);
-  probe GetLongArrayRegion__return();
-  probe GetLongField__entry(void*, void*, uintptr_t);
-  probe GetLongField__return(uintptr_t);
-  probe GetMethodID__entry(void*, void*, const char*, const char*);
-  probe GetMethodID__return(uintptr_t);
-  probe GetObjectArrayElement__entry(void*, void*, uintptr_t);
-  probe GetObjectArrayElement__return(void*);
-  probe GetObjectClass__entry(void*, void*);
-  probe GetObjectClass__return(void*);
-  probe GetObjectField__entry(void*, void*, uintptr_t);
-  probe GetObjectField__return(void*);
-  probe GetObjectRefType__entry(void*, void*);
-  probe GetObjectRefType__return(void*);
-  probe GetPrimitiveArrayCritical__entry(void*, void*, uintptr_t*);
-  probe GetPrimitiveArrayCritical__return(void*);
-  probe GetShortArrayElements__entry(void*, void*, uintptr_t*);
-  probe GetShortArrayElements__return(uint16_t*);
-  probe GetShortArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, uint16_t*);
-  probe GetShortArrayRegion__return();
-  probe GetShortField__entry(void*, void*, uintptr_t);
-  probe GetShortField__return(uint16_t);
-  probe GetStaticBooleanField__entry(void*, void*, uintptr_t);
-  probe GetStaticBooleanField__return(uintptr_t);
-  probe GetStaticByteField__entry(void*, void*, uintptr_t);
-  probe GetStaticByteField__return(char);
-  probe GetStaticCharField__entry(void*, void*, uintptr_t);
-  probe GetStaticCharField__return(uint16_t);
-  probe GetStaticDoubleField__entry(void*, void*, uintptr_t);
-  probe GetStaticDoubleField__return();
-  probe GetStaticFieldID__entry(void*, void*, const char*, const char*);
-  probe GetStaticFieldID__return(uintptr_t);
-  probe GetStaticFloatField__entry(void*, void*, uintptr_t);
-  probe GetStaticFloatField__return();
-  probe GetStaticIntField__entry(void*, void*, uintptr_t);
-  probe GetStaticIntField__return(uint32_t);
-  probe GetStaticLongField__entry(void*, void*, uintptr_t);
-  probe GetStaticLongField__return(uintptr_t);
-  probe GetStaticMethodID__entry(void*, void*, const char*, const char*);
-  probe GetStaticMethodID__return(uintptr_t);
-  probe GetStaticObjectField__entry(void*, void*, uintptr_t);
-  probe GetStaticObjectField__return(void*);
-  probe GetStaticShortField__entry(void*, void*, uintptr_t);
-  probe GetStaticShortField__return(uint16_t);
-  probe GetStringChars__entry(void*, void*, uintptr_t*);
-  probe GetStringChars__return(const uint16_t*);
-  probe GetStringCritical__entry(void*, void*, uintptr_t*);
-  probe GetStringCritical__return(const uint16_t*);
-  probe GetStringLength__entry(void*, void*);
-  probe GetStringLength__return(uintptr_t);
-  probe GetStringRegion__entry(void*, void*, uintptr_t, uintptr_t, uint16_t*);
-  probe GetStringRegion__return();
-  probe GetStringUTFChars__entry(void*, void*, uintptr_t*);
-  probe GetStringUTFChars__return(const char*);
-  probe GetStringUTFLength__entry(void*, void*);
-  probe GetStringUTFLength__return(uintptr_t);
-  probe GetStringUTFRegion__entry(void*, void*, uintptr_t, uintptr_t, char*);
-  probe GetStringUTFRegion__return();
-  probe GetSuperclass__entry(void*, void*);
-  probe GetSuperclass__return(void*);
-  probe GetVersion__entry(void*);
-  probe GetVersion__return(uint32_t);
-  probe IsAssignableFrom__entry(void*, void*, void*);
-  probe IsAssignableFrom__return(uintptr_t);
-  probe IsInstanceOf__entry(void*, void*, void*);
-  probe IsInstanceOf__return(uintptr_t);
-  probe IsSameObject__entry(void*, void*, void*);
-  probe IsSameObject__return(uintptr_t);
-  probe MonitorEnter__entry(void*, void*);
-  probe MonitorEnter__return(uint32_t);
-  probe MonitorExit__entry(void*, void*);
-  probe MonitorExit__return(uint32_t);
-  probe NewBooleanArray__entry(void*, uintptr_t);
-  probe NewBooleanArray__return(void*);
-  probe NewByteArray__entry(void*, uintptr_t);
-  probe NewByteArray__return(void*);
-  probe NewCharArray__entry(void*, uintptr_t);
-  probe NewCharArray__return(void*);
-  probe NewDirectByteBuffer__entry(void*, void*, uintptr_t);
-  probe NewDirectByteBuffer__return(void*);
-  probe NewDoubleArray__entry(void*, uintptr_t);
-  probe NewDoubleArray__return(void*);
-  probe NewFloatArray__entry(void*, uintptr_t);
-  probe NewFloatArray__return(void*);
-  probe NewGlobalRef__entry(void*, void*);
-  probe NewGlobalRef__return(void*);
-  probe NewIntArray__entry(void*, uintptr_t);
-  probe NewIntArray__return(void*);
-  probe NewLocalRef__entry(void*, void*);
-  probe NewLocalRef__return(void*);
-  probe NewLongArray__entry(void*, uintptr_t);
-  probe NewLongArray__return(void*);
-  probe NewObjectA__entry(void*, void*, uintptr_t);  
-  probe NewObjectA__return(void*);
-  probe NewObjectArray__entry(void*, uintptr_t, void*, void*);
-  probe NewObjectArray__return(void*);
-  probe NewObject__entry(void*, void*, uintptr_t); 
-  probe NewObject__return(void*);
-  probe NewObjectV__entry(void*, void*, uintptr_t);  
-  probe NewObjectV__return(void*);
-  probe NewShortArray__entry(void*, uintptr_t);
-  probe NewShortArray__return(void*);
-  probe NewString__entry(void*, const uint16_t*, uintptr_t);
-  probe NewString__return(void*);
-  probe NewStringUTF__entry(void*, const char*);
-  probe NewStringUTF__return(void*);
-  probe NewWeakGlobalRef__entry(void*, void*);
-  probe NewWeakGlobalRef__return(void*);
-  probe PopLocalFrame__entry(void*, void*);
-  probe PopLocalFrame__return(void*);
-  probe PushLocalFrame__entry(void*, uint32_t);
-  probe PushLocalFrame__return(uint32_t);
-  probe RegisterNatives__entry(void*, void*, const void*, uint32_t);  
-  probe RegisterNatives__return(uint32_t);
-  probe ReleaseBooleanArrayElements__entry(void*, void*, uintptr_t*, uint32_t);
-  probe ReleaseBooleanArrayElements__return();
-  probe ReleaseByteArrayElements__entry(void*, void*, char*, uint32_t);
-  probe ReleaseByteArrayElements__return();
-  probe ReleaseCharArrayElements__entry(void*, void*, uint16_t*, uint32_t);
-  probe ReleaseCharArrayElements__return();
-  probe ReleaseDoubleArrayElements__entry(void*, void*, double*, uint32_t);
-  probe ReleaseDoubleArrayElements__return();
-  probe ReleaseFloatArrayElements__entry(void*, void*, float*, uint32_t);
-  probe ReleaseFloatArrayElements__return();
-  probe ReleaseIntArrayElements__entry(void*, void*, uint32_t*, uint32_t);
-  probe ReleaseIntArrayElements__return();
-  probe ReleaseLongArrayElements__entry(void*, void*, uintptr_t*, uint32_t);
-  probe ReleaseLongArrayElements__return();
-  probe ReleasePrimitiveArrayCritical__entry(void*, void*, void*, uint32_t);
-  probe ReleasePrimitiveArrayCritical__return();
-  probe ReleaseShortArrayElements__entry(void*, void*, uint16_t*, uint32_t);
-  probe ReleaseShortArrayElements__return();
-  probe ReleaseStringChars__entry(void*, void*, const uint16_t*);
-  probe ReleaseStringChars__return();
-  probe ReleaseStringCritical__entry(void*, void*, const uint16_t*);
-  probe ReleaseStringCritical__return();
-  probe ReleaseStringUTFChars__entry(void*, void*, const char*);
-  probe ReleaseStringUTFChars__return();
-  probe SetBooleanArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const uintptr_t*);
-  probe SetBooleanArrayRegion__return();
-  probe SetBooleanField__entry(void*, void*, uintptr_t, uintptr_t);
-  probe SetBooleanField__return();
-  probe SetByteArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const char*);
-  probe SetByteArrayRegion__return();
-  probe SetByteField__entry(void*, void*, uintptr_t, char);
-  probe SetByteField__return();
-  probe SetCharArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const uint16_t*);
-  probe SetCharArrayRegion__return();
-  probe SetCharField__entry(void*, void*, uintptr_t, uint16_t);
-  probe SetCharField__return();
-  probe SetDoubleArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const double*);
-  probe SetDoubleArrayRegion__return();
-  probe SetDoubleField__entry(void*, void*, uintptr_t);
-  probe SetDoubleField__return();
-  probe SetFloatArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const float*);
-  probe SetFloatArrayRegion__return();
-  probe SetFloatField__entry(void*, void*, uintptr_t);
-  probe SetFloatField__return();
-  probe SetIntArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const uint32_t*);
-  probe SetIntArrayRegion__return();
-  probe SetIntField__entry(void*, void*, uintptr_t, uint32_t);
-  probe SetIntField__return();
-  probe SetLongArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const uintptr_t*);
-  probe SetLongArrayRegion__return();
-  probe SetLongField__entry(void*, void*, uintptr_t, uintptr_t);
-  probe SetLongField__return();
-  probe SetObjectArrayElement__entry(void*, void*, uintptr_t, void*);
-  probe SetObjectArrayElement__return();
-  probe SetObjectField__entry(void*, void*, uintptr_t, void*);
-  probe SetObjectField__return();
-  probe SetShortArrayRegion__entry(void*, void*, uintptr_t, uintptr_t, const uint16_t*);
-  probe SetShortArrayRegion__return();
-  probe SetShortField__entry(void*, void*, uintptr_t, uint16_t);
-  probe SetShortField__return();
-  probe SetStaticBooleanField__entry(void*, void*, uintptr_t, uintptr_t);
-  probe SetStaticBooleanField__return();
-  probe SetStaticByteField__entry(void*, void*, uintptr_t, char);
-  probe SetStaticByteField__return();
-  probe SetStaticCharField__entry(void*, void*, uintptr_t, uint16_t);
-  probe SetStaticCharField__return();
-  probe SetStaticDoubleField__entry(void*, void*, uintptr_t);
-  probe SetStaticDoubleField__return();
-  probe SetStaticFloatField__entry(void*, void*, uintptr_t);
-  probe SetStaticFloatField__return();
-  probe SetStaticIntField__entry(void*, void*, uintptr_t, uint32_t);
-  probe SetStaticIntField__return();
-  probe SetStaticLongField__entry(void*, void*, uintptr_t, uintptr_t);
-  probe SetStaticLongField__return();
-  probe SetStaticObjectField__entry(void*, void*, uintptr_t, void*);
-  probe SetStaticObjectField__return();
-  probe SetStaticShortField__entry(void*, void*, uintptr_t, uint16_t);
-  probe SetStaticShortField__return();
-  probe Throw__entry(void*, void*);
-  probe Throw__return(intptr_t);
-  probe ThrowNew__entry(void*, void*, const char*);  
-  probe ThrowNew__return(intptr_t);  
-  probe ToReflectedField__entry(void*, void*, uintptr_t, uintptr_t);
-  probe ToReflectedField__return(void*);
-  probe ToReflectedMethod__entry(void*, void*, uintptr_t, uintptr_t);
-  probe ToReflectedMethod__return(void*);
-  probe UnregisterNatives__entry(void*, void*);  
-  probe UnregisterNatives__return(uint32_t);
-};
-
-#pragma D attributes Standard/Standard/Common provider hotspot_jni provider
-#pragma D attributes Private/Private/Unknown provider hotspot_jni module
-#pragma D attributes Private/Private/Unknown provider hotspot_jni function
-#pragma D attributes Standard/Standard/Common provider hotspot_jni name
-#pragma D attributes Evolving/Evolving/Common provider hotspot_jni args
-
--- a/hotspot/src/os/solaris/dtrace/hs_private.d	Wed Feb 05 08:57:33 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *  
- */
-
-provider hs_private {
-  probe safepoint__begin();
-  probe safepoint__end();
-  probe cms__initmark__begin();
-  probe cms__initmark__end();
-  probe cms__remark__begin();
-  probe cms__remark__end();
-};
-
-#pragma D attributes Private/Private/Common provider hs_private provider
-#pragma D attributes Private/Private/Unknown provider hs_private module
-#pragma D attributes Private/Private/Unknown provider hs_private function
-#pragma D attributes Private/Private/Common provider hs_private name
-#pragma D attributes Private/Private/Common provider hs_private args
-
--- a/hotspot/src/os/solaris/vm/os_solaris.cpp	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/src/os/solaris/vm/os_solaris.cpp	Fri Feb 07 09:41:36 2014 -0800
@@ -2441,13 +2441,14 @@
     return;
   }
 
-  if (Arguments::created_by_gamma_launcher()) {
-    // Support for the gamma launcher.  Typical value for buf is
-    // "<JAVA_HOME>/jre/lib/<arch>/<vmtype>/libjvm.so".  If "/jre/lib/" appears at
-    // the right place in the string, then assume we are installed in a JDK and
-    // we're done.  Otherwise, check for a JAVA_HOME environment variable and fix
-    // up the path so it looks like libjvm.so is installed there (append a
-    // fake suffix hotspot/libjvm.so).
+  if (Arguments::sun_java_launcher_is_altjvm()) {
+    // Support for the java launcher's '-XXaltjvm=<path>' option. Typical
+    // value for buf is "<JAVA_HOME>/jre/lib/<arch>/<vmtype>/libjvm.so".
+    // If "/jre/lib/" appears at the right place in the string, then
+    // assume we are installed in a JDK and we're done.  Otherwise, check
+    // for a JAVA_HOME environment variable and fix up the path so it
+    // looks like libjvm.so is installed there (append a fake suffix
+    // hotspot/libjvm.so).
     const char *p = buf + strlen(buf) - 1;
     for (int count = 0; p > buf && count < 5; ++count) {
       for (--p; p > buf && *p != '/'; --p)
--- a/hotspot/src/os/windows/vm/os_windows.cpp	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/src/os/windows/vm/os_windows.cpp	Fri Feb 07 09:41:36 2014 -0800
@@ -1810,32 +1810,30 @@
   }
 
   buf[0] = '\0';
-  if (Arguments::created_by_gamma_launcher()) {
-     // Support for the gamma launcher. Check for an
-     // JAVA_HOME environment variable
-     // and fix up the path so it looks like
-     // libjvm.so is installed there (append a fake suffix
-     // hotspot/libjvm.so).
-     char* java_home_var = ::getenv("JAVA_HOME");
-     if (java_home_var != NULL && java_home_var[0] != 0) {
-
-        strncpy(buf, java_home_var, buflen);
-
-        // determine if this is a legacy image or modules image
-        // modules image doesn't have "jre" subdirectory
-        size_t len = strlen(buf);
-        char* jrebin_p = buf + len;
-        jio_snprintf(jrebin_p, buflen-len, "\\jre\\bin\\");
-        if (0 != _access(buf, 0)) {
-          jio_snprintf(jrebin_p, buflen-len, "\\bin\\");
-        }
-        len = strlen(buf);
-        jio_snprintf(buf + len, buflen-len, "hotspot\\jvm.dll");
-     }
-  }
-
-  if(buf[0] == '\0') {
-  GetModuleFileName(vm_lib_handle, buf, buflen);
+  if (Arguments::sun_java_launcher_is_altjvm()) {
+    // Support for the java launcher's '-XXaltjvm=<path>' option. Check
+    // for a JAVA_HOME environment variable and fix up the path so it
+    // looks like jvm.dll is installed there (append a fake suffix
+    // hotspot/jvm.dll).
+    char* java_home_var = ::getenv("JAVA_HOME");
+    if (java_home_var != NULL && java_home_var[0] != 0) {
+      strncpy(buf, java_home_var, buflen);
+
+      // determine if this is a legacy image or modules image
+      // modules image doesn't have "jre" subdirectory
+      size_t len = strlen(buf);
+      char* jrebin_p = buf + len;
+      jio_snprintf(jrebin_p, buflen-len, "\\jre\\bin\\");
+      if (0 != _access(buf, 0)) {
+        jio_snprintf(jrebin_p, buflen-len, "\\bin\\");
+      }
+      len = strlen(buf);
+      jio_snprintf(buf + len, buflen-len, "hotspot\\jvm.dll");
+    }
+  }
+
+  if (buf[0] == '\0') {
+    GetModuleFileName(vm_lib_handle, buf, buflen);
   }
   strcpy(saved_jvm_path, buf);
 }
--- a/hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC10.java	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/src/share/tools/ProjectCreator/WinGammaPlatformVC10.java	Fri Feb 07 09:41:36 2014 -0800
@@ -161,7 +161,18 @@
         for (BuildConfig cfg : allConfigs) {
             startTag(cfg, "PropertyGroup");
             tagData("LocalDebuggerCommand", cfg.get("JdkTargetRoot") + "\\bin\\java.exe");
-            tagData("LocalDebuggerCommandArguments", "-XXaltjvm=$(TargetDir) -Dsun.java.launcher=gamma");
+            // The JVM loads some libraries using a path relative to
+            // itself because it expects to be in a JRE or a JDK. The java
+            // launcher's '-XXaltjvm=' option allows the JVM to be outside
+            // the JRE or JDK so '-Dsun.java.launcher.is_altjvm=true'
+            // forces a fake JAVA_HOME relative path to be used to
+            // find the other libraries. The '-XX:+PauseAtExit' option
+            // causes the VM to wait for key press before exiting; this
+            // allows any stdout or stderr messages to be seen before
+            // the cmdtool exits.
+            tagData("LocalDebuggerCommandArguments", "-XXaltjvm=$(TargetDir) "
+                    + "-Dsun.java.launcher.is_altjvm=true "
+                    + "-XX:+UnlockDiagnosticVMOptions -XX:+PauseAtExit");
             tagData("LocalDebuggerEnvironment", "JAVA_HOME=" + cfg.get("JdkTargetRoot"));
             endTag();
         }
--- a/hotspot/src/share/vm/interpreter/linkResolver.cpp	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/src/share/vm/interpreter/linkResolver.cpp	Fri Feb 07 09:41:36 2014 -0800
@@ -564,16 +564,7 @@
     }
   }
 
-  // 5. check if method is concrete
-  if (resolved_method->is_abstract() && !resolved_klass->is_abstract()) {
-    ResourceMark rm(THREAD);
-    THROW_MSG(vmSymbols::java_lang_AbstractMethodError(),
-              Method::name_and_sig_as_C_string(resolved_klass(),
-                                                      method_name,
-                                                      method_signature));
-  }
-
-  // 6. access checks, access checking may be turned off when calling from within the VM.
+  // 5. access checks, access checking may be turned off when calling from within the VM.
   if (check_access) {
     assert(current_klass.not_null() , "current_klass should not be null");
 
--- a/hotspot/src/share/vm/prims/jni.cpp	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/src/share/vm/prims/jni.cpp	Fri Feb 07 09:41:36 2014 -0800
@@ -1320,9 +1320,13 @@
       // interface call
       KlassHandle h_holder(THREAD, holder);
 
-      int itbl_index = m->itable_index();
-      Klass* k = h_recv->klass();
-      selected_method = InstanceKlass::cast(k)->method_at_itable(h_holder(), itbl_index, CHECK);
+      if (call_type == JNI_VIRTUAL) {
+        int itbl_index = m->itable_index();
+        Klass* k = h_recv->klass();
+        selected_method = InstanceKlass::cast(k)->method_at_itable(h_holder(), itbl_index, CHECK);
+      } else {
+        selected_method = m;
+      }
     }
   }
 
--- a/hotspot/src/share/vm/prims/jvmtiEnv.cpp	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiEnv.cpp	Fri Feb 07 09:41:36 2014 -0800
@@ -1360,8 +1360,10 @@
   if (state == NULL) {
     return JVMTI_ERROR_THREAD_NOT_ALIVE;
   }
-  uint32_t debug_bits = 0;
-  if (is_thread_fully_suspended(java_thread, true, &debug_bits)) {
+
+  // It is only safe to perform the direct operation on the current
+  // thread. All other usage needs to use a vm-safepoint-op for safety.
+  if (java_thread == JavaThread::current()) {
     err = get_frame_count(state, count_ptr);
   } else {
     // get java stack frame count at safepoint.
@@ -1476,9 +1478,10 @@
 jvmtiError
 JvmtiEnv::GetFrameLocation(JavaThread* java_thread, jint depth, jmethodID* method_ptr, jlocation* location_ptr) {
   jvmtiError err = JVMTI_ERROR_NONE;
-  uint32_t debug_bits = 0;
-
-  if (is_thread_fully_suspended(java_thread, true, &debug_bits)) {
+
+  // It is only safe to perform the direct operation on the current
+  // thread. All other usage needs to use a vm-safepoint-op for safety.
+  if (java_thread == JavaThread::current()) {
     err = get_frame_location(java_thread, depth, method_ptr, location_ptr);
   } else {
     // JVMTI get java stack frame location at safepoint.
--- a/hotspot/src/share/vm/prims/jvmtiEnvBase.hpp	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiEnvBase.hpp	Fri Feb 07 09:41:36 2014 -0800
@@ -533,7 +533,11 @@
   VMOp_Type type() const { return VMOp_GetFrameCount; }
   jvmtiError result()    { return _result; }
   void doit() {
-    _result = ((JvmtiEnvBase*)_env)->get_frame_count(_state, _count_ptr);
+    _result = JVMTI_ERROR_THREAD_NOT_ALIVE;
+    JavaThread* jt = _state->get_thread();
+    if (Threads::includes(jt) && !jt->is_exiting() && jt->threadObj() != NULL) {
+      _result = ((JvmtiEnvBase*)_env)->get_frame_count(_state, _count_ptr);
+    }
   }
 };
 
@@ -559,8 +563,12 @@
   VMOp_Type type() const { return VMOp_GetFrameLocation; }
   jvmtiError result()    { return _result; }
   void doit() {
-    _result = ((JvmtiEnvBase*)_env)->get_frame_location(_java_thread, _depth,
-                                                        _method_ptr, _location_ptr);
+    _result = JVMTI_ERROR_THREAD_NOT_ALIVE;
+    if (Threads::includes(_java_thread) && !_java_thread->is_exiting() &&
+        _java_thread->threadObj() != NULL) {
+      _result = ((JvmtiEnvBase*)_env)->get_frame_location(_java_thread, _depth,
+                                                          _method_ptr, _location_ptr);
+    }
   }
 };
 
--- a/hotspot/src/share/vm/runtime/arguments.cpp	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/src/share/vm/runtime/arguments.cpp	Fri Feb 07 09:41:36 2014 -0800
@@ -101,7 +101,7 @@
 const char*  Arguments::_java_vendor_url_bug    = DEFAULT_VENDOR_URL_BUG;
 const char*  Arguments::_sun_java_launcher      = DEFAULT_JAVA_LAUNCHER;
 int    Arguments::_sun_java_launcher_pid        = -1;
-bool   Arguments::_created_by_gamma_launcher    = false;
+bool   Arguments::_sun_java_launcher_is_altjvm  = false;
 
 // These parameters are reset in method parse_vm_init_args(JavaVMInitArgs*)
 bool   Arguments::_AlwaysCompileLoopMethods     = AlwaysCompileLoopMethods;
@@ -151,7 +151,8 @@
 
 // Process java launcher properties.
 void Arguments::process_sun_java_launcher_properties(JavaVMInitArgs* args) {
-  // See if sun.java.launcher or sun.java.launcher.pid is defined.
+  // See if sun.java.launcher, sun.java.launcher.is_altjvm or
+  // sun.java.launcher.pid is defined.
   // Must do this before setting up other system properties,
   // as some of them may depend on launcher type.
   for (int index = 0; index < args->nOptions; index++) {
@@ -162,6 +163,12 @@
       process_java_launcher_argument(tail, option->extraInfo);
       continue;
     }
+    if (match_option(option, "-Dsun.java.launcher.is_altjvm=", &tail)) {
+      if (strcmp(tail, "true") == 0) {
+        _sun_java_launcher_is_altjvm = true;
+      }
+      continue;
+    }
     if (match_option(option, "-Dsun.java.launcher.pid=", &tail)) {
       _sun_java_launcher_pid = atoi(tail);
       continue;
@@ -1013,9 +1020,10 @@
     _java_command = value;
 
     // Record value in Arguments, but let it get passed to Java.
-  } else if (strcmp(key, "sun.java.launcher.pid") == 0) {
-    // launcher.pid property is private and is processed
-    // in process_sun_java_launcher_properties();
+  } else if (strcmp(key, "sun.java.launcher.is_altjvm") == 0 ||
+             strcmp(key, "sun.java.launcher.pid") == 0) {
+    // sun.java.launcher.is_altjvm and sun.java.launcher.pid property are
+    // private and are processed in process_sun_java_launcher_properties();
     // the sun.java.launcher property is passed on to the java application
     FreeHeap(key);
     if (eq != NULL) {
@@ -1810,9 +1818,6 @@
 
 void Arguments::process_java_launcher_argument(const char* launcher, void* extra_info) {
   _sun_java_launcher = strdup(launcher);
-  if (strcmp("gamma", _sun_java_launcher) == 0) {
-    _created_by_gamma_launcher = true;
-  }
 }
 
 bool Arguments::created_by_java_launcher() {
@@ -1820,8 +1825,8 @@
   return strcmp(DEFAULT_JAVA_LAUNCHER, _sun_java_launcher) != 0;
 }
 
-bool Arguments::created_by_gamma_launcher() {
-  return _created_by_gamma_launcher;
+bool Arguments::sun_java_launcher_is_altjvm() {
+  return _sun_java_launcher_is_altjvm;
 }
 
 //===========================================================================================================
@@ -3809,16 +3814,6 @@
     }
   }
 
-  // set PauseAtExit if the gamma launcher was used and a debugger is attached
-  // but only if not already set on the commandline
-  if (Arguments::created_by_gamma_launcher() && os::is_debugger_attached()) {
-    bool set = false;
-    CommandLineFlags::wasSetOnCmdline("PauseAtExit", &set);
-    if (!set) {
-      FLAG_SET_DEFAULT(PauseAtExit, true);
-    }
-  }
-
   return JNI_OK;
 }
 
--- a/hotspot/src/share/vm/runtime/arguments.hpp	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/src/share/vm/runtime/arguments.hpp	Fri Feb 07 09:41:36 2014 -0800
@@ -269,14 +269,14 @@
   static const char* _java_vendor_url_bug;
 
   // sun.java.launcher, private property to provide information about
-  // java/gamma launcher
+  // java launcher
   static const char* _sun_java_launcher;
 
   // sun.java.launcher.pid, private property
   static int    _sun_java_launcher_pid;
 
-  // was this VM created by the gamma launcher
-  static bool   _created_by_gamma_launcher;
+  // was this VM created via the -XXaltjvm=<path> option
+  static bool   _sun_java_launcher_is_altjvm;
 
   // Option flags
   static bool   _has_profile;
@@ -498,8 +498,8 @@
   static const char* sun_java_launcher()    { return _sun_java_launcher; }
   // Was VM created by a Java launcher?
   static bool created_by_java_launcher();
-  // Was VM created by the gamma Java launcher?
-  static bool created_by_gamma_launcher();
+  // -Dsun.java.launcher.is_altjvm
+  static bool sun_java_launcher_is_altjvm();
   // -Dsun.java.launcher.pid
   static int sun_java_launcher_pid()        { return _sun_java_launcher_pid; }
 
--- a/hotspot/src/share/vm/utilities/dtrace.hpp	Wed Feb 05 08:57:33 2014 -0800
+++ b/hotspot/src/share/vm/utilities/dtrace.hpp	Fri Feb 07 09:41:36 2014 -0800
@@ -38,23 +38,19 @@
 #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() \
   do { volatile size_t dtrace_workaround_tail_call_bug = 1; } while (0)
 
+#elif defined(LINUX)
+#define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG()
+#elif defined(__APPLE__)
+#define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG()
+#include <sys/types.h>
+#else
+#error "dtrace enabled for unknown os"
+#endif /* defined(SOLARIS) */
+
 #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
-#elif defined(__APPLE__)
-#define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG()
-#define USDT2 1
-#include <sys/types.h>
-#include "dtracefiles/hotspot.h"
-#include "dtracefiles/hotspot_jni.h"
-#include "dtracefiles/hs_private.h"
-#else
-#error "dtrace enabled for unknown os"
-#endif /* defined(SOLARIS) */
 
 #else /* defined(DTRACE_ENABLED) */
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/lambda-features/TestConcreteClassWithAbstractMethod.java	Fri Feb 07 09:41:36 2014 -0800
@@ -0,0 +1,181 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/*
+ * @test
+ * @bug 8032010
+ * @summary method lookup on an abstract method in a concrete class should be successful
+ * @run main TestConcreteClassWithAbstractMethod
+ */
+
+import jdk.internal.org.objectweb.asm.ClassWriter;
+import jdk.internal.org.objectweb.asm.MethodVisitor;
+
+import static jdk.internal.org.objectweb.asm.Opcodes.*;
+
+/*
+ *   class T1 { public int m() {} }
+ *   class T2 { public abstract int m(); }
+ *   class T3 { public int m() {} }
+ *
+ *   Call site: T3.test() { invokevirtual T2.m() }
+ *   T3.m() should be invoked
+ */
+public class TestConcreteClassWithAbstractMethod {
+    static final String classT1 = "p1.T1";
+    static final String classT2 = "p1.T2";
+    static final String classT3 = "p1.T3";
+
+    static final String callerName = classT3;
+
+    public static void main(String[] args) throws Exception {
+        ClassLoader cl = new ClassLoader() {
+            public Class<?> loadClass(String name) throws ClassNotFoundException {
+                if (findLoadedClass(name) != null) {
+                    return findLoadedClass(name);
+                }
+
+                if (classT1.equals(name)) {
+                    byte[] classFile = dumpT1();
+                    return defineClass(classT1, classFile, 0, classFile.length);
+                }
+                if (classT2.equals(name)) {
+                    byte[] classFile = dumpT2();
+                    return defineClass(classT2, classFile, 0, classFile.length);
+                }
+                if (classT3.equals(name)) {
+                    byte[] classFile = dumpT3();
+                    return defineClass(classT3, classFile, 0, classFile.length);
+                }
+
+                return super.loadClass(name);
+            }
+        };
+
+        cl.loadClass(classT1);
+        cl.loadClass(classT2);
+        cl.loadClass(classT3);
+
+        //cl.loadClass(callerName).getDeclaredMethod("m");
+        cl.loadClass(callerName).newInstance();
+
+        int result = (Integer)cl.loadClass(callerName).getDeclaredMethod("test").invoke(null);
+        System.out.println(""+result);
+    }
+
+    public static byte[] dumpT1() {
+        ClassWriter cw = new ClassWriter(0);
+        MethodVisitor mv;
+
+        cw.visit(52, ACC_PUBLIC | ACC_SUPER, "p1/T1", null, "java/lang/Object", null);
+        {
+            mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
+            mv.visitCode();
+            mv.visitVarInsn(ALOAD, 0);
+            mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
+            mv.visitInsn(RETURN);
+            mv.visitMaxs(1, 1);
+            mv.visitEnd();
+        }
+        {
+            mv = cw.visitMethod(ACC_PUBLIC, "m", "()I", null, null);
+            mv.visitCode();
+            mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
+            mv.visitLdcInsn("p1/T1.m()");
+            mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "print", "(Ljava/lang/String;)V", false);
+            mv.visitIntInsn(BIPUSH, 3);
+            mv.visitInsn(IRETURN);
+            mv.visitMaxs(2, 1);
+            mv.visitEnd();
+        }
+        cw.visitEnd();
+
+        return cw.toByteArray();
+    }
+
+    public static byte[] dumpT2() {
+        ClassWriter cw = new ClassWriter(0);
+        MethodVisitor mv;
+
+        cw.visit(52, ACC_PUBLIC | ACC_SUPER, "p1/T2", null, "p1/T1", null);
+        {
+            mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
+            mv.visitCode();
+            mv.visitVarInsn(ALOAD, 0);
+            mv.visitMethodInsn(INVOKESPECIAL, "p1/T1", "<init>", "()V", false);
+            mv.visitInsn(RETURN);
+            mv.visitMaxs(1, 1);
+            mv.visitEnd();
+        }
+        {
+            mv = cw.visitMethod(ACC_PUBLIC + ACC_ABSTRACT, "m", "()I", null, null);
+            mv.visitEnd();
+        }
+        cw.visitEnd();
+
+        return cw.toByteArray();
+    }
+
+    public static byte[] dumpT3() {
+        ClassWriter cw = new ClassWriter(0);
+        MethodVisitor mv;
+
+        cw.visit(52, ACC_PUBLIC + ACC_SUPER, "p1/T3", null, "p1/T2", null);
+
+        {
+            mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
+            mv.visitCode();
+            mv.visitVarInsn(ALOAD, 0);
+            mv.visitMethodInsn(INVOKESPECIAL, "p1/T2", "<init>", "()V", false);
+            mv.visitInsn(RETURN);
+            mv.visitMaxs(1, 1);
+            mv.visitEnd();
+        }
+        {
+            mv = cw.visitMethod(ACC_PUBLIC, "m", "()I", null, null);
+            mv.visitCode();
+            mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
+            mv.visitLdcInsn("p1/T3.m()");
+            mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "print", "(Ljava/lang/String;)V", false);
+            mv.visitIntInsn(BIPUSH, 2);
+            mv.visitInsn(IRETURN);
+            mv.visitMaxs(2, 1);
+            mv.visitEnd();
+        }
+        {
+            mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "test", "()I", null, null);
+            mv.visitCode();
+            mv.visitTypeInsn(NEW, "p1/T3");
+            mv.visitInsn(DUP);
+            mv.visitMethodInsn(INVOKESPECIAL, "p1/T3", "<init>", "()V", false);
+            mv.visitMethodInsn(INVOKEVIRTUAL, "p1/T2", "m", "()I", false);
+            mv.visitInsn(IRETURN);
+            mv.visitMaxs(3, 2);
+            mv.visitEnd();
+        }
+        cw.visitEnd();
+
+        return cw.toByteArray();
+    }
+}