72 lines
1.8 KiB
Diff
72 lines
1.8 KiB
Diff
diff -up systemtap-0.6.1/staptree.cxx.orig systemtap-0.6.1/staptree.cxx
|
|
--- systemtap-0.6.1/staptree.cxx.orig 2008-01-17 21:53:20.000000000 -0500
|
|
+++ systemtap-0.6.1/staptree.cxx 2008-02-12 11:16:00.000000000 -0500
|
|
@@ -2370,3 +2370,30 @@ deep_copy_visitor::deep_copy (expression
|
|
require <expression*> (&v, &n, s);
|
|
return n;
|
|
}
|
|
+
|
|
+template <> void
|
|
+require <indexable *> (deep_copy_visitor* v, indexable** dst, indexable* src)
|
|
+{
|
|
+ if (src != NULL)
|
|
+ {
|
|
+ symbol *array_src=NULL, *array_dst=NULL;
|
|
+ hist_op *hist_src=NULL, *hist_dst=NULL;
|
|
+
|
|
+ classify_indexable(src, array_src, hist_src);
|
|
+
|
|
+ *dst = NULL;
|
|
+
|
|
+ if (array_src)
|
|
+ {
|
|
+ require <symbol*> (v, &array_dst, array_src);
|
|
+ *dst = array_dst;
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ require <hist_op*> (v, &hist_dst, hist_src);
|
|
+ *dst = hist_dst;
|
|
+ }
|
|
+ assert (*dst);
|
|
+ }
|
|
+}
|
|
+
|
|
diff -up systemtap-0.6.1/staptree.h.orig systemtap-0.6.1/staptree.h
|
|
--- systemtap-0.6.1/staptree.h.orig 2008-01-17 21:53:20.000000000 -0500
|
|
+++ systemtap-0.6.1/staptree.h 2008-02-12 11:16:00.000000000 -0500
|
|
@@ -846,31 +846,8 @@ require (deep_copy_visitor* v, T* dst, T
|
|
}
|
|
}
|
|
|
|
-template <> static void
|
|
-require <indexable *> (deep_copy_visitor* v, indexable** dst, indexable* src)
|
|
-{
|
|
- if (src != NULL)
|
|
- {
|
|
- symbol *array_src=NULL, *array_dst=NULL;
|
|
- hist_op *hist_src=NULL, *hist_dst=NULL;
|
|
-
|
|
- classify_indexable(src, array_src, hist_src);
|
|
-
|
|
- *dst = NULL;
|
|
-
|
|
- if (array_src)
|
|
- {
|
|
- require <symbol*> (v, &array_dst, array_src);
|
|
- *dst = array_dst;
|
|
- }
|
|
- else
|
|
- {
|
|
- require <hist_op*> (v, &hist_dst, hist_src);
|
|
- *dst = hist_dst;
|
|
- }
|
|
- assert (*dst);
|
|
- }
|
|
-}
|
|
+template <> void
|
|
+require <indexable *> (deep_copy_visitor* v, indexable** dst, indexable* src);
|
|
|
|
template <typename T> void
|
|
provide (deep_copy_visitor* v, T src)
|