diff options
author | Ben Murdoch <benm@google.com> | 2011-12-02 17:19:32 +0000 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-12-02 17:27:49 +0000 |
commit | 3fb3ca8c7ca439d408449a395897395c0faae8d1 (patch) | |
tree | 5cb33db083ae7ebe431e2a460fb3806c54531f9c /include | |
parent | 257744e915dfc84d6d07a6b2accf8402d9ffc708 (diff) | |
download | android_external_v8-3fb3ca8c7ca439d408449a395897395c0faae8d1.tar.gz android_external_v8-3fb3ca8c7ca439d408449a395897395c0faae8d1.tar.bz2 android_external_v8-3fb3ca8c7ca439d408449a395897395c0faae8d1.zip |
Upgrade to V8 3.4
Merge 3.4.14.35
Simple merge required updates to makefiles only.
Bug: 568872
Change-Id: I403a38452c547e06fcfa951c12eca12a1bc40978
Diffstat (limited to 'include')
-rw-r--r-- | include/v8-profiler.h | 19 | ||||
-rw-r--r-- | include/v8.h | 259 |
2 files changed, 181 insertions, 97 deletions
diff --git a/include/v8-profiler.h b/include/v8-profiler.h index 940a35c1..4febcb95 100644 --- a/include/v8-profiler.h +++ b/include/v8-profiler.h @@ -269,17 +269,10 @@ class V8EXPORT HeapGraphNode { /** * Returns node id. For the same heap object, the id remains the same - * across all snapshots. Not applicable to aggregated heap snapshots - * as they only contain aggregated instances. + * across all snapshots. */ uint64_t GetId() const; - /** - * Returns the number of instances. Only applicable to aggregated - * heap snapshots. - */ - int GetInstancesCount() const; - /** Returns node's own size, in bytes. */ int GetSelfSize() const; @@ -323,9 +316,7 @@ class V8EXPORT HeapGraphNode { class V8EXPORT HeapSnapshot { public: enum Type { - kFull = 0, // Heap snapshot with all instances and references. - kAggregated = 1 // Snapshot doesn't contain individual heap entries, - // instead they are grouped by constructor name. + kFull = 0 // Heap snapshot with all instances and references. }; enum SerializationFormat { kJSON = 0 // See format description near 'Serialize' method. @@ -346,6 +337,12 @@ class V8EXPORT HeapSnapshot { /** Returns a node by its id. */ const HeapGraphNode* GetNodeById(uint64_t id) const; + /** Returns total nodes count in the snapshot. */ + int GetNodesCount() const; + + /** Returns a node by index. */ + const HeapGraphNode* GetNode(int index) const; + /** * Deletes the snapshot and removes it from HeapProfiler's list. * All pointers to nodes, edges and paths previously returned become diff --git a/include/v8.h b/include/v8.h index b4598c67..f4f81e4c 100644 --- a/include/v8.h +++ b/include/v8.h @@ -80,9 +80,11 @@ namespace v8 { class Context; class String; +class StringObject; class Value; class Utils; class Number; +class NumberObject; class Object; class Array; class Int32; @@ -90,6 +92,7 @@ class Uint32; class External; class Primitive; class Boolean; +class BooleanObject; class Integer; class Function; class Date; @@ -165,7 +168,6 @@ typedef void (*WeakReferenceCallback)(Persistent<Value> object, */ template <class T> class Handle { public: - /** * Creates an empty handle. */ @@ -312,7 +314,6 @@ template <class T> class Local : public Handle<T> { */ template <class T> class Persistent : public Handle<T> { public: - /** * Creates an empty persistent handle that doesn't point to any * storage cell. @@ -586,7 +587,6 @@ class ScriptOrigin { */ class V8EXPORT Script { public: - /** * Compiles the specified script (context-independent). * @@ -858,7 +858,6 @@ class V8EXPORT StackFrame { */ class Value : public Data { public: - /** * Returns true if this value is the undefined value. See ECMA-262 * 4.3.10. @@ -933,6 +932,26 @@ class Value : public Data { V8EXPORT bool IsDate() const; /** + * Returns true if this value is a Boolean object. + */ + V8EXPORT bool IsBooleanObject() const; + + /** + * Returns true if this value is a Number object. + */ + V8EXPORT bool IsNumberObject() const; + + /** + * Returns true if this value is a String object. + */ + V8EXPORT bool IsStringObject() const; + + /** + * Returns true if this value is a NativeError. + */ + V8EXPORT bool IsNativeError() const; + + /** * Returns true if this value is a RegExp. */ V8EXPORT bool IsRegExp() const; @@ -990,7 +1009,6 @@ class Boolean : public Primitive { */ class String : public Primitive { public: - /** * Returns the number of characters in this string. */ @@ -1440,6 +1458,13 @@ class Object : public Value { V8EXPORT Local<Value> Get(uint32_t index); + /** + * Gets the property attributes of a property which can be None or + * any combination of ReadOnly, DontEnum and DontDelete. Returns + * None when the property doesn't exist. + */ + V8EXPORT PropertyAttribute GetPropertyAttributes(Handle<Value> key); + // TODO(1245389): Replace the type-specific versions of these // functions with generic ones that accept a Handle<Value> key. V8EXPORT bool Has(Handle<String> key); @@ -1470,6 +1495,13 @@ class Object : public Value { V8EXPORT Local<Array> GetPropertyNames(); /** + * This function has the same functionality as GetPropertyNames but + * the returned array doesn't contain the names of properties from + * prototype objects. + */ + V8EXPORT Local<Array> GetOwnPropertyNames(); + + /** * Get the prototype object. This does not skip objects marked to * be skipped by __proto__ and it does not consult the security * handler. @@ -1640,6 +1672,7 @@ class Object : public Value { V8EXPORT static Local<Object> New(); static inline Object* Cast(Value* obj); + private: V8EXPORT Object(); V8EXPORT static void CheckCast(Value* obj); @@ -1742,6 +1775,63 @@ class Date : public Object { /** + * A Number object (ECMA-262, 4.3.21). + */ +class NumberObject : public Object { + public: + V8EXPORT static Local<Value> New(double value); + + /** + * Returns the Number held by the object. + */ + V8EXPORT double NumberValue() const; + + static inline NumberObject* Cast(v8::Value* obj); + + private: + V8EXPORT static void CheckCast(v8::Value* obj); +}; + + +/** + * A Boolean object (ECMA-262, 4.3.15). + */ +class BooleanObject : public Object { + public: + V8EXPORT static Local<Value> New(bool value); + + /** + * Returns the Boolean held by the object. + */ + V8EXPORT bool BooleanValue() const; + + static inline BooleanObject* Cast(v8::Value* obj); + + private: + V8EXPORT static void CheckCast(v8::Value* obj); +}; + + +/** + * A String object (ECMA-262, 4.3.18). + */ +class StringObject : public Object { + public: + V8EXPORT static Local<Value> New(Handle<String> value); + + /** + * Returns the String held by the object. + */ + V8EXPORT Local<String> StringValue() const; + + static inline StringObject* Cast(v8::Value* obj); + + private: + V8EXPORT static void CheckCast(v8::Value* obj); +}; + + +/** * An instance of the built-in RegExp constructor (ECMA-262, 15.10). */ class RegExp : public Object { @@ -2141,6 +2231,13 @@ class V8EXPORT FunctionTemplate : public Template { void SetHiddenPrototype(bool value); /** + * Sets the property attributes of the 'prototype' property of functions + * created from this FunctionTemplate. Can be any combination of ReadOnly, + * DontEnum and DontDelete. + */ + void SetPrototypeAttributes(int attributes); + + /** * Returns true if the given object is an instance of this function * template. */ @@ -2548,23 +2645,6 @@ typedef void (*GCCallback)(); /** - * Profiler modules. - * - * In V8, profiler consists of several modules: CPU profiler, and different - * kinds of heap profiling. Each can be turned on / off independently. - * When PROFILER_MODULE_HEAP_SNAPSHOT flag is passed to ResumeProfilerEx, - * modules are enabled only temporarily for making a snapshot of the heap. - */ -enum ProfilerModules { - PROFILER_MODULE_NONE = 0, - PROFILER_MODULE_CPU = 1, - PROFILER_MODULE_HEAP_STATS = 1 << 1, - PROFILER_MODULE_JS_CONSTRUCTORS = 1 << 2, - PROFILER_MODULE_HEAP_SNAPSHOT = 1 << 16 -}; - - -/** * Collection of V8 heap information. * * Instances of this class can be passed to v8::V8::HeapStatistics to @@ -2682,7 +2762,6 @@ class V8EXPORT Isolate { void* GetData(); private: - Isolate(); Isolate(const Isolate&); ~Isolate(); @@ -2704,6 +2783,38 @@ class StartupData { int raw_size; }; + +/** + * A helper class for driving V8 startup data decompression. It is based on + * "CompressedStartupData" API functions from the V8 class. It isn't mandatory + * for an embedder to use this class, instead, API functions can be used + * directly. + * + * For an example of the class usage, see the "shell.cc" sample application. + */ +class V8EXPORT StartupDataDecompressor { // NOLINT + public: + StartupDataDecompressor(); + virtual ~StartupDataDecompressor(); + int Decompress(); + + protected: + virtual int DecompressData(char* raw_data, + int* raw_data_size, + const char* compressed_data, + int compressed_data_size) = 0; + + private: + char** raw_data; +}; + + +/** + * EntropySource is used as a callback function when v8 needs a source + * of entropy. + */ +typedef bool (*EntropySource)(unsigned char* buffer, size_t length); + /** * Container class for static utility functions. */ @@ -2753,6 +2864,10 @@ class V8EXPORT V8 { * v8::V8::SetDecompressedStartupData(compressed_data); * ... now V8 can be initialized * ... make sure the decompressed data stays valid until V8 shutdown + * + * A helper class StartupDataDecompressor is provided. It implements + * the protocol of the interaction described above, and can be used in + * most cases instead of calling these API functions directly. */ static StartupData::CompressionAlgorithm GetCompressedStartupDataAlgorithm(); static int GetCompressedStartupDataCount(); @@ -2925,6 +3040,12 @@ class V8EXPORT V8 { static bool Initialize(); /** + * Allows the host application to provide a callback which can be used + * as a source of entropy for random number generators. + */ + static void SetEntropySource(EntropySource source); + + /** * 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 @@ -2963,65 +3084,6 @@ class V8EXPORT V8 { static bool IsProfilerPaused(); /** - * Resumes specified profiler modules. Can be called several times to - * mark the opening of a profiler events block with the given tag. - * - * "ResumeProfiler" is equivalent to "ResumeProfilerEx(PROFILER_MODULE_CPU)". - * See ProfilerModules enum. - * - * \param flags Flags specifying profiler modules. - * \param tag Profile tag. - */ - static void ResumeProfilerEx(int flags, int tag = 0); - - /** - * Pauses specified profiler modules. Each call to "PauseProfilerEx" closes - * a block of profiler events opened by a call to "ResumeProfilerEx" with the - * same tag value. There is no need for blocks to be properly nested. - * The profiler is paused when the last opened block is closed. - * - * "PauseProfiler" is equivalent to "PauseProfilerEx(PROFILER_MODULE_CPU)". - * See ProfilerModules enum. - * - * \param flags Flags specifying profiler modules. - * \param tag Profile tag. - */ - static void PauseProfilerEx(int flags, int tag = 0); - - /** - * Returns active (resumed) profiler modules. - * See ProfilerModules enum. - * - * \returns active profiler modules. - */ - static int GetActiveProfilerModules(); - - /** - * If logging is performed into a memory buffer (via --logfile=*), allows to - * retrieve previously written messages. This can be used for retrieving - * profiler log data in the application. This function is thread-safe. - * - * Caller provides a destination buffer that must exist during GetLogLines - * call. Only whole log lines are copied into the buffer. - * - * \param from_pos specified a point in a buffer to read from, 0 is the - * beginning of a buffer. It is assumed that caller updates its current - * position using returned size value from the previous call. - * \param dest_buf destination buffer for log data. - * \param max_size size of the destination buffer. - * \returns actual size of log data copied into buffer. - */ - static int GetLogLines(int from_pos, char* dest_buf, int max_size); - - /** - * The minimum allowed size for a log lines buffer. If the size of - * the buffer given will not be enough to hold a line of the maximum - * length, an attempt to find a log line end in GetLogLines will - * fail, and an empty result will be returned. - */ - static const int kMinimumSizeForLogLinesBuffer = 2048; - - /** * Retrieve the V8 thread id of the calling thread. * * The thread id for a thread should only be retrieved after the V8 @@ -3074,8 +3136,10 @@ class V8EXPORT V8 { * because of a call to TerminateExecution. In that case there are * still JavaScript frames on the stack and the termination * exception is still active. + * + * \param isolate The isolate in which to check. */ - static bool IsExecutionTerminating(); + static bool IsExecutionTerminating(Isolate* isolate = NULL); /** * Releases any resources used by v8 and stops any utility threads @@ -3144,7 +3208,6 @@ class V8EXPORT V8 { */ class V8EXPORT TryCatch { public: - /** * Creates a new try/catch block and registers it with v8. */ @@ -3236,6 +3299,7 @@ class V8EXPORT TryCatch { void SetCaptureMessage(bool value); private: + v8::internal::Isolate* isolate_; void* next_; void* exception_; void* message_; @@ -3690,7 +3754,6 @@ template <> struct InternalConstants<8> { */ class Internals { public: - // These values match non-compiler-dependent values defined within // the implementation of v8. static const int kHeapObjectMapOffset = 0; @@ -3703,7 +3766,7 @@ class Internals { static const int kFullStringRepresentationMask = 0x07; static const int kExternalTwoByteRepresentationTag = 0x02; - static const int kJSObjectType = 0xa2; + static const int kJSObjectType = 0xa3; static const int kFirstNonstringType = 0x80; static const int kForeignType = 0x85; @@ -4047,6 +4110,30 @@ Date* Date::Cast(v8::Value* value) { } +StringObject* StringObject::Cast(v8::Value* value) { +#ifdef V8_ENABLE_CHECKS + CheckCast(value); +#endif + return static_cast<StringObject*>(value); +} + + +NumberObject* NumberObject::Cast(v8::Value* value) { +#ifdef V8_ENABLE_CHECKS + CheckCast(value); +#endif + return static_cast<NumberObject*>(value); +} + + +BooleanObject* BooleanObject::Cast(v8::Value* value) { +#ifdef V8_ENABLE_CHECKS + CheckCast(value); +#endif + return static_cast<BooleanObject*>(value); +} + + RegExp* RegExp::Cast(v8::Value* value) { #ifdef V8_ENABLE_CHECKS CheckCast(value); |