| Index: include/v8.h
|
| ===================================================================
|
| --- include/v8.h (revision 9531)
|
| +++ include/v8.h (working copy)
|
| @@ -1171,7 +1171,8 @@
|
| * Get the ExternalAsciiStringResource for an external ASCII string.
|
| * Returns NULL if IsExternalAscii() doesn't return true.
|
| */
|
| - V8EXPORT ExternalAsciiStringResource* GetExternalAsciiStringResource() const;
|
| + V8EXPORT const ExternalAsciiStringResource* GetExternalAsciiStringResource()
|
| + const;
|
|
|
| static inline String* Cast(v8::Value* obj);
|
|
|
| @@ -2451,24 +2452,42 @@
|
|
|
| // --- 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
|
| */
|
| class V8EXPORT Extension { // NOLINT
|
| public:
|
| + // Note that the strings passed into this constructor must live as long
|
| + // as the Extension itself.
|
| Extension(const char* name,
|
| const char* source = 0,
|
| int dep_count = 0,
|
| - const char** deps = 0);
|
| + const char** deps = 0,
|
| + int source_length = -1);
|
| virtual ~Extension() { }
|
| virtual v8::Handle<v8::FunctionTemplate>
|
| GetNativeFunction(v8::Handle<v8::String> name) {
|
| return v8::Handle<v8::FunctionTemplate>();
|
| }
|
|
|
| - const char* name() { return name_; }
|
| - const char* source() { return source_; }
|
| + const char* name() const { return name_; }
|
| + size_t source_length() const { return source_length_; }
|
| + const String::ExternalAsciiStringResource* source() const {
|
| + return &source_; }
|
| int dependency_count() { return dep_count_; }
|
| const char** dependencies() { return deps_; }
|
| void set_auto_enable(bool value) { auto_enable_ = value; }
|
| @@ -2476,7 +2495,8 @@
|
|
|
| private:
|
| const char* name_;
|
| - const char* source_;
|
| + size_t source_length_; // expected to initialize before source_
|
| + ExternalAsciiStringResourceImpl source_;
|
| int dep_count_;
|
| const char** deps_;
|
| bool auto_enable_;
|
| @@ -3498,9 +3518,9 @@
|
| *
|
| * v8::Locker is a scoped lock object. While it's
|
| * active (i.e. between its construction and destruction) the current thread is
|
| - * allowed to use the locked isolate. V8 guarantees that an isolate can be locked
|
| - * by at most one thread at any time. In other words, the scope of a v8::Locker is
|
| - * a critical section.
|
| + * allowed to use the locked isolate. V8 guarantees that an isolate can be
|
| + * locked by at most one thread at any time. In other words, the scope of a
|
| + * v8::Locker is a critical section.
|
| *
|
| * Sample usage:
|
| * \code
|
| @@ -3602,8 +3622,8 @@
|
| static void StopPreemption();
|
|
|
| /**
|
| - * Returns whether or not the locker for a given isolate, or default isolate if NULL is given,
|
| - * is locked by the current thread.
|
| + * Returns whether or not the locker for a given isolate, or default isolate
|
| + * if NULL is given, is locked by the current thread.
|
| */
|
| static bool IsLocked(Isolate* isolate = NULL);
|
|
|
| @@ -3769,7 +3789,7 @@
|
| static const int kFullStringRepresentationMask = 0x07;
|
| static const int kExternalTwoByteRepresentationTag = 0x02;
|
|
|
| - static const int kJSObjectType = 0xa3;
|
| + static const int kJSObjectType = 0xa6;
|
| static const int kFirstNonstringType = 0x80;
|
| static const int kForeignType = 0x85;
|
|
|
|
|