v8-debug.h | v8-debug.h | |||
---|---|---|---|---|
skipping to change at line 338 | skipping to change at line 338 | |||
* supplied TCP/IP port for remote debugger connection. | * supplied TCP/IP port for remote debugger connection. | |||
* \param name the name of the embedding application | * \param name the name of the embedding application | |||
* \param port the TCP/IP port to listen on | * \param port the TCP/IP port to listen on | |||
* \param wait_for_connection whether V8 should pause on a first statement | * \param wait_for_connection whether V8 should pause on a first statement | |||
* allowing remote debugger to connect before anything interesting happe ned | * allowing remote debugger to connect before anything interesting happe ned | |||
*/ | */ | |||
static bool EnableAgent(const char* name, int port, | static bool EnableAgent(const char* name, int port, | |||
bool wait_for_connection = false); | bool wait_for_connection = false); | |||
/** | /** | |||
* Disable the V8 builtin debug agent. The TCP/IP connection will be clo | ||||
sed. | ||||
*/ | ||||
static void DisableAgent(); | ||||
/** | ||||
* Makes V8 process all pending debug messages. | * Makes V8 process all pending debug messages. | |||
* | * | |||
* From V8 point of view all debug messages come asynchronously (e.g. fro m | * From V8 point of view all debug messages come asynchronously (e.g. fro m | |||
* remote debugger) but they all must be handled synchronously: V8 cannot | * remote debugger) but they all must be handled synchronously: V8 cannot | |||
* do 2 things at one time so normal script execution must be interrupted | * do 2 things at one time so normal script execution must be interrupted | |||
* for a while. | * for a while. | |||
* | * | |||
* Generally when message arrives V8 may be in one of 3 states: | * Generally when message arrives V8 may be in one of 3 states: | |||
* 1. V8 is running script; V8 will automatically interrupt and process a ll | * 1. V8 is running script; V8 will automatically interrupt and process a ll | |||
* pending messages (however auto_break flag should be enabled); | * pending messages (however auto_break flag should be enabled); | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 6 lines changed or added | |||
v8.h | v8.h | |||
---|---|---|---|---|
skipping to change at line 1155 | skipping to change at line 1155 | |||
/** | /** | |||
* Get the ExternalStringResource for an external string. Returns | * Get the ExternalStringResource for an external string. Returns | |||
* NULL if IsExternal() doesn't return true. | * NULL if IsExternal() doesn't return true. | |||
*/ | */ | |||
inline ExternalStringResource* GetExternalStringResource() const; | inline ExternalStringResource* GetExternalStringResource() const; | |||
/** | /** | |||
* Get the ExternalAsciiStringResource for an external ASCII string. | * Get the ExternalAsciiStringResource for an external ASCII string. | |||
* Returns NULL if IsExternalAscii() doesn't return true. | * Returns NULL if IsExternalAscii() doesn't return true. | |||
*/ | */ | |||
V8EXPORT ExternalAsciiStringResource* GetExternalAsciiStringResource() co | V8EXPORT const ExternalAsciiStringResource* GetExternalAsciiStringResourc | |||
nst; | e() | |||
const; | ||||
static inline String* Cast(v8::Value* obj); | static inline String* Cast(v8::Value* obj); | |||
/** | /** | |||
* Allocates a new string from either UTF-8 encoded or ASCII data. | * Allocates a new string from either UTF-8 encoded or ASCII data. | |||
* The second parameter 'length' gives the buffer length. | * The second parameter 'length' gives the buffer length. | |||
* If the data is UTF-8 encoded, the caller must | * If the data is UTF-8 encoded, the caller must | |||
* be careful to supply the length parameter. | * be careful to supply the length parameter. | |||
* If it is not given, the function calls | * If it is not given, the function calls | |||
* 'strlen' to determine the buffer length, it might be | * 'strlen' to determine the buffer length, it might be | |||
skipping to change at line 2400 | skipping to change at line 2401 | |||
public: | public: | |||
static Local<TypeSwitch> New(Handle<FunctionTemplate> type); | static Local<TypeSwitch> New(Handle<FunctionTemplate> type); | |||
static Local<TypeSwitch> New(int argc, Handle<FunctionTemplate> types[]); | static Local<TypeSwitch> New(int argc, Handle<FunctionTemplate> types[]); | |||
int match(Handle<Value> value); | int match(Handle<Value> value); | |||
private: | private: | |||
TypeSwitch(); | TypeSwitch(); | |||
}; | }; | |||
// --- Extensions --- | // --- Extensions --- | |||
class V8EXPORT ExternalAsciiStringResourceImpl | ||||
: public String::ExternalAsciiStringResource { | ||||
public: | ||||
ExternalAsciiStringResourceImpl() : data_(0), length_(0) {} | ||||
ExternalAsciiStringResourceImpl(const char* data, size_t length) | ||||
: data_(data), length_(length) {} | ||||
const char* data() const { return data_; } | ||||
size_t length() const { return length_; } | ||||
private: | ||||
const char* data_; | ||||
size_t length_; | ||||
}; | ||||
/** | /** | |||
* Ignore | * Ignore | |||
*/ | */ | |||
class V8EXPORT Extension { // NOLINT | class V8EXPORT Extension { // NOLINT | |||
public: | public: | |||
// Note that the strings passed into this constructor must live as long | ||||
// as the Extension itself. | ||||
Extension(const char* name, | Extension(const char* name, | |||
const char* source = 0, | const char* source = 0, | |||
int dep_count = 0, | int dep_count = 0, | |||
const char** deps = 0); | const char** deps = 0, | |||
int source_length = -1); | ||||
virtual ~Extension() { } | virtual ~Extension() { } | |||
virtual v8::Handle<v8::FunctionTemplate> | virtual v8::Handle<v8::FunctionTemplate> | |||
GetNativeFunction(v8::Handle<v8::String> name) { | GetNativeFunction(v8::Handle<v8::String> name) { | |||
return v8::Handle<v8::FunctionTemplate>(); | return v8::Handle<v8::FunctionTemplate>(); | |||
} | } | |||
const char* name() { return name_; } | const char* name() const { return name_; } | |||
const char* source() { return source_; } | size_t source_length() const { return source_length_; } | |||
const String::ExternalAsciiStringResource* source() const { | ||||
return &source_; } | ||||
int dependency_count() { return dep_count_; } | int dependency_count() { return dep_count_; } | |||
const char** dependencies() { return deps_; } | const char** dependencies() { return deps_; } | |||
void set_auto_enable(bool value) { auto_enable_ = value; } | void set_auto_enable(bool value) { auto_enable_ = value; } | |||
bool auto_enable() { return auto_enable_; } | bool auto_enable() { return auto_enable_; } | |||
private: | private: | |||
const char* name_; | const char* name_; | |||
const char* source_; | size_t source_length_; // expected to initialize before source_ | |||
ExternalAsciiStringResourceImpl source_; | ||||
int dep_count_; | int dep_count_; | |||
const char** deps_; | const char** deps_; | |||
bool auto_enable_; | bool auto_enable_; | |||
// Disallow copying and assigning. | // Disallow copying and assigning. | |||
Extension(const Extension&); | Extension(const Extension&); | |||
void operator=(const Extension&); | void operator=(const Extension&); | |||
}; | }; | |||
void V8EXPORT RegisterExtension(Extension* extension); | void V8EXPORT RegisterExtension(Extension* extension); | |||
skipping to change at line 3425 | skipping to change at line 3446 | |||
* Multiple threads in V8 are allowed, but only one thread at a time | * Multiple threads in V8 are allowed, but only one thread at a time | |||
* is allowed to use any given V8 isolate. See Isolate class | * is allowed to use any given V8 isolate. See Isolate class | |||
* comments. The definition of 'using V8 isolate' includes | * comments. The definition of 'using V8 isolate' includes | |||
* accessing handles or holding onto object pointers obtained | * accessing handles or holding onto object pointers obtained | |||
* from V8 handles while in the particular V8 isolate. It is up | * from V8 handles while in the particular V8 isolate. It is up | |||
* to the user of V8 to ensure (perhaps with locking) that this | * to the user of V8 to ensure (perhaps with locking) that this | |||
* constraint is not violated. | * constraint is not violated. | |||
* | * | |||
* v8::Locker is a scoped lock object. While it's | * v8::Locker is a scoped lock object. While it's | |||
* active (i.e. between its construction and destruction) the current threa d is | * active (i.e. between its construction and destruction) the current threa d is | |||
* allowed to use the locked isolate. V8 guarantees that an isolate can be | * allowed to use the locked isolate. V8 guarantees that an isolate can be | |||
locked | * locked by at most one thread at any time. In other words, the scope of a | |||
* by at most one thread at any time. In other words, the scope of a v8::Lo | * v8::Locker is a critical section. | |||
cker is | ||||
* a critical section. | ||||
* | * | |||
* Sample usage: | * Sample usage: | |||
* \code | * \code | |||
* ... | * ... | |||
* { | * { | |||
* v8::Locker locker(isolate); | * v8::Locker locker(isolate); | |||
* v8::Isolate::Scope isolate_scope(isolate); | * v8::Isolate::Scope isolate_scope(isolate); | |||
* ... | * ... | |||
* // Code using V8 and isolate goes here. | * // Code using V8 and isolate goes here. | |||
* ... | * ... | |||
skipping to change at line 3528 | skipping to change at line 3549 | |||
* for the V8 lock. | * for the V8 lock. | |||
*/ | */ | |||
static void StartPreemption(int every_n_ms); | static void StartPreemption(int every_n_ms); | |||
/** | /** | |||
* Stop preemption. | * Stop preemption. | |||
*/ | */ | |||
static void StopPreemption(); | static void StopPreemption(); | |||
/** | /** | |||
* Returns whether or not the locker for a given isolate, or default isol | * Returns whether or not the locker for a given isolate, or default isol | |||
ate if NULL is given, | ate | |||
* is locked by the current thread. | * if NULL is given, is locked by the current thread. | |||
*/ | */ | |||
static bool IsLocked(Isolate* isolate = NULL); | static bool IsLocked(Isolate* isolate = NULL); | |||
/** | /** | |||
* Returns whether v8::Locker is being used by this V8 instance. | * Returns whether v8::Locker is being used by this V8 instance. | |||
*/ | */ | |||
static bool IsActive(); | static bool IsActive(); | |||
private: | private: | |||
bool has_lock_; | bool has_lock_; | |||
skipping to change at line 3691 | skipping to change at line 3712 | |||
static const int kHeapObjectMapOffset = 0; | static const int kHeapObjectMapOffset = 0; | |||
static const int kMapInstanceTypeOffset = 1 * kApiPointerSize + kApiIntSi ze; | static const int kMapInstanceTypeOffset = 1 * kApiPointerSize + kApiIntSi ze; | |||
static const int kStringResourceOffset = | static const int kStringResourceOffset = | |||
InternalConstants<kApiPointerSize>::kStringResourceOffset; | InternalConstants<kApiPointerSize>::kStringResourceOffset; | |||
static const int kForeignAddressOffset = kApiPointerSize; | static const int kForeignAddressOffset = kApiPointerSize; | |||
static const int kJSObjectHeaderSize = 3 * kApiPointerSize; | static const int kJSObjectHeaderSize = 3 * kApiPointerSize; | |||
static const int kFullStringRepresentationMask = 0x07; | static const int kFullStringRepresentationMask = 0x07; | |||
static const int kExternalTwoByteRepresentationTag = 0x02; | static const int kExternalTwoByteRepresentationTag = 0x02; | |||
static const int kJSObjectType = 0xa3; | static const int kJSObjectType = 0xa6; | |||
static const int kFirstNonstringType = 0x80; | static const int kFirstNonstringType = 0x80; | |||
static const int kForeignType = 0x85; | static const int kForeignType = 0x85; | |||
static inline bool HasHeapObjectTag(internal::Object* value) { | static inline bool HasHeapObjectTag(internal::Object* value) { | |||
return ((reinterpret_cast<intptr_t>(value) & kHeapObjectTagMask) == | return ((reinterpret_cast<intptr_t>(value) & kHeapObjectTagMask) == | |||
kHeapObjectTag); | kHeapObjectTag); | |||
} | } | |||
static inline bool HasSmiTag(internal::Object* value) { | static inline bool HasSmiTag(internal::Object* value) { | |||
return ((reinterpret_cast<intptr_t>(value) & kSmiTagMask) == kSmiTag); | return ((reinterpret_cast<intptr_t>(value) & kSmiTagMask) == kSmiTag); | |||
End of changes. 9 change blocks. | ||||
15 lines changed or deleted | 34 lines changed or added | |||