Source code

Revision control

Copy as Markdown

Other Tools

// Test06.cpp
#include "nsPIDOMWindow.h"
#include "nsIDocShell.h"
#include "nsIBaseWindow.h"
#include "nsCOMPtr.h"
NS_DEF_PTR(nsPIDOMWindow);
NS_DEF_PTR(nsIBaseWindow);
/*
Windows:
nsCOMPtr_optimized 176
nsCOMPtr_as_found 181
nsCOMPtr_optimized* 182
nsCOMPtr02* 184
nsCOMPtr02 187
nsCOMPtr02* 188
nsCOMPtr03 189
raw_optimized, nsCOMPtr00 191
nsCOMPtr00* 199
nsCOMPtr_as_found* 201
raw 214
Macintosh:
nsCOMPtr_optimized 300 (1.0000)
nsCOMPtr02 320 (1.0667) i.e., 6.67% bigger than
nsCOMPtr_optimized nsCOMPtr00 328 (1.0933) raw_optimized,
nsCOMPtr03 332 (1.1067) nsCOMPtr_as_found 344 (1.1467) raw
388 (1.2933)
*/
void // nsresult
Test06_raw(nsIDOMWindow* aDOMWindow, nsIBaseWindow** aBaseWindow)
// m388, w214
{
// if (!aDOMWindow)
// return NS_ERROR_NULL_POINTER;
nsPIDOMWindow* window = 0;
nsresult status =
aDOMWindow->QueryInterface(NS_GET_IID(nsPIDOMWindow), (void**)&window);
nsIDocShell* docShell = 0;
if (window) window->GetDocShell(&docShell);
nsIWebShell* rootWebShell = 0;
NS_IF_RELEASE(rootWebShell);
NS_IF_RELEASE(docShell);
NS_IF_RELEASE(window);
// return status;
}
void // nsresult
Test06_raw_optimized(nsIDOMWindow* aDOMWindow, nsIBaseWindow** aBaseWindow)
// m332, w191
{
// if (!aDOMWindow)
// return NS_ERROR_NULL_POINTER;
(*aBaseWindow) = 0;
nsPIDOMWindow* window;
nsresult status =
aDOMWindow->QueryInterface(NS_GET_IID(nsPIDOMWindow), (void**)&window);
if (NS_SUCCEEDED(status)) {
nsIDocShell* docShell = 0;
window->GetDocShell(&docShell);
if (docShell) {
NS_RELEASE(docShell);
}
NS_RELEASE(window);
}
// return status;
}
void Test06_nsCOMPtr_as_found(nsIDOMWindow* aDOMWindow,
nsCOMPtr<nsIBaseWindow>* aBaseWindow)
// m344, w181/201
{
// if (!aDOMWindow)
// return;
nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aDOMWindow);
nsCOMPtr<nsIDocShell> docShell;
if (window) window->GetDocShell(getter_AddRefs(docShell));
}
void // nsresult
Test06_nsCOMPtr00(nsIDOMWindow* aDOMWindow, nsIBaseWindow** aBaseWindow)
// m328, w191/199
{
// if (!aDOMWindow)
// return NS_ERROR_NULL_POINTER;
nsresult status;
nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aDOMWindow, &status);
nsIDocShell* temp0 = 0;
if (window) window->GetDocShell(&temp0);
nsCOMPtr<nsIDocShell> docShell = dont_AddRef(temp0);
(*aBaseWindow) = 0;
// return status;
}
void // nsresult
Test06_nsCOMPtr_optimized(nsIDOMWindow* aDOMWindow,
nsCOMPtr<nsIBaseWindow>* aBaseWindow)
// m300, w176/182
{
// if (!aDOMWindow)
// return NS_ERROR_NULL_POINTER;
nsresult status;
nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aDOMWindow, &status);
nsIDocShell* temp0 = 0;
if (window) window->GetDocShell(&temp0);
(*aBaseWindow) = do_QueryInterface(nullptr, &status);
// return status;
}
void // nsresult
Test06_nsCOMPtr02(nsIDOMWindow* aDOMWindow, nsIBaseWindow** aBaseWindow)
// m320, w187/184
{
// if (!aDOMWindow)
// return NS_ERROR_NULL_POINTER;
(*aBaseWindow) = 0;
nsresult status;
nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aDOMWindow, &status);
if (window) {
nsIDocShell* temp0;
window->GetDocShell(&temp0);
}
// return status;
}
void // nsresult
Test06_nsCOMPtr03(nsIDOMWindow* aDOMWindow,
nsCOMPtr<nsIBaseWindow>* aBaseWindow)
// m332, w189/188
{
// if (!aDOMWindow)
// return NS_ERROR_NULL_POINTER;
(*aBaseWindow) = 0;
nsresult status;
nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aDOMWindow, &status);
if (window) {
nsIDocShell* temp0;
window->GetDocShell(&temp0);
nsCOMPtr<nsIDocShell> docShell = dont_AddRef(temp0);
if (docShell) {
}
}
// return status;
}