/[jscoverage]/trunk/js/jsutil.h
ViewVC logotype

Annotation of /trunk/js/jsutil.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 332 - (hide annotations)
Thu Oct 23 19:03:33 2008 UTC (10 years, 10 months ago) by siliconforks
File MIME type: text/plain
File size: 4991 byte(s)
Add SpiderMonkey from Firefox 3.1b1.

The following directories and files were removed:
correct/, correct.js
liveconnect/
nanojit/
t/
v8/
vprof/
xpconnect/
all JavaScript files (Y.js, call.js, if.js, math-partial-sums.js, md5.js, perfect.js, trace-test.js, trace.js)


1 siliconforks 332 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2     *
3     * ***** BEGIN LICENSE BLOCK *****
4     * Version: MPL 1.1/GPL 2.0/LGPL 2.1
5     *
6     * The contents of this file are subject to the Mozilla Public License Version
7     * 1.1 (the "License"); you may not use this file except in compliance with
8     * the License. You may obtain a copy of the License at
9     * http://www.mozilla.org/MPL/
10     *
11     * Software distributed under the License is distributed on an "AS IS" basis,
12     * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13     * for the specific language governing rights and limitations under the
14     * License.
15     *
16     * The Original Code is Mozilla Communicator client code, released
17     * March 31, 1998.
18     *
19     * The Initial Developer of the Original Code is
20     * Netscape Communications Corporation.
21     * Portions created by the Initial Developer are Copyright (C) 1998
22     * the Initial Developer. All Rights Reserved.
23     *
24     * Contributor(s):
25     *
26     * Alternatively, the contents of this file may be used under the terms of
27     * either of the GNU General Public License Version 2 or later (the "GPL"),
28     * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
29     * in which case the provisions of the GPL or the LGPL are applicable instead
30     * of those above. If you wish to allow use of your version of this file only
31     * under the terms of either the GPL or the LGPL, and not to allow others to
32     * use your version of this file under the terms of the MPL, indicate your
33     * decision by deleting the provisions above and replace them with the notice
34     * and other provisions required by the GPL or the LGPL. If you do not delete
35     * the provisions above, a recipient may use your version of this file under
36     * the terms of any one of the MPL, the GPL or the LGPL.
37     *
38     * ***** END LICENSE BLOCK ***** */
39    
40     /*
41     * PR assertion checker.
42     */
43    
44     #ifndef jsutil_h___
45     #define jsutil_h___
46    
47     JS_BEGIN_EXTERN_C
48    
49     #ifdef DEBUG
50    
51     extern JS_PUBLIC_API(void)
52     JS_Assert(const char *s, const char *file, JSIntn ln);
53    
54     #define JS_ASSERT(expr) \
55     ((expr) ? (void)0 : JS_Assert(#expr, __FILE__, __LINE__))
56    
57     #define JS_ASSERT_IF(cond, expr) \
58     ((!(cond) || (expr)) ? (void)0 : JS_Assert(#expr, __FILE__, __LINE__))
59    
60     #define JS_NOT_REACHED(reason) \
61     JS_Assert(reason, __FILE__, __LINE__)
62    
63     #else
64    
65     #define JS_ASSERT(expr) ((void) 0)
66     #define JS_ASSERT_IF(cond,expr) ((void) 0)
67     #define JS_NOT_REACHED(reason)
68    
69     #endif /* defined(DEBUG) */
70    
71     /*
72     * Compile-time assert. "condition" must be a constant expression.
73     * The macro can be used only in places where an "extern" declaration is
74     * allowed.
75     */
76    
77     /*
78     * Sun Studio C++ compiler has a bug
79     * "sizeof expression not accepted as size of array parameter"
80     * The bug number is 6688515. It is not public yet.
81     * Turn off this assert for Sun Studio until this bug is fixed.
82     */
83     #ifdef __SUNPRO_CC
84     #define JS_STATIC_ASSERT(condition)
85     #else
86     #define JS_STATIC_ASSERT(condition) \
87     extern void js_static_assert(int arg[(condition) ? 1 : -1])
88     #endif
89    
90     /*
91     * Abort the process in a non-graceful manner. This will cause a core file,
92     * call to the debugger or other moral equivalent as well as causing the
93     * entire process to stop.
94     */
95     extern JS_PUBLIC_API(void) JS_Abort(void);
96    
97     #if 0
98     # define JS_BASIC_STATS 1
99     # define JS_SCOPE_DEPTH_METER 1
100     #endif
101    
102     #if defined DEBUG && !defined JS_BASIC_STATS
103     # define JS_BASIC_STATS 1
104     #endif
105    
106     #ifdef JS_BASIC_STATS
107    
108     #include <stdio.h>
109    
110     typedef struct JSBasicStats {
111     uint32 num;
112     uint32 max;
113     double sum;
114     double sqsum;
115     uint32 logscale; /* logarithmic scale: 0 (linear), 2, 10 */
116     uint32 hist[11];
117     } JSBasicStats;
118    
119     #define JS_INIT_STATIC_BASIC_STATS {0,0,0,0,0,{0,0,0,0,0,0,0,0,0,0,0}}
120     #define JS_BASIC_STATS_INIT(bs) memset((bs), 0, sizeof(JSBasicStats))
121    
122     #define JS_BASIC_STATS_ACCUM(bs,val) \
123     JS_BasicStatsAccum(bs, val)
124    
125     #define JS_MeanAndStdDevBS(bs,sigma) \
126     JS_MeanAndStdDev((bs)->num, (bs)->sum, (bs)->sqsum, sigma)
127    
128     extern void
129     JS_BasicStatsAccum(JSBasicStats *bs, uint32 val);
130    
131     extern double
132     JS_MeanAndStdDev(uint32 num, double sum, double sqsum, double *sigma);
133    
134     extern void
135     JS_DumpBasicStats(JSBasicStats *bs, const char *title, FILE *fp);
136    
137     extern void
138     JS_DumpHistogram(JSBasicStats *bs, FILE *fp);
139    
140     #else
141    
142     #define JS_BASIC_STATS_ACCUM(bs,val) /* nothing */
143    
144     #endif /* JS_BASIC_STATS */
145    
146    
147     #ifdef XP_UNIX
148    
149     typedef struct JSCallsite JSCallsite;
150    
151     struct JSCallsite {
152     uint32 pc;
153     char *name;
154     const char *library;
155     int offset;
156     JSCallsite *parent;
157     JSCallsite *siblings;
158     JSCallsite *kids;
159     void *handy;
160     };
161    
162     extern JSCallsite *JS_Backtrace(int skip);
163    
164     #endif
165    
166     JS_END_EXTERN_C
167    
168     #endif /* jsutil_h___ */

  ViewVC Help
Powered by ViewVC 1.1.24