diff options
author | Ben Murdoch <benm@google.com> | 2012-04-11 10:23:59 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2012-04-11 15:40:41 +0100 |
commit | 5d4cdbf7a67d3662fa0bee4efdb7edd8daec9b0b (patch) | |
tree | 7b717e53b80c4a64bf9b723aabcf7c909ae3c243 /include | |
parent | c7cc028aaeedbbfa11c11d0b7b243b3d9e837ed9 (diff) | |
download | android_external_v8-5d4cdbf7a67d3662fa0bee4efdb7edd8daec9b0b.tar.gz android_external_v8-5d4cdbf7a67d3662fa0bee4efdb7edd8daec9b0b.tar.bz2 android_external_v8-5d4cdbf7a67d3662fa0bee4efdb7edd8daec9b0b.zip |
Merge V8 3.9 at 3.9.24.9
http://v8.googlecode.com/svn/branches/3.9@11260
Bug: 5688872
Change-Id: Iddd944e82189d92df3fc427dc5f0d3f1b2f0c6c8
Diffstat (limited to 'include')
-rw-r--r-- | include/v8-profiler.h | 28 | ||||
-rw-r--r-- | include/v8.h | 39 |
2 files changed, 56 insertions, 11 deletions
diff --git a/include/v8-profiler.h b/include/v8-profiler.h index 27b3c6de..2499bbf0 100644 --- a/include/v8-profiler.h +++ b/include/v8-profiler.h @@ -255,7 +255,9 @@ class V8EXPORT HeapGraphNode { kClosure = 5, // Function closure. kRegExp = 6, // RegExp. kHeapNumber = 7, // Number stored in the heap. - kNative = 8 // Native object (not from V8 heap). + kNative = 8, // Native object (not from V8 heap). + kSynthetic = 9 // Synthetic object, usualy used for grouping + // snapshot items together. }; /** Returns node type (see HeapGraphNode::Type). */ @@ -282,14 +284,8 @@ class V8EXPORT HeapGraphNode { * the objects that are reachable only from this object. In other * words, the size of memory that will be reclaimed having this node * collected. - * - * Exact retained size calculation has O(N) (number of nodes) - * computational complexity, while approximate has O(1). It is - * assumed that initially heap profiling tools provide approximate - * sizes for all nodes, and then exact sizes are calculated for the - * most 'interesting' nodes. */ - int GetRetainedSize(bool exact) const; + int GetRetainedSize() const; /** Returns child nodes count of the node. */ int GetChildrenCount() const; @@ -434,6 +430,9 @@ class V8EXPORT HeapProfiler { * handle. */ static const uint16_t kPersistentHandleNoClassId = 0; + + /** Returns the number of currently existing persistent handles. */ + static int GetPersistentHandleCount(); }; @@ -476,12 +475,23 @@ class V8EXPORT RetainedObjectInfo { // NOLINT virtual intptr_t GetHash() = 0; /** - * Returns human-readable label. It must be a NUL-terminated UTF-8 + * Returns human-readable label. It must be a null-terminated UTF-8 * encoded string. V8 copies its contents during a call to GetLabel. */ virtual const char* GetLabel() = 0; /** + * Returns human-readable group label. It must be a null-terminated UTF-8 + * encoded string. V8 copies its contents during a call to GetGroupLabel. + * Heap snapshot generator will collect all the group names, create + * top level entries with these names and attach the objects to the + * corresponding top level group objects. There is a default + * implementation which is required because embedders don't have their + * own implementation yet. + */ + virtual const char* GetGroupLabel() { return GetLabel(); } + + /** * Returns element count in case if a global handle retains * a subgraph by holding one of its nodes. */ diff --git a/include/v8.h b/include/v8.h index 08c2fa2b..33179f5b 100644 --- a/include/v8.h +++ b/include/v8.h @@ -1021,6 +1021,14 @@ class String : public Primitive { V8EXPORT int Utf8Length() const; /** + * A fast conservative check for non-ASCII characters. May + * return true even for ASCII strings, but if it returns + * false you can be sure that all characters are in the range + * 0-127. + */ + V8EXPORT bool MayContainNonAscii() const; + + /** * Write the contents of the string to an external buffer. * If no arguments are given, expects the buffer to be large * enough to hold the entire string and NULL terminator. Copies @@ -1198,7 +1206,7 @@ class String : public Primitive { * passed in as parameters. */ V8EXPORT static Local<String> Concat(Handle<String> left, - Handle<String>right); + Handle<String> right); /** * Creates a new external string using the data defined in the given @@ -2858,6 +2866,20 @@ typedef bool (*EntropySource)(unsigned char* buffer, size_t length); /** + * ReturnAddressLocationResolver is used as a callback function when v8 is + * resolving the location of a return address on the stack. Profilers that + * change the return address on the stack can use this to resolve the stack + * location to whereever the profiler stashed the original return address. + * When invoked, return_addr_location will point to a location on stack where + * a machine return address resides, this function should return either the + * same pointer, or a pointer to the profiler's copy of the original return + * address. + */ +typedef uintptr_t (*ReturnAddressLocationResolver)( + uintptr_t return_addr_location); + + +/** * Interface for iterating though all external resources in the heap. */ class V8EXPORT ExternalResourceVisitor { // NOLINT @@ -3111,6 +3133,13 @@ class V8EXPORT V8 { static void SetEntropySource(EntropySource source); /** + * Allows the host application to provide a callback that allows v8 to + * cooperate with a profiler that rewrites return addresses on stack. + */ + static void SetReturnAddressLocationResolver( + ReturnAddressLocationResolver return_address_resolver); + + /** * Adjusts the amount of registered external memory. Used to give * V8 an indication of the amount of externally allocated memory * that is kept alive by JavaScript objects. V8 uses this to decide @@ -3539,6 +3568,12 @@ class V8EXPORT Context { void AllowCodeGenerationFromStrings(bool allow); /** + * Returns true if code generation from strings is allowed for the context. + * For more details see AllowCodeGenerationFromStrings(bool) documentation. + */ + bool IsCodeGenerationFromStringsAllowed(); + + /** * Stack-allocated class which sets the execution context for all * operations executed within a local scope. */ @@ -3844,7 +3879,7 @@ class Internals { static const int kFullStringRepresentationMask = 0x07; static const int kExternalTwoByteRepresentationTag = 0x02; - static const int kJSObjectType = 0xa7; + static const int kJSObjectType = 0xaa; static const int kFirstNonstringType = 0x80; static const int kForeignType = 0x85; |