Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(293)

Side by Side Diff: include/v8-profiler.h

Issue 22363003: Define V8EXPORT only in v8.h and use it in the other headers (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fixed long line Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « include/v8-preparser.h ('k') | include/v8-testing.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 12 matching lines...) Expand all
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 27
28 #ifndef V8_V8_PROFILER_H_ 28 #ifndef V8_V8_PROFILER_H_
29 #define V8_V8_PROFILER_H_ 29 #define V8_V8_PROFILER_H_
30 30
31 #include "v8.h" 31 #include "v8.h"
32 32
33 #ifdef _WIN32
34 // Setup for Windows DLL export/import. See v8.h in this directory for
35 // information on how to build/use V8 as a DLL.
36 #if defined(BUILDING_V8_SHARED) && defined(USING_V8_SHARED)
37 #error both BUILDING_V8_SHARED and USING_V8_SHARED are set - please check the\
38 build configuration to ensure that at most one of these is set
39 #endif
40
41 #ifdef BUILDING_V8_SHARED
42 #define V8EXPORT __declspec(dllexport)
43 #elif USING_V8_SHARED
44 #define V8EXPORT __declspec(dllimport)
45 #else
46 #define V8EXPORT
47 #endif
48
49 #else // _WIN32
50
51 // Setup for Linux shared library export. See v8.h in this directory for
52 // information on how to build/use V8 as shared library.
53 #if defined(__GNUC__) && ((__GNUC__ >= 4) || \
54 (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(V8_SHARED)
55 #define V8EXPORT __attribute__ ((visibility("default")))
56 #else
57 #define V8EXPORT
58 #endif
59
60 #endif // _WIN32
61
62
63 /** 33 /**
64 * Profiler support for the V8 JavaScript engine. 34 * Profiler support for the V8 JavaScript engine.
65 */ 35 */
66 namespace v8 { 36 namespace v8 {
67 37
68 typedef uint32_t SnapshotObjectId; 38 typedef uint32_t SnapshotObjectId;
69 39
70 /** 40 /**
71 * CpuProfileNode represents a node in a call graph. 41 * CpuProfileNode represents a node in a call graph.
72 */ 42 */
73 class V8EXPORT CpuProfileNode { 43 class V8_EXPORT CpuProfileNode {
74 public: 44 public:
75 /** Returns function name (empty string for anonymous functions.) */ 45 /** Returns function name (empty string for anonymous functions.) */
76 Handle<String> GetFunctionName() const; 46 Handle<String> GetFunctionName() const;
77 47
78 /** Returns id of the script where function is located. */ 48 /** Returns id of the script where function is located. */
79 int GetScriptId() const; 49 int GetScriptId() const;
80 50
81 /** Returns resource name for script from where the function originates. */ 51 /** Returns resource name for script from where the function originates. */
82 Handle<String> GetScriptResourceName() const; 52 Handle<String> GetScriptResourceName() const;
83 53
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 const CpuProfileNode* GetChild(int index) const; 88 const CpuProfileNode* GetChild(int index) const;
119 89
120 static const int kNoLineNumberInfo = Message::kNoLineNumberInfo; 90 static const int kNoLineNumberInfo = Message::kNoLineNumberInfo;
121 }; 91 };
122 92
123 93
124 /** 94 /**
125 * CpuProfile contains a CPU profile in a form of top-down call tree 95 * CpuProfile contains a CPU profile in a form of top-down call tree
126 * (from main() down to functions that do all the work). 96 * (from main() down to functions that do all the work).
127 */ 97 */
128 class V8EXPORT CpuProfile { 98 class V8_EXPORT CpuProfile {
129 public: 99 public:
130 /** Returns CPU profile UID (assigned by the profiler.) */ 100 /** Returns CPU profile UID (assigned by the profiler.) */
131 unsigned GetUid() const; 101 unsigned GetUid() const;
132 102
133 /** Returns CPU profile title. */ 103 /** Returns CPU profile title. */
134 Handle<String> GetTitle() const; 104 Handle<String> GetTitle() const;
135 105
136 /** Returns the root node of the top down call tree. */ 106 /** Returns the root node of the top down call tree. */
137 const CpuProfileNode* GetTopDownRoot() const; 107 const CpuProfileNode* GetTopDownRoot() const;
138 108
(...skipping 30 matching lines...) Expand all
169 * to call Delete on these profiles. 139 * to call Delete on these profiles.
170 */ 140 */
171 void Delete(); 141 void Delete();
172 }; 142 };
173 143
174 144
175 /** 145 /**
176 * Interface for controlling CPU profiling. Instance of the 146 * Interface for controlling CPU profiling. Instance of the
177 * profiler can be retrieved using v8::Isolate::GetCpuProfiler. 147 * profiler can be retrieved using v8::Isolate::GetCpuProfiler.
178 */ 148 */
179 class V8EXPORT CpuProfiler { 149 class V8_EXPORT CpuProfiler {
180 public: 150 public:
181 /** 151 /**
182 * A note on security tokens usage. As scripts from different 152 * A note on security tokens usage. As scripts from different
183 * origins can run inside a single V8 instance, it is possible to 153 * origins can run inside a single V8 instance, it is possible to
184 * have functions from different security contexts intermixed in a 154 * have functions from different security contexts intermixed in a
185 * single CPU profile. To avoid exposing function names belonging to 155 * single CPU profile. To avoid exposing function names belonging to
186 * other contexts, filtering by security token is performed while 156 * other contexts, filtering by security token is performed while
187 * obtaining profiling results. 157 * obtaining profiling results.
188 */ 158 */
189 159
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 }; 200 };
231 201
232 202
233 class HeapGraphNode; 203 class HeapGraphNode;
234 204
235 205
236 /** 206 /**
237 * HeapSnapshotEdge represents a directed connection between heap 207 * HeapSnapshotEdge represents a directed connection between heap
238 * graph nodes: from retainers to retained nodes. 208 * graph nodes: from retainers to retained nodes.
239 */ 209 */
240 class V8EXPORT HeapGraphEdge { 210 class V8_EXPORT HeapGraphEdge {
241 public: 211 public:
242 enum Type { 212 enum Type {
243 kContextVariable = 0, // A variable from a function context. 213 kContextVariable = 0, // A variable from a function context.
244 kElement = 1, // An element of an array. 214 kElement = 1, // An element of an array.
245 kProperty = 2, // A named object property. 215 kProperty = 2, // A named object property.
246 kInternal = 3, // A link that can't be accessed from JS, 216 kInternal = 3, // A link that can't be accessed from JS,
247 // thus, its name isn't a real property name 217 // thus, its name isn't a real property name
248 // (e.g. parts of a ConsString). 218 // (e.g. parts of a ConsString).
249 kHidden = 4, // A link that is needed for proper sizes 219 kHidden = 4, // A link that is needed for proper sizes
250 // calculation, but may be hidden from user. 220 // calculation, but may be hidden from user.
(...skipping 15 matching lines...) Expand all
266 const HeapGraphNode* GetFromNode() const; 236 const HeapGraphNode* GetFromNode() const;
267 237
268 /** Returns destination node. */ 238 /** Returns destination node. */
269 const HeapGraphNode* GetToNode() const; 239 const HeapGraphNode* GetToNode() const;
270 }; 240 };
271 241
272 242
273 /** 243 /**
274 * HeapGraphNode represents a node in a heap graph. 244 * HeapGraphNode represents a node in a heap graph.
275 */ 245 */
276 class V8EXPORT HeapGraphNode { 246 class V8_EXPORT HeapGraphNode {
277 public: 247 public:
278 enum Type { 248 enum Type {
279 kHidden = 0, // Hidden node, may be filtered when shown to user. 249 kHidden = 0, // Hidden node, may be filtered when shown to user.
280 kArray = 1, // An array of elements. 250 kArray = 1, // An array of elements.
281 kString = 2, // A string. 251 kString = 2, // A string.
282 kObject = 3, // A JS object (except for arrays and strings). 252 kObject = 3, // A JS object (except for arrays and strings).
283 kCode = 4, // Compiled code. 253 kCode = 4, // Compiled code.
284 kClosure = 5, // Function closure. 254 kClosure = 5, // Function closure.
285 kRegExp = 6, // RegExp. 255 kRegExp = 6, // RegExp.
286 kHeapNumber = 7, // Number stored in the heap. 256 kHeapNumber = 7, // Number stored in the heap.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 * Finds and returns a value from the heap corresponding to this node, 288 * Finds and returns a value from the heap corresponding to this node,
319 * if the value is still reachable. 289 * if the value is still reachable.
320 */ 290 */
321 Handle<Value> GetHeapValue() const; 291 Handle<Value> GetHeapValue() const;
322 }; 292 };
323 293
324 294
325 /** 295 /**
326 * HeapSnapshots record the state of the JS heap at some moment. 296 * HeapSnapshots record the state of the JS heap at some moment.
327 */ 297 */
328 class V8EXPORT HeapSnapshot { 298 class V8_EXPORT HeapSnapshot {
329 public: 299 public:
330 enum SerializationFormat { 300 enum SerializationFormat {
331 kJSON = 0 // See format description near 'Serialize' method. 301 kJSON = 0 // See format description near 'Serialize' method.
332 }; 302 };
333 303
334 /** Returns heap snapshot UID (assigned by the profiler.) */ 304 /** Returns heap snapshot UID (assigned by the profiler.) */
335 unsigned GetUid() const; 305 unsigned GetUid() const;
336 306
337 /** Returns heap snapshot title. */ 307 /** Returns heap snapshot title. */
338 Handle<String> GetTitle() const; 308 Handle<String> GetTitle() const;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 void Serialize(OutputStream* stream, SerializationFormat format) const; 358 void Serialize(OutputStream* stream, SerializationFormat format) const;
389 }; 359 };
390 360
391 361
392 class RetainedObjectInfo; 362 class RetainedObjectInfo;
393 363
394 /** 364 /**
395 * Interface for controlling heap profiling. Instance of the 365 * Interface for controlling heap profiling. Instance of the
396 * profiler can be retrieved using v8::Isolate::GetHeapProfiler. 366 * profiler can be retrieved using v8::Isolate::GetHeapProfiler.
397 */ 367 */
398 class V8EXPORT HeapProfiler { 368 class V8_EXPORT HeapProfiler {
399 public: 369 public:
400 /** 370 /**
401 * Callback function invoked for obtaining RetainedObjectInfo for 371 * Callback function invoked for obtaining RetainedObjectInfo for
402 * the given JavaScript wrapper object. It is prohibited to enter V8 372 * the given JavaScript wrapper object. It is prohibited to enter V8
403 * while the callback is running: only getters on the handle and 373 * while the callback is running: only getters on the handle and
404 * GetPointerFromInternalField on the objects are allowed. 374 * GetPointerFromInternalField on the objects are allowed.
405 */ 375 */
406 typedef RetainedObjectInfo* (*WrapperInfoCallback) 376 typedef RetainedObjectInfo* (*WrapperInfoCallback)
407 (uint16_t class_id, Handle<Value> wrapper); 377 (uint16_t class_id, Handle<Value> wrapper);
408 378
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 * objects for heap snapshots, he can do it in a GC prologue 496 * objects for heap snapshots, he can do it in a GC prologue
527 * handler, and / or by assigning wrapper class ids in the following way: 497 * handler, and / or by assigning wrapper class ids in the following way:
528 * 498 *
529 * 1. Bind a callback to class id by calling SetWrapperClassInfoProvider. 499 * 1. Bind a callback to class id by calling SetWrapperClassInfoProvider.
530 * 2. Call SetWrapperClassId on certain persistent handles. 500 * 2. Call SetWrapperClassId on certain persistent handles.
531 * 501 *
532 * V8 takes ownership of RetainedObjectInfo instances passed to it and 502 * V8 takes ownership of RetainedObjectInfo instances passed to it and
533 * keeps them alive only during snapshot collection. Afterwards, they 503 * keeps them alive only during snapshot collection. Afterwards, they
534 * are freed by calling the Dispose class function. 504 * are freed by calling the Dispose class function.
535 */ 505 */
536 class V8EXPORT RetainedObjectInfo { // NOLINT 506 class V8_EXPORT RetainedObjectInfo { // NOLINT
537 public: 507 public:
538 /** Called by V8 when it no longer needs an instance. */ 508 /** Called by V8 when it no longer needs an instance. */
539 virtual void Dispose() = 0; 509 virtual void Dispose() = 0;
540 510
541 /** Returns whether two instances are equivalent. */ 511 /** Returns whether two instances are equivalent. */
542 virtual bool IsEquivalent(RetainedObjectInfo* other) = 0; 512 virtual bool IsEquivalent(RetainedObjectInfo* other) = 0;
543 513
544 /** 514 /**
545 * Returns hash value for the instance. Equivalent instances 515 * Returns hash value for the instance. Equivalent instances
546 * must have the same hash value. 516 * must have the same hash value.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 : index(index), count(count), size(size) { } 562 : index(index), count(count), size(size) { }
593 uint32_t index; // Index of the time interval that was changed. 563 uint32_t index; // Index of the time interval that was changed.
594 uint32_t count; // New value of count field for the interval with this index. 564 uint32_t count; // New value of count field for the interval with this index.
595 uint32_t size; // New value of size field for the interval with this index. 565 uint32_t size; // New value of size field for the interval with this index.
596 }; 566 };
597 567
598 568
599 } // namespace v8 569 } // namespace v8
600 570
601 571
602 #undef V8EXPORT
603
604
605 #endif // V8_V8_PROFILER_H_ 572 #endif // V8_V8_PROFILER_H_
OLDNEW
« no previous file with comments | « include/v8-preparser.h ('k') | include/v8-testing.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698