Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Apr 2013 02:20:17 +0000 (UTC)
From:      "Pedro F. Giffuni" <pfg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r249573 - in head: cddl/contrib/opensolaris/cmd/dtrace cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs cddl/contrib/opensol...
Message-ID:  <201304170220.r3H2KHIb004949@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pfg
Date: Wed Apr 17 02:20:17 2013
New Revision: 249573
URL: http://svnweb.freebsd.org/changeset/base/249573

Log:
  DTrace: Revert r249367
  
  The following change from illumos brought caused DTrace to
  pause in an interactive environment:
  
  3026 libdtrace should set LD_NOLAZYLOAD=1 to help the pid provider
  
  This was not detected during testing because it doesn't
  affect scripts.
  
  We shouldn't be changing the environment, especially since the
  LD_NOLAZYLOAD option doesn't apply to our (GNU) ld.
  Unfortunately the change from upstream was made in such a way
  that it is very difficult to separate this change from the
  others so, at least for now, it's better to just revert
  everything.
  
  Reference:
  https://www.illumos.org/issues/3026
  
  Reported by:	Navdeep Parhar and Mark Johnston

Added:
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.complex.d
     - copied unchanged from r249366, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.complex.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/predicates/tst.predcache.ksh
     - copied unchanged from r249366, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/predicates/tst.predcache.ksh
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_DYN.bad.d
     - copied unchanged from r249366, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_DYN.bad.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/man.TestTransStability.d
     - copied unchanged from r249366, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/man.TestTransStability.d
Deleted:
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.sizedkeys.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.sizedkeys.d.out
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.basics.d.out
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compcast.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compcast.d.out
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compnarrowassign.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compnarrowassign.d.out
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.execcast.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.execcast.d.out
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/cg/
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pointers/tst.assigncast1.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pointers/tst.assigncast2.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pragma/tst.temporal.ksh
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pragma/tst.temporal2.ksh
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pragma/tst.temporal3.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.dyn.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d.out
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/printf/tst.signs.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/printf/tst.signs.d.out
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/trace/tst.dyn.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/tst.TestTransStability1.ksh
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/tst.TestTransStability1.ksh.out
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/tst.TestTransStability2.ksh
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/tst.TestTransStability2.ksh.out
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_pq.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_pq.h
Modified:
  head/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c
  head/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/buffering/tst.fill1.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/buffering/tst.ring3.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.newprobes.ksh
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/printf/tst.ints.d.out
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/err.BufSizeVariations1.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/tst.SpecSizeVariations3.d
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dis.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_options.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_parser.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_printf.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.h
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.h
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c
  head/cddl/contrib/opensolaris/lib/libdtrace/i386/dt_isadep.c
  head/cddl/lib/libdtrace/Makefile
  head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
  head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h
  head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace_impl.h

Modified: head/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c
==============================================================================
--- head/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c	Wed Apr 17 02:03:12 2013	(r249572)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c	Wed Apr 17 02:20:17 2013	(r249573)
@@ -23,9 +23,8 @@
  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
-/*
- * Copyright (c) 2012 by Delphix. All rights reserved.
- */
+
+#pragma ident	"%Z%%M%	%I%	%E% SMI"
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -1410,7 +1409,6 @@ main(int argc, char *argv[])
 	(void) dtrace_setopt(g_dtp, "bufsize", "4m");
 	(void) dtrace_setopt(g_dtp, "aggsize", "4m");
 #endif
-	(void) dtrace_setopt(g_dtp, "temporal", "yes");
 
 	/*
 	 * If -G is specified, enable -xlink=dynamic and -xunodefs to permit

Modified: head/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl
==============================================================================
--- head/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl	Wed Apr 17 02:03:12 2013	(r249572)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl	Wed Apr 17 02:20:17 2013	(r249573)
@@ -583,8 +583,6 @@ if ($opt_x) {
 die "$PNAME: failed to open $PNAME.$$.log: $!\n"
     unless (!$opt_l || open(LOG, ">$PNAME.$$.log"));
 
-$ENV{'DTRACE_DEBUG_REGSET'} = 'true';
-
 if ($opt_g) {
 	$ENV{'UMEM_DEBUG'} = 'default,verbose';
 	$ENV{'UMEM_LOGGING'} = 'fail,contents';

Copied: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.complex.d (from r249366, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.complex.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.complex.d	Wed Apr 17 02:20:17 2013	(r249573, copy of r249366, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.complex.d)
@@ -0,0 +1,57 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#pragma	ident	"%Z%%M%	%I%	%E% SMI"
+
+/*
+ * ASSERTION:
+ * 	Complex expressions.
+ *	Call complex expressions and make sure test succeeds.
+ *	Match expected output in tst.complex.d.out
+ *
+ * SECTION: Types, Operators, and Expressions/Arithmetic Operators
+ *
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+	i = 0;
+	i = i++ + ++i;
+	printf("The value of i is %d\n", i);
+	i = i-- - --i;
+	printf("The value of i is %d\n", i);
+	i = i-- + ++i;
+	printf("The value of i is %d\n", i);
+	i += i++ + -- i + ++i - ++i * i ;
+	printf("The value of i is %d\n", i);
+	i -= i++ * 3;
+	printf("The value of i is %d\n", i);
+	i = i++/i--+i++-++i-++i;
+	printf("The value of i is %d\n", i);
+	exit (0);
+}

Modified: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/buffering/tst.fill1.d
==============================================================================
--- head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/buffering/tst.fill1.d	Wed Apr 17 02:03:12 2013	(r249572)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/buffering/tst.fill1.d	Wed Apr 17 02:20:17 2013	(r249573)
@@ -23,29 +23,26 @@
  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
-/*
- * Copyright (c) 2012 by Delphix. All rights reserved.
- */
+
+#pragma ident	"%Z%%M%	%I%	%E% SMI"
 
 /*
  * ASSERTION:
  *   Positive test for fill buffer policy.
  *
  * SECTION: Buffers and Buffering/fill Policy;
- *	Buffers and Buffering/Buffer Sizes;
+ * 	Buffers and Buffering/Buffer Sizes;
  *	Options and Tunables/bufsize;
  *	Options and Tunables/bufpolicy;
  *	Options and Tunables/statusrate
  */
 /*
- * This is a brute-force way of testing fill buffers.  We assume that
- * each printf() stores 16 bytes (4x 32-bit words for EPID, timestamp
- * lo, timestamp hi, and the variable i).  Because each fill buffer is
- * per-CPU, we must fill up our buffer in one series of enablings on a
- * single CPU.
+ * This is a brute-force way of testing fill buffers.  We assume that each
+ * printf() stores 8 bytes.  Because each fill buffer is per-CPU, we must
+ * fill up our buffer in one series of enablings on a single CPU.
  */
 #pragma D option bufpolicy=fill
-#pragma D option bufsize=128
+#pragma D option bufsize=64
 #pragma D option statusrate=10ms
 #pragma D option quiet
 

Modified: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/buffering/tst.ring3.d
==============================================================================
--- head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/buffering/tst.ring3.d	Wed Apr 17 02:03:12 2013	(r249572)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/buffering/tst.ring3.d	Wed Apr 17 02:20:17 2013	(r249573)
@@ -23,9 +23,8 @@
  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
-/*
- * Copyright (c) 2012 by Delphix. All rights reserved.
- */
+
+#pragma ident	"%Z%%M%	%I%	%E% SMI"
 
 /*
  * ASSERTION:
@@ -38,20 +37,19 @@
  */
 
 /*
- * We make some regrettable assumptions about the implementation in this
- * test.  First, we assume that each entry for the printf() of an int
- * takes _exactly_ 16 bytes (4 bytes for the EPID, 8 bytes for the
- * timestamp, 4 bytes for the payload).  Second, we assume that by
- * allocating storage for n + 1 records, we will get exactly n.  Here is
- * why:  the final predicate that evaluates to false will reserve space
- * that it won't use.  This act of reservation will advance the wrapped
- * offset.  That record won't be subsequently used, but the wrapped
- * offset has advanced.  (And in this case, that old record is clobbered
- * by the exit() anyway.)  Thirdly:  we rely on t_cpu/cpu_id.  Finally:
- * we rely on being able to run on the CPU that we first ran on.
+ * We make some regrettable assumptions about the implementation in this test.
+ * First, we assume that each entry for the printf() of an int takes _exactly_
+ * eight bytes (four bytes for the EPID, four bytes for the payload).  Second,
+ * we assume that by allocating storage for n + 1 records, we will get exactly
+ * n.  Here is why:  the final predicate that evaluates to false will reserve
+ * space that it won't use.  This act of reservation will advance the wrapped
+ * offset.  That record won't be subsequently used, but the wrapped offset has
+ * advanced.  (And in this case, that old record is clobbered by the exit()
+ * anyway.)  Thirdly:  we rely on t_cpu/cpu_id.  Finally:  we rely on being
+ * able to run on the CPU that we first ran on.
  */
 #pragma D option bufpolicy=ring
-#pragma D option bufsize=80
+#pragma D option bufsize=40
 #pragma D option quiet
 
 int n;

Modified: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.newprobes.ksh
==============================================================================
--- head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.newprobes.ksh	Wed Apr 17 02:03:12 2013	(r249572)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pid/tst.newprobes.ksh	Wed Apr 17 02:20:17 2013	(r249573)
@@ -24,9 +24,7 @@
 # Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
 # Use is subject to license terms.
 #
-
-#
-# Copyright (c) 2012 by Delphix. All rights reserved.
+# ident	"%Z%%M%	%I%	%E% SMI"
 #
 
 if [ $# != 1 ]; then
@@ -51,13 +49,13 @@ tick-1s
 tick-1s
 /(i % 2) == 0/
 {
-	system("dtrace -c date -n 'pid\$target::main:entry' >/dev/null");
+	system("dtrace -c date -ln 'pid\$target::main:entry' >/dev/null");
 }
 
 tick-1s
 /(i % 2) == 1/
 {
-	system("dtrace -c date -n 'pid\$target::main:return' >/dev/null");
+	system("dtrace -c date -ln 'pid\$target::main:return' >/dev/null");
 }
 EOF
 

Copied: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/predicates/tst.predcache.ksh (from r249366, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/predicates/tst.predcache.ksh)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/predicates/tst.predcache.ksh	Wed Apr 17 02:20:17 2013	(r249573, copy of r249366, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/predicates/tst.predcache.ksh)
@@ -0,0 +1,197 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+# Use is subject to license terms.
+#
+# ident	"%Z%%M%	%I%	%E% SMI"
+
+unload()
+{
+	#
+	# Get the list of services whose processes have USDT probes.  Ideally
+	# it would be possible to unload the fasttrap provider while USDT
+	# probes exist -- once that fix is integrated, this hack can go away
+	# We create two lists -- one of regular SMF services and one of legacy
+	# services -- since each must be enabled and disabled using a specific
+	# mechanism.
+	#
+	pids=$(dtrace -l | \
+	    perl -ne 'print "$1\n" if (/^\s*\S+\s+\S*\D(\d+)\s+/);' | \
+	    sort | uniq | tr '\n' ',')
+
+	ctids=$(ps -p $pids -o ctid | tail +2 | sort | uniq)
+	svcs=
+	lrcs=
+
+	for ct in $ctids
+	do
+		line=$(svcs -o fmri,ctid | grep " $ct\$")
+		svc=$(echo $line | cut -d' ' -f1)
+
+		if [[ $(svcs -Ho STA $svc) == "LRC" ]]; then
+			lrc=$(svcs -Ho SVC $svc | tr _ '?')
+			lrcs="$lrcs $lrc"
+		else
+			svcs="$svcs $svc"
+	fi
+	done
+
+	for svc in $svcs
+	do
+		svcadm disable -ts $svc
+	done
+
+	for lrc in $lrcs
+	do
+		#
+		# Does it seem a little paternalistic that lsvcrun requires
+		# this environment variable to be set? I'd say so...
+		#
+		SMF_RESTARTER=svc:/system/svc/restarter:default \
+		    /lib/svc/bin/lsvcrun $lrc stop
+	done
+
+	modunload -i 0
+	modunload -i 0
+	modunload -i 0
+	modinfo | grep dtrace
+	success=$?
+
+	for svc in $svcs
+	do
+		svcadm enable -ts $svc
+	done
+
+	for lrc in $lrcs
+	do
+		SMF_RESTARTER=svc:/system/svc/restarter:default \
+		    /lib/svc/bin/lsvcrun $lrc start
+	done
+
+	if [ ! $success ]; then
+		echo $tst: could not unload dtrace
+		exit 1
+	fi
+}
+
+script1()
+{
+	$dtrace -s /dev/stdin <<EOF
+	syscall:::entry
+	/pid != $ppid/
+	{
+		@a[probefunc] = count();
+	}
+
+	tick-1sec
+	/i++ == 5/
+	{
+		exit(0);
+	}
+EOF
+}
+
+script2()
+{
+	$dtrace -s /dev/stdin <<EOF
+
+	#pragma D option statusrate=1ms
+
+	syscall:::entry
+	/pid == $ppid/
+	{
+		ttl++;
+	}
+
+	tick-1sec
+	/i++ == 5/
+	{
+		exit(2);
+	}
+
+	END
+	/ttl/
+	{
+		printf("success; ttl is %d", ttl);
+		exit(0);
+	}
+
+	END
+	/ttl == 0/
+	{
+		printf("error -- total should be non-zero");
+		exit(1);
+	}
+EOF
+}
+
+if [ $# != 1 ]; then
+	echo expected one argument: '<'dtrace-path'>'
+	exit 2
+fi
+
+ppid=$$
+dtrace=$1
+
+unload
+script1 &
+child=$!
+
+let waited=0
+
+while [ "$waited" -lt 5 ]; do
+	seconds=`date +%S`
+
+	if [ "$seconds" -ne "$last" ]; then
+		last=$seconds
+		let waited=waited+1
+	fi
+done
+
+wait $child
+status=$?
+
+if [ "$status" -ne 0 ]; then
+	echo $tst: first dtrace failed
+	exit $status
+fi
+
+unload
+script2 &
+child=$!
+
+let waited=0
+
+while [ "$waited" -lt 10 ]; do
+	seconds=`date +%S`
+
+	if [ "$seconds" -ne "$last" ]; then
+		last=$seconds
+		let waited=waited+1
+	fi
+done
+
+wait $child
+status=$?
+
+exit $status

Copied: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_DYN.bad.d (from r249366, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_DYN.bad.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_DYN.bad.d	Wed Apr 17 02:20:17 2013	(r249573, copy of r249366, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_DYN.bad.d)
@@ -0,0 +1,29 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (c) 2011 by Delphix. All rights reserved.
+ */
+
+BEGIN
+{
+	print(*curpsinfo);
+}

Modified: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/printf/tst.ints.d.out
==============================================================================
--- head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/printf/tst.ints.d.out	Wed Apr 17 02:03:12 2013	(r249572)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/printf/tst.ints.d.out	Wed Apr 17 02:20:17 2013	(r249573)
@@ -1,6 +1,6 @@
 
--17
--12817
+239
+52719
 -1867788817
 1311768467294899695
 

Modified: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/err.BufSizeVariations1.d
==============================================================================
--- head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/err.BufSizeVariations1.d	Wed Apr 17 02:03:12 2013	(r249572)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/err.BufSizeVariations1.d	Wed Apr 17 02:20:17 2013	(r249573)
@@ -24,10 +24,7 @@
  * Use is subject to license terms.
  */
 
-/*
- * Copyright (c) 2012 by Delphix. All rights reserved.
- */
-
+#pragma ident	"%Z%%M%	%I%	%E% SMI"
 
 /*
  * ASSERTION:
@@ -38,10 +35,17 @@
  *
  * NOTES: This test behaves differently depending on the values
  * assigned to bufsize.
+ * 1. 0 > bufsize.
+ * 2. 0 == bufsize.
+ * 3. 0 < bufsize <= 7
+ * 4. 8 <= bufsize <= 31
+ * 5. 32 <= bufsize <= 47
+ * 6. 48 <= bufsize <= 71
+ * 7. 72 <= bufsize
  */
 
 #pragma D option quiet
-#pragma D option bufsize=49
+#pragma D option bufsize=41
 
 BEGIN
 {

Modified: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/tst.SpecSizeVariations3.d
==============================================================================
--- head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/tst.SpecSizeVariations3.d	Wed Apr 17 02:03:12 2013	(r249572)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/tst.SpecSizeVariations3.d	Wed Apr 17 02:20:17 2013	(r249573)
@@ -24,10 +24,7 @@
  * Use is subject to license terms.
  */
 
-/*
- * Copyright (c) 2012 by Delphix. All rights reserved.
- */
-
+#pragma ident	"%Z%%M%	%I%	%E% SMI"
 /*
  * ASSERTION:
  * Verify the behavior of speculations with changes in specsize.
@@ -38,7 +35,7 @@
  */
 
 #pragma D option quiet
-#pragma D option specsize=48
+#pragma D option specsize=40
 
 BEGIN
 {

Copied: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/man.TestTransStability.d (from r249366, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/man.TestTransStability.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/man.TestTransStability.d	Wed Apr 17 02:20:17 2013	(r249573, copy of r249366, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/man.TestTransStability.d)
@@ -0,0 +1,61 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#pragma ident	"%Z%%M%	%I%	%E% SMI"
+
+/*
+ * ASSERTION:
+ * The D inline translation mechanism can be used to facilitate stable
+ * translations.
+ *
+ * SECTION: Translators/ Translator Declarations
+ * SECTION: Translators/ Translate Operator
+ * SECTION: Translators/Stable Translations
+ *
+ * NOTES: Uncomment the pragma that explicitly resets the attributes of
+ * myinfo identifier to Stable/Stable/Common from Private/Private/Unknown.
+ * Run the program with and without the comments as:
+ * /usr/sbin/dtrace -vs man.TestTransStability.d
+ */
+
+#pragma D option quiet
+
+inline lwpsinfo_t *myinfo = xlate < lwpsinfo_t *> (curthread);
+
+/*
+#pragma D attributes Stable/Stable/Common myinfo
+*/
+
+BEGIN
+{
+	trace(myinfo->pr_flag);
+	exit(0);
+}
+
+ERROR
+{
+	exit(1);
+}

Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c	Wed Apr 17 02:03:12 2013	(r249572)
+++ head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c	Wed Apr 17 02:20:17 2013	(r249573)
@@ -26,7 +26,6 @@
 
 /*
  * Copyright (c) 2011, Joyent, Inc. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
  */
 
 #include <stdlib.h>
@@ -895,14 +894,33 @@ dt_aggregate_valcmp(const void *lhs, con
 	caddr_t rdata = rh->dtahe_data.dtada_data;
 	dtrace_recdesc_t *lrec, *rrec;
 	int64_t *laddr, *raddr;
-	int rval;
+	int rval, i;
+
+	if ((rval = dt_aggregate_hashcmp(lhs, rhs)) != 0)
+		return (rval);
+
+	if (lagg->dtagd_nrecs > ragg->dtagd_nrecs)
+		return (DT_GREATERTHAN);
+
+	if (lagg->dtagd_nrecs < ragg->dtagd_nrecs)
+		return (DT_LESSTHAN);
 
-	assert(lagg->dtagd_nrecs == ragg->dtagd_nrecs);
+	for (i = 0; i < lagg->dtagd_nrecs; i++) {
+		lrec = &lagg->dtagd_rec[i];
+		rrec = &ragg->dtagd_rec[i];
 
-	lrec = &lagg->dtagd_rec[lagg->dtagd_nrecs - 1];
-	rrec = &ragg->dtagd_rec[ragg->dtagd_nrecs - 1];
+		if (lrec->dtrd_offset < rrec->dtrd_offset)
+			return (DT_LESSTHAN);
+
+		if (lrec->dtrd_offset > rrec->dtrd_offset)
+			return (DT_GREATERTHAN);
 
-	assert(lrec->dtrd_action == rrec->dtrd_action);
+		if (lrec->dtrd_action < rrec->dtrd_action)
+			return (DT_LESSTHAN);
+
+		if (lrec->dtrd_action > rrec->dtrd_action)
+			return (DT_GREATERTHAN);
+	}
 
 	laddr = (int64_t *)(uintptr_t)(ldata + lrec->dtrd_offset);
 	raddr = (int64_t *)(uintptr_t)(rdata + rrec->dtrd_offset);

Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c	Wed Apr 17 02:03:12 2013	(r249572)
+++ head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c	Wed Apr 17 02:20:17 2013	(r249573)
@@ -22,7 +22,7 @@
 /*
  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2011, Joyent Inc. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2011 by Delphix. All rights reserved.
  */
 
 /*
@@ -664,17 +664,15 @@ static void
 dt_action_trace(dtrace_hdl_t *dtp, dt_node_t *dnp, dtrace_stmtdesc_t *sdp)
 {
 	dtrace_actdesc_t *ap = dt_stmt_action(dtp, sdp);
-	boolean_t istrace = (dnp->dn_ident->di_id == DT_ACT_TRACE);
-	const char *act = istrace ?  "trace" : "print";
 
 	if (dt_node_is_void(dnp->dn_args)) {
-		dnerror(dnp->dn_args, istrace ? D_TRACE_VOID : D_PRINT_VOID,
-		    "%s( ) may not be applied to a void expression\n", act);
+		dnerror(dnp->dn_args, D_TRACE_VOID,
+		    "trace( ) may not be applied to a void expression\n");
 	}
 
-	if (dt_node_resolve(dnp->dn_args, DT_IDENT_XLPTR) != NULL) {
-		dnerror(dnp->dn_args, istrace ? D_TRACE_DYN : D_PRINT_DYN,
-		    "%s( ) may not be applied to a translated pointer\n", act);
+	if (dt_node_is_dynamic(dnp->dn_args)) {
+		dnerror(dnp->dn_args, D_TRACE_DYN,
+		    "trace( ) may not be applied to a dynamic expression\n");
 	}
 
 	if (dnp->dn_args->dn_kind == DT_NODE_AGG) {
@@ -684,34 +682,51 @@ dt_action_trace(dtrace_hdl_t *dtp, dt_no
 	}
 
 	dt_cg(yypcb, dnp->dn_args);
+	ap->dtad_difo = dt_as(yypcb);
+	ap->dtad_kind = DTRACEACT_DIFEXPR;
+}
 
-	/*
-	 * The print() action behaves identically to trace(), except that it
-	 * stores the CTF type of the argument (if present) within the DOF for
-	 * the DIFEXPR action.  To do this, we set the 'dtsd_strdata' to point
-	 * to the fully-qualified CTF type ID for the result of the DIF
-	 * action.  We use the ID instead of the name to handles complex types
-	 * like arrays and function pointers that can't be resolved by
-	 * ctf_type_lookup().  This is later processed by dtrace_dof_create()
-	 * and turned into a reference into the string table so that we can
-	 * get the type information when we process the data after the fact.
-	 */
-	if (dnp->dn_ident->di_id == DT_ACT_PRINT) {
-		dt_node_t *dret;
-		size_t n;
-		dt_module_t *dmp;
-
-		dret = yypcb->pcb_dret;
-		dmp = dt_module_lookup_by_ctf(dtp, dret->dn_ctfp);
-
-		n = snprintf(NULL, 0, "%s`%ld", dmp->dm_name, dret->dn_type) + 1;
-		sdp->dtsd_strdata = dt_alloc(dtp, n);
-		if (sdp->dtsd_strdata == NULL)
-			longjmp(yypcb->pcb_jmpbuf, EDT_NOMEM);
-		(void) snprintf(sdp->dtsd_strdata, n, "%s`%ld", dmp->dm_name,
-		    dret->dn_type);
+/*
+ * The print() action behaves identically to trace(), except that it stores the
+ * CTF type of the argument (if present) within the DOF for the DIFEXPR action.
+ * To do this, we set the 'dtsd_strdata' to point to the fully-qualified CTF
+ * type ID for the result of the DIF action.  We use the ID instead of the name
+ * to handles complex types like arrays and function pointers that can't be
+ * resolved by ctf_type_lookup().  This is later processed by
+ * dtrace_dof_create() and turned into a reference into the string table so
+ * that we can get the type information when we process the data after the
+ * fact.
+ */
+static void
+dt_action_print(dtrace_hdl_t *dtp, dt_node_t *dnp, dtrace_stmtdesc_t *sdp)
+{
+	dtrace_actdesc_t *ap = dt_stmt_action(dtp, sdp);
+	dt_node_t *dret;
+	size_t len;
+	dt_module_t *dmp;
+
+	if (dt_node_is_void(dnp->dn_args)) {
+		dnerror(dnp->dn_args, D_PRINT_VOID,
+		    "print( ) may not be applied to a void expression\n");
 	}
 
+	if (dt_node_is_dynamic(dnp->dn_args)) {
+		dnerror(dnp->dn_args, D_PRINT_DYN,
+		    "print( ) may not be applied to a dynamic expression\n");
+	}
+
+	dt_cg(yypcb, dnp->dn_args);
+
+	dret = yypcb->pcb_dret;
+	dmp = dt_module_lookup_by_ctf(dtp, dret->dn_ctfp);
+
+	len = snprintf(NULL, 0, "%s`%ld", dmp->dm_name, dret->dn_type) + 1;
+	sdp->dtsd_strdata = dt_alloc(dtp, len);
+	if (sdp->dtsd_strdata == NULL)
+		longjmp(yypcb->pcb_jmpbuf, EDT_NOMEM);
+	(void) snprintf(sdp->dtsd_strdata, len, "%s`%ld", dmp->dm_name,
+	    dret->dn_type);
+
 	ap->dtad_difo = dt_as(yypcb);
 	ap->dtad_kind = DTRACEACT_DIFEXPR;
 }
@@ -1136,9 +1151,6 @@ dt_compile_fun(dtrace_hdl_t *dtp, dt_nod
 	case DT_ACT_PANIC:
 		dt_action_panic(dtp, dnp->dn_expr, sdp);
 		break;
-	case DT_ACT_PRINT:
-		dt_action_trace(dtp, dnp->dn_expr, sdp);
-		break;
 	case DT_ACT_PRINTA:
 		dt_action_printa(dtp, dnp->dn_expr, sdp);
 		break;
@@ -1175,6 +1187,9 @@ dt_compile_fun(dtrace_hdl_t *dtp, dt_nod
 	case DT_ACT_TRACE:
 		dt_action_trace(dtp, dnp->dn_expr, sdp);
 		break;
+	case DT_ACT_PRINT:
+		dt_action_print(dtp, dnp->dn_expr, sdp);
+		break;
 	case DT_ACT_TRACEMEM:
 		dt_action_tracemem(dtp, dnp->dn_expr, sdp);
 		break;
@@ -2550,8 +2565,7 @@ dt_compile(dtrace_hdl_t *dtp, int contex
 	}
 
 out:
-	if (context != DT_CTX_DTYPE && yypcb->pcb_root != NULL &&
-	    DT_TREEDUMP_PASS(dtp, 3))
+	if (context != DT_CTX_DTYPE && DT_TREEDUMP_PASS(dtp, 3))
 		dt_node_printr(yypcb->pcb_root, stderr, 0);
 
 	if (dtp->dt_cdefs_fd != -1 && (ftruncate64(dtp->dt_cdefs_fd, 0) == -1 ||

Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c	Wed Apr 17 02:03:12 2013	(r249572)
+++ head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c	Wed Apr 17 02:20:17 2013	(r249573)
@@ -19,15 +19,12 @@
  *
  * CDDL HEADER END
  */
-
 /*
  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
-/*
- * Copyright (c) 2012 by Delphix. All rights reserved.
- */
+#pragma ident	"%Z%%M%	%I%	%E% SMI"
 
 #include <sys/types.h>
 #include <sys/sysmacros.h>
@@ -196,6 +193,9 @@ dt_cg_ptrsize(dt_node_t *dnp, dt_irlist_
 	ssize_t size;
 	int sreg;
 
+	if ((sreg = dt_regset_alloc(drp)) == -1)
+		longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
+
 	type = ctf_type_resolve(ctfp, dnp->dn_type);
 	kind = ctf_type_kind(ctfp, type);
 	assert(kind == CTF_K_POINTER || kind == CTF_K_ARRAY);
@@ -212,7 +212,6 @@ dt_cg_ptrsize(dt_node_t *dnp, dt_irlist_
 	if ((size = ctf_type_size(ctfp, type)) == 1)
 		return; /* multiply or divide by one can be omitted */
 
-	sreg = dt_regset_alloc(drp);
 	dt_cg_setx(dlp, sreg, size);
 	instr = DIF_INSTR_FMT(op, dreg, sreg, dreg);
 	dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr));
@@ -252,7 +251,9 @@ dt_cg_field_get(dt_node_t *dnp, dt_irlis
 
 	assert(dnp->dn_op == DT_TOK_PTR || dnp->dn_op == DT_TOK_DOT);
 	r1 = dnp->dn_left->dn_reg;
-	r2 = dt_regset_alloc(drp);
+
+	if ((r2 = dt_regset_alloc(drp)) == -1)
+		longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
 
 	/*
 	 * On little-endian architectures, ctm_offset counts from the right so
@@ -355,9 +356,10 @@ dt_cg_field_set(dt_node_t *src, dt_irlis
 		    "bits %u\n", m.ctm_offset, m.ctm_type, e.cte_bits);
 	}
 
-	r1 = dt_regset_alloc(drp);
-	r2 = dt_regset_alloc(drp);
-	r3 = dt_regset_alloc(drp);
+	if ((r1 = dt_regset_alloc(drp)) == -1 ||
+	    (r2 = dt_regset_alloc(drp)) == -1 ||
+	    (r3 = dt_regset_alloc(drp)) == -1)
+		longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
 
 	/*
 	 * Compute shifts and masks.  We need to compute "shift" as the amount
@@ -421,7 +423,8 @@ dt_cg_store(dt_node_t *src, dt_irlist_t 
 		size = dt_node_type_size(src);
 
 	if (src->dn_flags & DT_NF_REF) {
-		reg = dt_regset_alloc(drp);
+		if ((reg = dt_regset_alloc(drp)) == -1)
+			longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
 		dt_cg_setx(dlp, reg, size);
 		instr = DIF_INSTR_COPYS(src->dn_reg, reg, dst->dn_reg);
 		dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr));
@@ -471,58 +474,30 @@ dt_cg_typecast(const dt_node_t *src, con
 	size_t dstsize = dt_node_type_size(dst);
 
 	dif_instr_t instr;
-	int rg;
-
-	if (!dt_node_is_scalar(dst))
-		return; /* not a scalar */
-	if (dstsize == srcsize &&
-	    ((src->dn_flags ^ dst->dn_flags) & DT_NF_SIGNED) != 0)
-		return; /* not narrowing or changing signed-ness */
-	if (dstsize > srcsize && (src->dn_flags & DT_NF_SIGNED) == 0)
-		return; /* nothing to do in this case */
-
-	rg = dt_regset_alloc(drp);
-
-	if (dstsize > srcsize) {
-		int n = sizeof (uint64_t) * NBBY - srcsize * NBBY;
-		int s = (dstsize - srcsize) * NBBY;
-
-		dt_cg_setx(dlp, rg, n);
+	int reg, n;
 
-		instr = DIF_INSTR_FMT(DIF_OP_SLL, src->dn_reg, rg, dst->dn_reg);
-		dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr));
+	if (dt_node_is_scalar(dst) && (dstsize < srcsize ||
+	    (src->dn_flags & DT_NF_SIGNED) ^ (dst->dn_flags & DT_NF_SIGNED))) {
+		if ((reg = dt_regset_alloc(drp)) == -1)
+			longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
 
-		if ((dst->dn_flags & DT_NF_SIGNED) || n == s) {
-			instr = DIF_INSTR_FMT(DIF_OP_SRA,
-			    dst->dn_reg, rg, dst->dn_reg);
-			dt_irlist_append(dlp,
-			    dt_cg_node_alloc(DT_LBL_NONE, instr));
-		} else {
-			dt_cg_setx(dlp, rg, s);
-			instr = DIF_INSTR_FMT(DIF_OP_SRA,
-			    dst->dn_reg, rg, dst->dn_reg);
-			dt_irlist_append(dlp,
-			    dt_cg_node_alloc(DT_LBL_NONE, instr));
-			dt_cg_setx(dlp, rg, n - s);
-			instr = DIF_INSTR_FMT(DIF_OP_SRL,
-			    dst->dn_reg, rg, dst->dn_reg);
-			dt_irlist_append(dlp,
-			    dt_cg_node_alloc(DT_LBL_NONE, instr));
-		}
-	} else if (dstsize != sizeof (uint64_t)) {
-		int n = sizeof (uint64_t) * NBBY - dstsize * NBBY;
+		if (dstsize < srcsize)
+			n = sizeof (uint64_t) * NBBY - dstsize * NBBY;
+		else
+			n = sizeof (uint64_t) * NBBY - srcsize * NBBY;
 
-		dt_cg_setx(dlp, rg, n);
+		dt_cg_setx(dlp, reg, n);
 
-		instr = DIF_INSTR_FMT(DIF_OP_SLL, src->dn_reg, rg, dst->dn_reg);
+		instr = DIF_INSTR_FMT(DIF_OP_SLL,
+		    src->dn_reg, reg, dst->dn_reg);
 		dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr));
 
 		instr = DIF_INSTR_FMT((dst->dn_flags & DT_NF_SIGNED) ?
-		    DIF_OP_SRA : DIF_OP_SRL, dst->dn_reg, rg, dst->dn_reg);
+		    DIF_OP_SRA : DIF_OP_SRL, dst->dn_reg, reg, dst->dn_reg);
+
 		dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr));
+		dt_regset_free(drp, reg);
 	}
-
-	dt_regset_free(drp, rg);
 }
 
 /*
@@ -548,7 +523,8 @@ dt_cg_arglist(dt_ident_t *idp, dt_node_t
 	for (dnp = args; dnp != NULL; dnp = dnp->dn_list)
 		dt_cg_node(dnp, dlp, drp);
 
-	dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, DIF_INSTR_FLUSHTS));
+	dt_irlist_append(dlp,
+	    dt_cg_node_alloc(DT_LBL_NONE, DIF_INSTR_FLUSHTS));
 
 	for (dnp = args; dnp != NULL; dnp = dnp->dn_list, i++) {
 		dtrace_diftype_t t;
@@ -562,18 +538,17 @@ dt_cg_arglist(dt_ident_t *idp, dt_node_t
 		dt_cg_typecast(dnp, &isp->dis_args[i], dlp, drp);
 		isp->dis_args[i].dn_reg = -1;
 
-		if (t.dtdt_flags & DIF_TF_BYREF) {
+		if (t.dtdt_flags & DIF_TF_BYREF)
 			op = DIF_OP_PUSHTR;
-			if (t.dtdt_size != 0) {
-				reg = dt_regset_alloc(drp);
-				dt_cg_setx(dlp, reg, t.dtdt_size);
-			} else {
-				reg = DIF_REG_R0;
-			}
-		} else {
+		else
 			op = DIF_OP_PUSHTV;
+
+		if (t.dtdt_size != 0) {
+			if ((reg = dt_regset_alloc(drp)) == -1)
+				longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
+			dt_cg_setx(dlp, reg, t.dtdt_size);
+		} else
 			reg = DIF_REG_R0;
-		}
 
 		instr = DIF_INSTR_PUSHTS(op, t.dtdt_kind, reg, dnp->dn_reg);
 		dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr));
@@ -654,7 +629,9 @@ dt_cg_prearith_op(dt_node_t *dnp, dt_irl
 	dt_cg_node(dnp->dn_child, dlp, drp);
 	dnp->dn_reg = dnp->dn_child->dn_reg;
 
-	reg = dt_regset_alloc(drp);
+	if ((reg = dt_regset_alloc(drp)) == -1)
+		longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
+
 	dt_cg_setx(dlp, reg, size);
 
 	instr = DIF_INSTR_FMT(op, dnp->dn_reg, reg, dnp->dn_reg);
@@ -711,7 +688,9 @@ dt_cg_postarith_op(dt_node_t *dnp, dt_ir
 	dt_cg_node(dnp->dn_child, dlp, drp);
 	dnp->dn_reg = dnp->dn_child->dn_reg;
 
-	nreg = dt_regset_alloc(drp);
+	if ((nreg = dt_regset_alloc(drp)) == -1)
+		longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
+
 	dt_cg_setx(dlp, nreg, size);
 	instr = DIF_INSTR_FMT(op, dnp->dn_reg, nreg, nreg);
 	dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr));
@@ -1029,7 +1008,9 @@ dt_cg_asgn_op(dt_node_t *dnp, dt_irlist_
 		 * set it to the size of our data structure, and then replace
 		 * it with the result of an allocs of the specified size.
 		 */
-		r1 = dt_regset_alloc(drp);
+		if ((r1 = dt_regset_alloc(drp)) == -1)
+			longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
+
 		dt_cg_setx(dlp, r1,
 		    ctf_type_size(dxp->dx_dst_ctfp, dxp->dx_dst_base));
 
@@ -1073,7 +1054,8 @@ dt_cg_asgn_op(dt_node_t *dnp, dt_irlist_
 			 * and add r1 to it before storing the result.
 			 */
 			if (ctm.ctm_offset != 0) {
-				r2 = dt_regset_alloc(drp);
+				if ((r2 = dt_regset_alloc(drp)) == -1)
+					longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
 
 				/*
 				 * Add the member offset rounded down to the
@@ -1160,7 +1142,8 @@ dt_cg_assoc_op(dt_node_t *dnp, dt_irlist
 
 	dt_cg_arglist(dnp->dn_ident, dnp->dn_args, dlp, drp);
 
-	dnp->dn_reg = dt_regset_alloc(drp);
+	if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1)
+		longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
 
 	if (dnp->dn_ident->di_flags & DT_IDFLG_TLS)
 		op = DIF_OP_LDTAA;
@@ -1290,7 +1273,9 @@ dt_cg_array_op(dt_node_t *dnp, dt_irlist
 	if ((size = dt_node_type_size(dnp)) == sizeof (uint64_t))
 		return;
 

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201304170220.r3H2KHIb004949>