summaryrefslogtreecommitdiffstats
path: root/xpcom/tests/SizeTest03.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xpcom/tests/SizeTest03.cpp')
-rw-r--r--xpcom/tests/SizeTest03.cpp94
1 files changed, 94 insertions, 0 deletions
diff --git a/xpcom/tests/SizeTest03.cpp b/xpcom/tests/SizeTest03.cpp
new file mode 100644
index 0000000000..055db264cd
--- /dev/null
+++ b/xpcom/tests/SizeTest03.cpp
@@ -0,0 +1,94 @@
+// Test03.cpp
+
+#include "nsINode.h"
+#include "nsCOMPtr.h"
+#include "nsString.h"
+
+NS_DEF_PTR(nsINode);
+
+/*
+ Windows:
+ nsCOMPtr_optimized*
+ 45 raw_optimized
+ 48 nsCOMPtr_optimized
+ 50 nsCOMPtr
+ 54 nsCOMPtr*
+ 59 raw
+ 62
+
+ Macintosh:
+ nsCOMPtr_optimized 112
+ (1.0000)
+ raw_optimized 124 bytes
+ (1.1071) i.e., 10.71% bigger than nsCOMPtr_optimized nsCOMPtr
+ 144 (1.2857)
+*/
+
+void // nsresult
+Test03_raw(nsINode* aDOMNode, nsString* aResult)
+// m140, w62
+{
+ // -- the following code is assumed, but is commented out so we compare only
+ // the relevent generated code
+
+ // if ( !aDOMNode || !aResult )
+ // return NS_ERROR_NULL_POINTER;
+
+ nsINode* parent = 0;
+ nsresult status = aDOMNode->GetParentNode(&parent);
+
+ if (NS_SUCCEEDED(status)) {
+ parent->GetNodeName(*aResult);
+ }
+
+ NS_IF_RELEASE(parent);
+
+ // return status;
+}
+
+void // nsresult
+Test03_raw_optimized(nsINode* aDOMNode, nsString* aResult)
+// m124, w48
+{
+ // if ( !aDOMNode || !aResult )
+ // return NS_ERROR_NULL_POINTER;
+
+ nsINode* parent;
+ nsresult status = aDOMNode->GetParentNode(&parent);
+
+ if (NS_SUCCEEDED(status)) {
+ parent->GetNodeName(*aResult);
+ NS_RELEASE(parent);
+ }
+
+ // return status;
+}
+
+void // nsresult
+Test03_nsCOMPtr(nsINode* aDOMNode, nsString* aResult)
+// m144, w54/59
+{
+ // if ( !aDOMNode || !aResult )
+ // return NS_ERROR_NULL_POINTER;
+
+ nsCOMPtr<nsINode> parent;
+ nsresult status = aDOMNode->GetParentNode(getter_AddRefs(parent));
+ if (parent) parent->GetNodeName(*aResult);
+
+ // return status;
+}
+
+void // nsresult
+Test03_nsCOMPtr_optimized(nsINode* aDOMNode, nsString* aResult)
+// m112, w50/45
+{
+ // if ( !aDOMNode || !aResult )
+ // return NS_ERROR_NULL_POINTER;
+
+ nsINode* temp;
+ nsresult status = aDOMNode->GetParentNode(&temp);
+ nsCOMPtr<nsINode> parent(dont_AddRef(temp));
+ if (parent) parent->GetNodeName(*aResult);
+
+ // return status;
+}