~ubuntu-branches/ubuntu/maverick/webkit/maverick

« back to all changes in this revision

Viewing changes to WebKit/Misc/WebCoreStatistics.mm

  • Committer: Bazaar Package Importer
  • Author(s): Mike Hommey
  • Date: 2007-08-19 15:54:12 UTC
  • Revision ID: james.westby@ubuntu.com-20070819155412-uxxg1h9plpghmtbi
Tags: upstream-0~svn25144
ImportĀ upstreamĀ versionĀ 0~svn25144

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 2005, 2006 Apple Computer, Inc.  All rights reserved.
 
3
 *
 
4
 * Redistribution and use in source and binary forms, with or without
 
5
 * modification, are permitted provided that the following conditions
 
6
 * are met:
 
7
 *
 
8
 * 1.  Redistributions of source code must retain the above copyright
 
9
 *     notice, this list of conditions and the following disclaimer. 
 
10
 * 2.  Redistributions in binary form must reproduce the above copyright
 
11
 *     notice, this list of conditions and the following disclaimer in the
 
12
 *     documentation and/or other materials provided with the distribution. 
 
13
 * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
 
14
 *     its contributors may be used to endorse or promote products derived
 
15
 *     from this software without specific prior written permission. 
 
16
 *
 
17
 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
 
18
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 
19
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 
20
 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
 
21
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 
22
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 
23
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 
24
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
25
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 
26
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
27
 */
 
28
 
 
29
#import "WebCoreStatistics.h"
 
30
 
 
31
#import "WebCache.h"
 
32
#import <WebCore/JavaScriptStatistics.h>
 
33
#import <WebCore/Node.h>
 
34
#import <WebKit/WebFrameBridge.h>
 
35
#import <WebKit/WebFrameInternal.h>
 
36
 
 
37
using namespace WebCore;
 
38
 
 
39
@implementation WebCoreStatistics
 
40
 
 
41
+ (NSArray *)statistics
 
42
{
 
43
    return [WebCache statistics];
 
44
}
 
45
 
 
46
+ (size_t)javaScriptObjectsCount
 
47
{
 
48
    return JavaScriptStatistics::objectCount();
 
49
}
 
50
 
 
51
+ (size_t)javaScriptInterpretersCount
 
52
{
 
53
    return JavaScriptStatistics::interpreterCount();
 
54
}
 
55
 
 
56
+ (size_t)javaScriptProtectedObjectsCount
 
57
{
 
58
    return JavaScriptStatistics::protectedObjectCount();
 
59
}
 
60
 
 
61
+ (NSCountedSet *)javaScriptRootObjectTypeCounts
 
62
{
 
63
    NSCountedSet *result = [NSCountedSet set];
 
64
 
 
65
    HashCountedSet<const char*>* counts = JavaScriptStatistics::rootObjectTypeCounts();
 
66
    HashCountedSet<const char*>::iterator end = counts->end();
 
67
    for (HashCountedSet<const char*>::iterator it = counts->begin(); it != end; ++it)
 
68
        for (unsigned i = 0; i < it->second; ++i)
 
69
            [result addObject:[NSString stringWithUTF8String:it->first]];
 
70
    
 
71
    delete counts;
 
72
    return result;
 
73
}
 
74
 
 
75
+ (void)garbageCollectJavaScriptObjects
 
76
{
 
77
    JavaScriptStatistics::garbageCollect();
 
78
}
 
79
 
 
80
+ (void)garbageCollectJavaScriptObjectsOnAlternateThread:(BOOL)waitUntilDone;
 
81
{
 
82
    JavaScriptStatistics::garbageCollectOnAlternateThread(waitUntilDone);
 
83
}
 
84
 
 
85
+ (BOOL)shouldPrintExceptions
 
86
{
 
87
    return JavaScriptStatistics::shouldPrintExceptions();
 
88
}
 
89
 
 
90
+ (void)setShouldPrintExceptions:(BOOL)print
 
91
{
 
92
    JavaScriptStatistics::setShouldPrintExceptions(print);
 
93
}
 
94
 
 
95
+ (void)emptyCache
 
96
{
 
97
    [WebCache empty];
 
98
}
 
99
 
 
100
+ (void)setCacheDisabled:(BOOL)disabled
 
101
{
 
102
    [WebCache setDisabled:disabled];
 
103
}
 
104
 
 
105
+ (void)startIgnoringWebCoreNodeLeaks
 
106
{
 
107
    WebCore::Node::startIgnoringLeaks();
 
108
}
 
109
 
 
110
+ (void)stopIgnoringWebCoreNodeLeaks;
 
111
{
 
112
    WebCore::Node::stopIgnoringLeaks();
 
113
}
 
114
 
 
115
// Deprecated
 
116
+ (size_t)javaScriptNoGCAllowedObjectsCount
 
117
{
 
118
    return 0;
 
119
}
 
120
 
 
121
+ (size_t)javaScriptReferencedObjectsCount
 
122
{
 
123
    return JavaScriptStatistics::protectedObjectCount();
 
124
}
 
125
 
 
126
+ (NSSet *)javaScriptRootObjectClasses
 
127
{
 
128
    return [self javaScriptRootObjectTypeCounts];
 
129
}
 
130
 
 
131
@end
 
132
 
 
133
@implementation WebFrame (WebKitDebug)
 
134
 
 
135
- (NSString *)renderTreeAsExternalRepresentation
 
136
{
 
137
    return [[self _bridge] renderTreeAsExternalRepresentation];
 
138
}
 
139
 
 
140
@end