| Index: include/v8.h | 
| diff --git a/include/v8.h b/include/v8.h | 
| index bc2f5e7630c8c8722807bcd04358ca9a4b7c2d97..5d8c1952e30510ee4c72521050a7b1d0211b7edc 100644 | 
| --- a/include/v8.h | 
| +++ b/include/v8.h | 
| @@ -611,7 +611,7 @@ class V8EXPORT ScriptData {  // NOLINT | 
| /** | 
| * The origin, within a file, of a script. | 
| */ | 
| -class V8EXPORT ScriptOrigin { | 
| +class ScriptOrigin { | 
| public: | 
| V8_INLINE(ScriptOrigin( | 
| Handle<Value> resource_name, | 
| @@ -904,7 +904,7 @@ class V8EXPORT StackFrame { | 
| /** | 
| * The superclass of all JavaScript values and objects. | 
| */ | 
| -class V8EXPORT Value : public Data { | 
| +class Value : public Data { | 
| public: | 
| /** | 
| * Returns true if this value is the undefined value.  See ECMA-262 | 
| @@ -921,12 +921,12 @@ class V8EXPORT Value : public Data { | 
| /** | 
| * Returns true if this value is true. | 
| */ | 
| -  bool IsTrue() const; | 
| +  V8EXPORT bool IsTrue() const; | 
|  | 
| /** | 
| * Returns true if this value is false. | 
| */ | 
| -  bool IsFalse() const; | 
| +  V8EXPORT bool IsFalse() const; | 
|  | 
| /** | 
| * Returns true if this value is an instance of the String type. | 
| @@ -937,121 +937,121 @@ class V8EXPORT Value : public Data { | 
| /** | 
| * Returns true if this value is a function. | 
| */ | 
| -  bool IsFunction() const; | 
| +  V8EXPORT bool IsFunction() const; | 
|  | 
| /** | 
| * Returns true if this value is an array. | 
| */ | 
| -  bool IsArray() const; | 
| +  V8EXPORT bool IsArray() const; | 
|  | 
| /** | 
| * Returns true if this value is an object. | 
| */ | 
| -  bool IsObject() const; | 
| +  V8EXPORT bool IsObject() const; | 
|  | 
| /** | 
| * Returns true if this value is boolean. | 
| */ | 
| -  bool IsBoolean() const; | 
| +  V8EXPORT bool IsBoolean() const; | 
|  | 
| /** | 
| * Returns true if this value is a number. | 
| */ | 
| -  bool IsNumber() const; | 
| +  V8EXPORT bool IsNumber() const; | 
|  | 
| /** | 
| * Returns true if this value is external. | 
| */ | 
| -  bool IsExternal() const; | 
| +  V8EXPORT bool IsExternal() const; | 
|  | 
| /** | 
| * Returns true if this value is a 32-bit signed integer. | 
| */ | 
| -  bool IsInt32() const; | 
| +  V8EXPORT bool IsInt32() const; | 
|  | 
| /** | 
| * Returns true if this value is a 32-bit unsigned integer. | 
| */ | 
| -  bool IsUint32() const; | 
| +  V8EXPORT bool IsUint32() const; | 
|  | 
| /** | 
| * Returns true if this value is a Date. | 
| */ | 
| -  bool IsDate() const; | 
| +  V8EXPORT bool IsDate() const; | 
|  | 
| /** | 
| * Returns true if this value is a Boolean object. | 
| */ | 
| -  bool IsBooleanObject() const; | 
| +  V8EXPORT bool IsBooleanObject() const; | 
|  | 
| /** | 
| * Returns true if this value is a Number object. | 
| */ | 
| -  bool IsNumberObject() const; | 
| +  V8EXPORT bool IsNumberObject() const; | 
|  | 
| /** | 
| * Returns true if this value is a String object. | 
| */ | 
| -  bool IsStringObject() const; | 
| +  V8EXPORT bool IsStringObject() const; | 
|  | 
| /** | 
| * Returns true if this value is a NativeError. | 
| */ | 
| -  bool IsNativeError() const; | 
| +  V8EXPORT bool IsNativeError() const; | 
|  | 
| /** | 
| * Returns true if this value is a RegExp. | 
| */ | 
| -  bool IsRegExp() const; | 
| +  V8EXPORT bool IsRegExp() const; | 
|  | 
| -  Local<Boolean> ToBoolean() const; | 
| -  Local<Number> ToNumber() const; | 
| -  Local<String> ToString() const; | 
| -  Local<String> ToDetailString() const; | 
| -  Local<Object> ToObject() const; | 
| -  Local<Integer> ToInteger() const; | 
| -  Local<Uint32> ToUint32() const; | 
| -  Local<Int32> ToInt32() const; | 
| +  V8EXPORT Local<Boolean> ToBoolean() const; | 
| +  V8EXPORT Local<Number> ToNumber() const; | 
| +  V8EXPORT Local<String> ToString() const; | 
| +  V8EXPORT Local<String> ToDetailString() const; | 
| +  V8EXPORT Local<Object> ToObject() const; | 
| +  V8EXPORT Local<Integer> ToInteger() const; | 
| +  V8EXPORT Local<Uint32> ToUint32() const; | 
| +  V8EXPORT Local<Int32> ToInt32() const; | 
|  | 
| /** | 
| * Attempts to convert a string to an array index. | 
| * Returns an empty handle if the conversion fails. | 
| */ | 
| -  Local<Uint32> ToArrayIndex() const; | 
| +  V8EXPORT Local<Uint32> ToArrayIndex() const; | 
|  | 
| -  bool BooleanValue() const; | 
| -  double NumberValue() const; | 
| -  int64_t IntegerValue() const; | 
| -  uint32_t Uint32Value() const; | 
| -  int32_t Int32Value() const; | 
| +  V8EXPORT bool BooleanValue() const; | 
| +  V8EXPORT double NumberValue() const; | 
| +  V8EXPORT int64_t IntegerValue() const; | 
| +  V8EXPORT uint32_t Uint32Value() const; | 
| +  V8EXPORT int32_t Int32Value() const; | 
|  | 
| /** JS == */ | 
| -  bool Equals(Handle<Value> that) const; | 
| -  bool StrictEquals(Handle<Value> that) const; | 
| +  V8EXPORT bool Equals(Handle<Value> that) const; | 
| +  V8EXPORT bool StrictEquals(Handle<Value> that) const; | 
|  | 
| private: | 
| V8_INLINE(bool QuickIsUndefined() const); | 
| V8_INLINE(bool QuickIsNull() const); | 
| V8_INLINE(bool QuickIsString() const); | 
| -  bool FullIsUndefined() const; | 
| -  bool FullIsNull() const; | 
| -  bool FullIsString() const; | 
| +  V8EXPORT bool FullIsUndefined() const; | 
| +  V8EXPORT bool FullIsNull() const; | 
| +  V8EXPORT bool FullIsString() const; | 
| }; | 
|  | 
|  | 
| /** | 
| * The superclass of primitive values.  See ECMA-262 4.3.2. | 
| */ | 
| -class V8EXPORT Primitive : public Value { }; | 
| +class Primitive : public Value { }; | 
|  | 
|  | 
| /** | 
| * A primitive boolean value (ECMA-262, 4.3.14).  Either the true | 
| * or false value. | 
| */ | 
| -class V8EXPORT Boolean : public Primitive { | 
| +class Boolean : public Primitive { | 
| public: | 
| -  bool Value() const; | 
| +  V8EXPORT bool Value() const; | 
| V8_INLINE(static Handle<Boolean> New(bool value)); | 
| }; | 
|  | 
| @@ -1059,24 +1059,23 @@ class V8EXPORT Boolean : public Primitive { | 
| /** | 
| * A JavaScript string value (ECMA-262, 4.3.17). | 
| */ | 
| -class V8EXPORT String : public Primitive { | 
| +class String : public Primitive { | 
| public: | 
| enum Encoding { | 
| UNKNOWN_ENCODING = 0x1, | 
| TWO_BYTE_ENCODING = 0x0, | 
| -    ASCII_ENCODING = 0x4, | 
| -    ONE_BYTE_ENCODING = 0x4 | 
| +    ASCII_ENCODING = 0x4 | 
| }; | 
| /** | 
| * Returns the number of characters in this string. | 
| */ | 
| -  int Length() const; | 
| +  V8EXPORT int Length() const; | 
|  | 
| /** | 
| * Returns the number of bytes in the UTF-8 encoded | 
| * representation of this string. | 
| */ | 
| -  int Utf8Length() const; | 
| +  V8EXPORT int Utf8Length() const; | 
|  | 
| /** | 
| * A fast conservative check for non-ASCII characters.  May | 
| @@ -1084,12 +1083,7 @@ class V8EXPORT String : public Primitive { | 
| * false you can be sure that all characters are in the range | 
| * 0-127. | 
| */ | 
| -  bool MayContainNonAscii() const; | 
| - | 
| -  /** | 
| -   * Returns whether this string contains only one byte data. | 
| -   */ | 
| -  bool IsOneByte() const; | 
| +  V8EXPORT bool MayContainNonAscii() const; | 
|  | 
| /** | 
| * Write the contents of the string to an external buffer. | 
| @@ -1124,41 +1118,36 @@ class V8EXPORT String : public Primitive { | 
| }; | 
|  | 
| // 16-bit character codes. | 
| -  int Write(uint16_t* buffer, | 
| -            int start = 0, | 
| -            int length = -1, | 
| -            int options = NO_OPTIONS) const; | 
| +  V8EXPORT int Write(uint16_t* buffer, | 
| +                     int start = 0, | 
| +                     int length = -1, | 
| +                     int options = NO_OPTIONS) const; | 
| // ASCII characters. | 
| -  int WriteAscii(char* buffer, | 
| -                 int start = 0, | 
| -                 int length = -1, | 
| -                 int options = NO_OPTIONS) const; | 
| -  // One byte characters. | 
| -  int WriteOneByte(uint8_t* buffer, | 
| -                            int start = 0, | 
| -                            int length = -1, | 
| -                            int options = NO_OPTIONS) const; | 
| +  V8EXPORT int WriteAscii(char* buffer, | 
| +                          int start = 0, | 
| +                          int length = -1, | 
| +                          int options = NO_OPTIONS) const; | 
| // UTF-8 encoded characters. | 
| -  int WriteUtf8(char* buffer, | 
| -                int length = -1, | 
| -                int* nchars_ref = NULL, | 
| -                int options = NO_OPTIONS) const; | 
| +  V8EXPORT int WriteUtf8(char* buffer, | 
| +                         int length = -1, | 
| +                         int* nchars_ref = NULL, | 
| +                         int options = NO_OPTIONS) const; | 
|  | 
| /** | 
| * A zero length string. | 
| */ | 
| -  static v8::Local<v8::String> Empty(); | 
| +  V8EXPORT static v8::Local<v8::String> Empty(); | 
| V8_INLINE(static v8::Local<v8::String> Empty(Isolate* isolate)); | 
|  | 
| /** | 
| * Returns true if the string is external | 
| */ | 
| -  bool IsExternal() const; | 
| +  V8EXPORT bool IsExternal() const; | 
|  | 
| /** | 
| * Returns true if the string is both external and ASCII | 
| */ | 
| -  bool IsExternalAscii() const; | 
| +  V8EXPORT bool IsExternalAscii() const; | 
|  | 
| class V8EXPORT ExternalStringResourceBase {  // NOLINT | 
| public: | 
| @@ -1239,8 +1228,6 @@ class V8EXPORT String : public Primitive { | 
| ExternalAsciiStringResource() {} | 
| }; | 
|  | 
| -  typedef ExternalAsciiStringResource ExternalOneByteStringResource; | 
| - | 
| /** | 
| * If the string is an external string, return the ExternalStringResourceBase | 
| * regardless of the encoding, otherwise return NULL.  The encoding of the | 
| @@ -1259,7 +1246,8 @@ class V8EXPORT String : public Primitive { | 
| * Get the ExternalAsciiStringResource for an external ASCII string. | 
| * Returns NULL if IsExternalAscii() doesn't return true. | 
| */ | 
| -  const ExternalAsciiStringResource* GetExternalAsciiStringResource() const; | 
| +  V8EXPORT const ExternalAsciiStringResource* GetExternalAsciiStringResource() | 
| +      const; | 
|  | 
| V8_INLINE(static String* Cast(v8::Value* obj)); | 
|  | 
| @@ -1268,19 +1256,20 @@ class V8EXPORT String : public Primitive { | 
| * The second parameter 'length' gives the buffer length. If omitted, | 
| * the function calls 'strlen' to determine the buffer length. | 
| */ | 
| -  static Local<String> New(const char* data, int length = -1); | 
| +  V8EXPORT static Local<String> New(const char* data, int length = -1); | 
|  | 
| /** Allocates a new string from 16-bit character codes.*/ | 
| -  static Local<String> New(const uint16_t* data, int length = -1); | 
| +  V8EXPORT static Local<String> New(const uint16_t* data, int length = -1); | 
|  | 
| /** Creates a symbol. Returns one if it exists already.*/ | 
| -  static Local<String> NewSymbol(const char* data, int length = -1); | 
| +  V8EXPORT static Local<String> NewSymbol(const char* data, int length = -1); | 
|  | 
| /** | 
| * Creates a new string by concatenating the left and the right strings | 
| * passed in as parameters. | 
| */ | 
| -  static Local<String> Concat(Handle<String> left, Handle<String> right); | 
| +  V8EXPORT static Local<String> Concat(Handle<String> left, | 
| +                                       Handle<String> right); | 
|  | 
| /** | 
| * Creates a new external string using the data defined in the given | 
| @@ -1290,7 +1279,7 @@ class V8EXPORT String : public Primitive { | 
| * should the underlying buffer be deallocated or modified except through the | 
| * destructor of the external string resource. | 
| */ | 
| -  static Local<String> NewExternal(ExternalStringResource* resource); | 
| +  V8EXPORT static Local<String> NewExternal(ExternalStringResource* resource); | 
|  | 
| /** | 
| * Associate an external string resource with this string by transforming it | 
| @@ -1301,7 +1290,7 @@ class V8EXPORT String : public Primitive { | 
| * The string is not modified if the operation fails. See NewExternal for | 
| * information on the lifetime of the resource. | 
| */ | 
| -  bool MakeExternal(ExternalStringResource* resource); | 
| +  V8EXPORT bool MakeExternal(ExternalStringResource* resource); | 
|  | 
| /** | 
| * Creates a new external string using the ASCII data defined in the given | 
| @@ -1310,8 +1299,8 @@ class V8EXPORT String : public Primitive { | 
| * this function should not otherwise delete or modify the resource. Neither | 
| * should the underlying buffer be deallocated or modified except through the | 
| * destructor of the external string resource. | 
| -   */ | 
| -  static Local<String> NewExternal(ExternalAsciiStringResource* resource); | 
| +   */ V8EXPORT static Local<String> NewExternal( | 
| +      ExternalAsciiStringResource* resource); | 
|  | 
| /** | 
| * Associate an external string resource with this string by transforming it | 
| @@ -1322,18 +1311,20 @@ class V8EXPORT String : public Primitive { | 
| * The string is not modified if the operation fails. See NewExternal for | 
| * information on the lifetime of the resource. | 
| */ | 
| -  bool MakeExternal(ExternalAsciiStringResource* resource); | 
| +  V8EXPORT bool MakeExternal(ExternalAsciiStringResource* resource); | 
|  | 
| /** | 
| * Returns true if this string can be made external. | 
| */ | 
| -  bool CanMakeExternal(); | 
| +  V8EXPORT bool CanMakeExternal(); | 
|  | 
| /** Creates an undetectable string from the supplied ASCII or UTF-8 data.*/ | 
| -  static Local<String> NewUndetectable(const char* data, int length = -1); | 
| +  V8EXPORT static Local<String> NewUndetectable(const char* data, | 
| +                                                int length = -1); | 
|  | 
| /** Creates an undetectable string from the supplied 16-bit character codes.*/ | 
| -  static Local<String> NewUndetectable(const uint16_t* data, int length = -1); | 
| +  V8EXPORT static Local<String> NewUndetectable(const uint16_t* data, | 
| +                                                int length = -1); | 
|  | 
| /** | 
| * Converts an object to a UTF-8-encoded character array.  Useful if | 
| @@ -1404,63 +1395,63 @@ class V8EXPORT String : public Primitive { | 
| }; | 
|  | 
| private: | 
| -  void VerifyExternalStringResourceBase(ExternalStringResourceBase* v, | 
| -                                        Encoding encoding) const; | 
| -  void VerifyExternalStringResource(ExternalStringResource* val) const; | 
| -  static void CheckCast(v8::Value* obj); | 
| +  V8EXPORT void VerifyExternalStringResourceBase(ExternalStringResourceBase* v, | 
| +                                                 Encoding encoding) const; | 
| +  V8EXPORT void VerifyExternalStringResource(ExternalStringResource* val) const; | 
| +  V8EXPORT static void CheckCast(v8::Value* obj); | 
| }; | 
|  | 
|  | 
| /** | 
| * A JavaScript number value (ECMA-262, 4.3.20) | 
| */ | 
| -class V8EXPORT Number : public Primitive { | 
| +class Number : public Primitive { | 
| public: | 
| -  double Value() const; | 
| -  static Local<Number> New(double value); | 
| +  V8EXPORT double Value() const; | 
| +  V8EXPORT static Local<Number> New(double value); | 
| V8_INLINE(static Number* Cast(v8::Value* obj)); | 
| private: | 
| -  Number(); | 
| -  static void CheckCast(v8::Value* obj); | 
| +  V8EXPORT Number(); | 
| +  V8EXPORT static void CheckCast(v8::Value* obj); | 
| }; | 
|  | 
|  | 
| /** | 
| * A JavaScript value representing a signed integer. | 
| */ | 
| -class V8EXPORT Integer : public Number { | 
| +class Integer : public Number { | 
| public: | 
| -  static Local<Integer> New(int32_t value); | 
| -  static Local<Integer> NewFromUnsigned(uint32_t value); | 
| -  static Local<Integer> New(int32_t value, Isolate*); | 
| -  static Local<Integer> NewFromUnsigned(uint32_t value, Isolate*); | 
| -  int64_t Value() const; | 
| +  V8EXPORT static Local<Integer> New(int32_t value); | 
| +  V8EXPORT static Local<Integer> NewFromUnsigned(uint32_t value); | 
| +  V8EXPORT static Local<Integer> New(int32_t value, Isolate*); | 
| +  V8EXPORT static Local<Integer> NewFromUnsigned(uint32_t value, Isolate*); | 
| +  V8EXPORT int64_t Value() const; | 
| V8_INLINE(static Integer* Cast(v8::Value* obj)); | 
| private: | 
| -  Integer(); | 
| -  static void CheckCast(v8::Value* obj); | 
| +  V8EXPORT Integer(); | 
| +  V8EXPORT static void CheckCast(v8::Value* obj); | 
| }; | 
|  | 
|  | 
| /** | 
| * A JavaScript value representing a 32-bit signed integer. | 
| */ | 
| -class V8EXPORT Int32 : public Integer { | 
| +class Int32 : public Integer { | 
| public: | 
| -  int32_t Value() const; | 
| +  V8EXPORT int32_t Value() const; | 
| private: | 
| -  Int32(); | 
| +  V8EXPORT Int32(); | 
| }; | 
|  | 
|  | 
| /** | 
| * A JavaScript value representing a 32-bit unsigned integer. | 
| */ | 
| -class V8EXPORT Uint32 : public Integer { | 
| +class Uint32 : public Integer { | 
| public: | 
| -  uint32_t Value() const; | 
| +  V8EXPORT uint32_t Value() const; | 
| private: | 
| -  Uint32(); | 
| +  V8EXPORT Uint32(); | 
| }; | 
|  | 
|  | 
| @@ -1521,13 +1512,14 @@ enum AccessControl { | 
| /** | 
| * A JavaScript object (ECMA-262, 4.3.3) | 
| */ | 
| -class V8EXPORT Object : public Value { | 
| +class Object : public Value { | 
| public: | 
| -  bool Set(Handle<Value> key, | 
| -           Handle<Value> value, | 
| -           PropertyAttribute attribs = None); | 
| +  V8EXPORT bool Set(Handle<Value> key, | 
| +                    Handle<Value> value, | 
| +                    PropertyAttribute attribs = None); | 
|  | 
| -  bool Set(uint32_t index, Handle<Value> value); | 
| +  V8EXPORT bool Set(uint32_t index, | 
| +                    Handle<Value> value); | 
|  | 
| // Sets a local property on this object bypassing interceptors and | 
| // overriding accessors or read-only properties. | 
| @@ -1537,41 +1529,41 @@ class V8EXPORT Object : public Value { | 
| // will only be returned if the interceptor doesn't return a value. | 
| // | 
| // Note also that this only works for named properties. | 
| -  bool ForceSet(Handle<Value> key, | 
| -                Handle<Value> value, | 
| -                PropertyAttribute attribs = None); | 
| +  V8EXPORT bool ForceSet(Handle<Value> key, | 
| +                         Handle<Value> value, | 
| +                         PropertyAttribute attribs = None); | 
|  | 
| -  Local<Value> Get(Handle<Value> key); | 
| +  V8EXPORT Local<Value> Get(Handle<Value> key); | 
|  | 
| -  Local<Value> Get(uint32_t index); | 
| +  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. | 
| */ | 
| -  PropertyAttribute GetPropertyAttributes(Handle<Value> key); | 
| +  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. | 
| -  bool Has(Handle<String> key); | 
| +  V8EXPORT bool Has(Handle<String> key); | 
|  | 
| -  bool Delete(Handle<String> key); | 
| +  V8EXPORT bool Delete(Handle<String> key); | 
|  | 
| // Delete a property on this object bypassing interceptors and | 
| // ignoring dont-delete attributes. | 
| -  bool ForceDelete(Handle<Value> key); | 
| +  V8EXPORT bool ForceDelete(Handle<Value> key); | 
|  | 
| -  bool Has(uint32_t index); | 
| +  V8EXPORT bool Has(uint32_t index); | 
|  | 
| -  bool Delete(uint32_t index); | 
| +  V8EXPORT bool Delete(uint32_t index); | 
|  | 
| -  bool SetAccessor(Handle<String> name, | 
| -                   AccessorGetter getter, | 
| -                   AccessorSetter setter = 0, | 
| -                   Handle<Value> data = Handle<Value>(), | 
| -                   AccessControl settings = DEFAULT, | 
| -                   PropertyAttribute attribute = None); | 
| +  V8EXPORT bool SetAccessor(Handle<String> name, | 
| +                            AccessorGetter getter, | 
| +                            AccessorSetter setter = 0, | 
| +                            Handle<Value> data = Handle<Value>(), | 
| +                            AccessControl settings = DEFAULT, | 
| +                            PropertyAttribute attribute = None); | 
|  | 
| /** | 
| * Returns an array containing the names of the enumerable properties | 
| @@ -1579,61 +1571,78 @@ class V8EXPORT Object : public Value { | 
| * array returned by this method contains the same values as would | 
| * be enumerated by a for-in statement over this object. | 
| */ | 
| -  Local<Array> GetPropertyNames(); | 
| +  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. | 
| */ | 
| -  Local<Array> GetOwnPropertyNames(); | 
| +  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. | 
| */ | 
| -  Local<Value> GetPrototype(); | 
| +  V8EXPORT Local<Value> GetPrototype(); | 
|  | 
| /** | 
| * Set the prototype object.  This does not skip objects marked to | 
| * be skipped by __proto__ and it does not consult the security | 
| * handler. | 
| */ | 
| -  bool SetPrototype(Handle<Value> prototype); | 
| +  V8EXPORT bool SetPrototype(Handle<Value> prototype); | 
|  | 
| /** | 
| * Finds an instance of the given function template in the prototype | 
| * chain. | 
| */ | 
| -  Local<Object> FindInstanceInPrototypeChain(Handle<FunctionTemplate> tmpl); | 
| +  V8EXPORT Local<Object> FindInstanceInPrototypeChain( | 
| +      Handle<FunctionTemplate> tmpl); | 
|  | 
| /** | 
| * Call builtin Object.prototype.toString on this object. | 
| * This is different from Value::ToString() that may call | 
| * user-defined toString function. This one does not. | 
| */ | 
| -  Local<String> ObjectProtoToString(); | 
| +  V8EXPORT Local<String> ObjectProtoToString(); | 
|  | 
| /** | 
| * Returns the function invoked as a constructor for this object. | 
| * May be the null value. | 
| */ | 
| -  Local<Value> GetConstructor(); | 
| +  V8EXPORT Local<Value> GetConstructor(); | 
|  | 
| /** | 
| * Returns the name of the function invoked as a constructor for this object. | 
| */ | 
| -  Local<String> GetConstructorName(); | 
| +  V8EXPORT Local<String> GetConstructorName(); | 
|  | 
| /** Gets the number of internal fields for this Object. */ | 
| -  int InternalFieldCount(); | 
| +  V8EXPORT int InternalFieldCount(); | 
|  | 
| /** Gets the value from an internal field. */ | 
| V8_INLINE(Local<Value> GetInternalField(int index)); | 
|  | 
| /** Sets the value in an internal field. */ | 
| -  void SetInternalField(int index, Handle<Value> value); | 
| +  V8EXPORT void SetInternalField(int index, Handle<Value> value); | 
| + | 
| +  /** | 
| +   * Gets a native pointer from an internal field. Deprecated. If the pointer is | 
| +   * always 2-byte-aligned, use GetAlignedPointerFromInternalField instead, | 
| +   * otherwise use a combination of GetInternalField, External::Cast and | 
| +   * External::Value. | 
| +   */ | 
| +  V8EXPORT V8_DEPRECATED(void* GetPointerFromInternalField(int index)); | 
| + | 
| +  /** | 
| +   * Sets a native pointer in an internal field. Deprecated. If the pointer is | 
| +   * always 2-byte aligned, use SetAlignedPointerInInternalField instead, | 
| +   * otherwise use a combination of External::New and SetInternalField. | 
| +   */ | 
| +  V8_DEPRECATED(V8_INLINE(void SetPointerInInternalField(int index, | 
| +                                                         void* value))); | 
|  | 
| /** | 
| * Gets a 2-byte-aligned native pointer from an internal field. This field | 
| @@ -1647,39 +1656,40 @@ class V8EXPORT Object : public Value { | 
| * a field, GetAlignedPointerFromInternalField must be used, everything else | 
| * leads to undefined behavior. | 
| */ | 
| -  void SetAlignedPointerInInternalField(int index, void* value); | 
| +  V8EXPORT void SetAlignedPointerInInternalField(int index, void* value); | 
|  | 
| // Testers for local properties. | 
| -  bool HasOwnProperty(Handle<String> key); | 
| -  bool HasRealNamedProperty(Handle<String> key); | 
| -  bool HasRealIndexedProperty(uint32_t index); | 
| -  bool HasRealNamedCallbackProperty(Handle<String> key); | 
| +  V8EXPORT bool HasOwnProperty(Handle<String> key); | 
| +  V8EXPORT bool HasRealNamedProperty(Handle<String> key); | 
| +  V8EXPORT bool HasRealIndexedProperty(uint32_t index); | 
| +  V8EXPORT bool HasRealNamedCallbackProperty(Handle<String> key); | 
|  | 
| /** | 
| * If result.IsEmpty() no real property was located in the prototype chain. | 
| * This means interceptors in the prototype chain are not called. | 
| */ | 
| -  Local<Value> GetRealNamedPropertyInPrototypeChain(Handle<String> key); | 
| +  V8EXPORT Local<Value> GetRealNamedPropertyInPrototypeChain( | 
| +      Handle<String> key); | 
|  | 
| /** | 
| * If result.IsEmpty() no real property was located on the object or | 
| * in the prototype chain. | 
| * This means interceptors in the prototype chain are not called. | 
| */ | 
| -  Local<Value> GetRealNamedProperty(Handle<String> key); | 
| +  V8EXPORT Local<Value> GetRealNamedProperty(Handle<String> key); | 
|  | 
| /** Tests for a named lookup interceptor.*/ | 
| -  bool HasNamedLookupInterceptor(); | 
| +  V8EXPORT bool HasNamedLookupInterceptor(); | 
|  | 
| /** Tests for an index lookup interceptor.*/ | 
| -  bool HasIndexedLookupInterceptor(); | 
| +  V8EXPORT bool HasIndexedLookupInterceptor(); | 
|  | 
| /** | 
| * Turns on access check on the object if the object is an instance of | 
| * a template that has access check callbacks. If an object has no | 
| * access check info, the object cannot be accessed by anyone. | 
| */ | 
| -  void TurnOnAccessCheck(); | 
| +  V8EXPORT void TurnOnAccessCheck(); | 
|  | 
| /** | 
| * Returns the identity hash for this object. The current implementation | 
| @@ -1688,7 +1698,7 @@ class V8EXPORT Object : public Value { | 
| * The return value will never be 0. Also, it is not guaranteed to be | 
| * unique. | 
| */ | 
| -  int GetIdentityHash(); | 
| +  V8EXPORT int GetIdentityHash(); | 
|  | 
| /** | 
| * Access hidden properties on JavaScript objects. These properties are | 
| @@ -1696,9 +1706,9 @@ class V8EXPORT Object : public Value { | 
| * C++ API. Hidden properties introduced by V8 internally (for example the | 
| * identity hash) are prefixed with "v8::". | 
| */ | 
| -  bool SetHiddenValue(Handle<String> key, Handle<Value> value); | 
| -  Local<Value> GetHiddenValue(Handle<String> key); | 
| -  bool DeleteHiddenValue(Handle<String> key); | 
| +  V8EXPORT bool SetHiddenValue(Handle<String> key, Handle<Value> value); | 
| +  V8EXPORT Local<Value> GetHiddenValue(Handle<String> key); | 
| +  V8EXPORT bool DeleteHiddenValue(Handle<String> key); | 
|  | 
| /** | 
| * Returns true if this is an instance of an api function (one | 
| @@ -1707,18 +1717,18 @@ class V8EXPORT Object : public Value { | 
| * conservative and may return true for objects that haven't actually | 
| * been modified. | 
| */ | 
| -  bool IsDirty(); | 
| +  V8EXPORT bool IsDirty(); | 
|  | 
| /** | 
| * Clone this object with a fast but shallow copy.  Values will point | 
| * to the same values as the original object. | 
| */ | 
| -  Local<Object> Clone(); | 
| +  V8EXPORT Local<Object> Clone(); | 
|  | 
| /** | 
| * Returns the context in which the object was created. | 
| */ | 
| -  Local<Context> CreationContext(); | 
| +  V8EXPORT Local<Context> CreationContext(); | 
|  | 
| /** | 
| * Set the backing store of the indexed properties to be managed by the | 
| @@ -1727,10 +1737,10 @@ class V8EXPORT Object : public Value { | 
| * Note: The embedding program still owns the data and needs to ensure that | 
| *       the backing store is preserved while V8 has a reference. | 
| */ | 
| -  void SetIndexedPropertiesToPixelData(uint8_t* data, int length); | 
| -  bool HasIndexedPropertiesInPixelData(); | 
| -  uint8_t* GetIndexedPropertiesPixelData(); | 
| -  int GetIndexedPropertiesPixelDataLength(); | 
| +  V8EXPORT void SetIndexedPropertiesToPixelData(uint8_t* data, int length); | 
| +  V8EXPORT bool HasIndexedPropertiesInPixelData(); | 
| +  V8EXPORT uint8_t* GetIndexedPropertiesPixelData(); | 
| +  V8EXPORT int GetIndexedPropertiesPixelDataLength(); | 
|  | 
| /** | 
| * Set the backing store of the indexed properties to be managed by the | 
| @@ -1739,83 +1749,87 @@ class V8EXPORT Object : public Value { | 
| * Note: The embedding program still owns the data and needs to ensure that | 
| *       the backing store is preserved while V8 has a reference. | 
| */ | 
| -  void SetIndexedPropertiesToExternalArrayData(void* data, | 
| -                                               ExternalArrayType array_type, | 
| -                                               int number_of_elements); | 
| -  bool HasIndexedPropertiesInExternalArrayData(); | 
| -  void* GetIndexedPropertiesExternalArrayData(); | 
| -  ExternalArrayType GetIndexedPropertiesExternalArrayDataType(); | 
| -  int GetIndexedPropertiesExternalArrayDataLength(); | 
| +  V8EXPORT void SetIndexedPropertiesToExternalArrayData( | 
| +      void* data, | 
| +      ExternalArrayType array_type, | 
| +      int number_of_elements); | 
| +  V8EXPORT bool HasIndexedPropertiesInExternalArrayData(); | 
| +  V8EXPORT void* GetIndexedPropertiesExternalArrayData(); | 
| +  V8EXPORT ExternalArrayType GetIndexedPropertiesExternalArrayDataType(); | 
| +  V8EXPORT int GetIndexedPropertiesExternalArrayDataLength(); | 
|  | 
| /** | 
| * Checks whether a callback is set by the | 
| * ObjectTemplate::SetCallAsFunctionHandler method. | 
| * When an Object is callable this method returns true. | 
| */ | 
| -  bool IsCallable(); | 
| +  V8EXPORT bool IsCallable(); | 
|  | 
| /** | 
| * Call an Object as a function if a callback is set by the | 
| * ObjectTemplate::SetCallAsFunctionHandler method. | 
| */ | 
| -  Local<Value> CallAsFunction(Handle<Object> recv, | 
| -                              int argc, | 
| -                              Handle<Value> argv[]); | 
| +  V8EXPORT Local<Value> CallAsFunction(Handle<Object> recv, | 
| +                                       int argc, | 
| +                                       Handle<Value> argv[]); | 
|  | 
| /** | 
| * Call an Object as a constructor if a callback is set by the | 
| * ObjectTemplate::SetCallAsFunctionHandler method. | 
| * Note: This method behaves like the Function::NewInstance method. | 
| */ | 
| -  Local<Value> CallAsConstructor(int argc, Handle<Value> argv[]); | 
| +  V8EXPORT Local<Value> CallAsConstructor(int argc, | 
| +                                          Handle<Value> argv[]); | 
|  | 
| -  static Local<Object> New(); | 
| +  V8EXPORT static Local<Object> New(); | 
| V8_INLINE(static Object* Cast(Value* obj)); | 
|  | 
| private: | 
| -  Object(); | 
| -  static void CheckCast(Value* obj); | 
| -  Local<Value> SlowGetInternalField(int index); | 
| -  void* SlowGetAlignedPointerFromInternalField(int index); | 
| +  V8EXPORT Object(); | 
| +  V8EXPORT static void CheckCast(Value* obj); | 
| +  V8EXPORT Local<Value> SlowGetInternalField(int index); | 
| +  V8EXPORT void* SlowGetAlignedPointerFromInternalField(int index); | 
| }; | 
|  | 
|  | 
| /** | 
| * An instance of the built-in array constructor (ECMA-262, 15.4.2). | 
| */ | 
| -class V8EXPORT Array : public Object { | 
| +class Array : public Object { | 
| public: | 
| -  uint32_t Length() const; | 
| +  V8EXPORT uint32_t Length() const; | 
|  | 
| /** | 
| * Clones an element at index |index|.  Returns an empty | 
| * handle if cloning fails (for any reason). | 
| */ | 
| -  Local<Object> CloneElementAt(uint32_t index); | 
| +  V8EXPORT Local<Object> CloneElementAt(uint32_t index); | 
|  | 
| /** | 
| * Creates a JavaScript array with the given length. If the length | 
| * is negative the returned array will have length 0. | 
| */ | 
| -  static Local<Array> New(int length = 0); | 
| +  V8EXPORT static Local<Array> New(int length = 0); | 
|  | 
| V8_INLINE(static Array* Cast(Value* obj)); | 
| private: | 
| -  Array(); | 
| -  static void CheckCast(Value* obj); | 
| +  V8EXPORT Array(); | 
| +  V8EXPORT static void CheckCast(Value* obj); | 
| }; | 
|  | 
|  | 
| /** | 
| * A JavaScript function object (ECMA-262, 15.3). | 
| */ | 
| -class V8EXPORT Function : public Object { | 
| +class Function : public Object { | 
| public: | 
| -  Local<Object> NewInstance() const; | 
| -  Local<Object> NewInstance(int argc, Handle<Value> argv[]) const; | 
| -  Local<Value> Call(Handle<Object> recv, int argc, Handle<Value> argv[]); | 
| -  void SetName(Handle<String> name); | 
| -  Handle<Value> GetName() const; | 
| +  V8EXPORT Local<Object> NewInstance() const; | 
| +  V8EXPORT Local<Object> NewInstance(int argc, Handle<Value> argv[]) const; | 
| +  V8EXPORT Local<Value> Call(Handle<Object> recv, | 
| +                             int argc, | 
| +                             Handle<Value> argv[]); | 
| +  V8EXPORT void SetName(Handle<String> name); | 
| +  V8EXPORT Handle<Value> GetName() const; | 
|  | 
| /** | 
| * Name inferred from variable or property assignment of this function. | 
| @@ -1823,41 +1837,41 @@ class V8EXPORT Function : public Object { | 
| * in an OO style, where many functions are anonymous but are assigned | 
| * to object properties. | 
| */ | 
| -  Handle<Value> GetInferredName() const; | 
| +  V8EXPORT Handle<Value> GetInferredName() const; | 
|  | 
| /** | 
| * Returns zero based line number of function body and | 
| * kLineOffsetNotFound if no information available. | 
| */ | 
| -  int GetScriptLineNumber() const; | 
| +  V8EXPORT int GetScriptLineNumber() const; | 
| /** | 
| * Returns zero based column number of function body and | 
| * kLineOffsetNotFound if no information available. | 
| */ | 
| -  int GetScriptColumnNumber() const; | 
| -  Handle<Value> GetScriptId() const; | 
| -  ScriptOrigin GetScriptOrigin() const; | 
| +  V8EXPORT int GetScriptColumnNumber() const; | 
| +  V8EXPORT Handle<Value> GetScriptId() const; | 
| +  V8EXPORT ScriptOrigin GetScriptOrigin() const; | 
| V8_INLINE(static Function* Cast(Value* obj)); | 
| -  static const int kLineOffsetNotFound; | 
| +  V8EXPORT static const int kLineOffsetNotFound; | 
|  | 
| private: | 
| -  Function(); | 
| -  static void CheckCast(Value* obj); | 
| +  V8EXPORT Function(); | 
| +  V8EXPORT static void CheckCast(Value* obj); | 
| }; | 
|  | 
|  | 
| /** | 
| * An instance of the built-in Date constructor (ECMA-262, 15.9). | 
| */ | 
| -class V8EXPORT Date : public Object { | 
| +class Date : public Object { | 
| public: | 
| -  static Local<Value> New(double time); | 
| +  V8EXPORT static Local<Value> New(double time); | 
|  | 
| /** | 
| * A specialization of Value::NumberValue that is more efficient | 
| * because we know the structure of this object. | 
| */ | 
| -  double NumberValue() const; | 
| +  V8EXPORT double NumberValue() const; | 
|  | 
| V8_INLINE(static Date* Cast(v8::Value* obj)); | 
|  | 
| @@ -1873,74 +1887,74 @@ class V8EXPORT Date : public Object { | 
| * This API should not be called more than needed as it will | 
| * negatively impact the performance of date operations. | 
| */ | 
| -  static void DateTimeConfigurationChangeNotification(); | 
| +  V8EXPORT static void DateTimeConfigurationChangeNotification(); | 
|  | 
| private: | 
| -  static void CheckCast(v8::Value* obj); | 
| +  V8EXPORT static void CheckCast(v8::Value* obj); | 
| }; | 
|  | 
|  | 
| /** | 
| * A Number object (ECMA-262, 4.3.21). | 
| */ | 
| -class V8EXPORT NumberObject : public Object { | 
| +class NumberObject : public Object { | 
| public: | 
| -  static Local<Value> New(double value); | 
| +  V8EXPORT static Local<Value> New(double value); | 
|  | 
| /** | 
| * Returns the Number held by the object. | 
| */ | 
| -  double NumberValue() const; | 
| +  V8EXPORT double NumberValue() const; | 
|  | 
| V8_INLINE(static NumberObject* Cast(v8::Value* obj)); | 
|  | 
| private: | 
| -  static void CheckCast(v8::Value* obj); | 
| +  V8EXPORT static void CheckCast(v8::Value* obj); | 
| }; | 
|  | 
|  | 
| /** | 
| * A Boolean object (ECMA-262, 4.3.15). | 
| */ | 
| -class V8EXPORT BooleanObject : public Object { | 
| +class BooleanObject : public Object { | 
| public: | 
| -  static Local<Value> New(bool value); | 
| +  V8EXPORT static Local<Value> New(bool value); | 
|  | 
| /** | 
| * Returns the Boolean held by the object. | 
| */ | 
| -  bool BooleanValue() const; | 
| +  V8EXPORT bool BooleanValue() const; | 
|  | 
| V8_INLINE(static BooleanObject* Cast(v8::Value* obj)); | 
|  | 
| private: | 
| -  static void CheckCast(v8::Value* obj); | 
| +  V8EXPORT static void CheckCast(v8::Value* obj); | 
| }; | 
|  | 
|  | 
| /** | 
| * A String object (ECMA-262, 4.3.18). | 
| */ | 
| -class V8EXPORT StringObject : public Object { | 
| +class StringObject : public Object { | 
| public: | 
| -  static Local<Value> New(Handle<String> value); | 
| +  V8EXPORT static Local<Value> New(Handle<String> value); | 
|  | 
| /** | 
| * Returns the String held by the object. | 
| */ | 
| -  Local<String> StringValue() const; | 
| +  V8EXPORT Local<String> StringValue() const; | 
|  | 
| V8_INLINE(static StringObject* Cast(v8::Value* obj)); | 
|  | 
| private: | 
| -  static void CheckCast(v8::Value* obj); | 
| +  V8EXPORT static void CheckCast(v8::Value* obj); | 
| }; | 
|  | 
|  | 
| /** | 
| * An instance of the built-in RegExp constructor (ECMA-262, 15.10). | 
| */ | 
| -class V8EXPORT RegExp : public Object { | 
| +class RegExp : public Object { | 
| public: | 
| /** | 
| * Regular expression flag bits. They can be or'ed to enable a set | 
| @@ -1963,23 +1977,24 @@ class V8EXPORT RegExp : public Object { | 
| *               static_cast<RegExp::Flags>(kGlobal | kMultiline)) | 
| * is equivalent to evaluating "/foo/gm". | 
| */ | 
| -  static Local<RegExp> New(Handle<String> pattern, Flags flags); | 
| +  V8EXPORT static Local<RegExp> New(Handle<String> pattern, | 
| +                                    Flags flags); | 
|  | 
| /** | 
| * Returns the value of the source property: a string representing | 
| * the regular expression. | 
| */ | 
| -  Local<String> GetSource() const; | 
| +  V8EXPORT Local<String> GetSource() const; | 
|  | 
| /** | 
| * Returns the flags bit field. | 
| */ | 
| -  Flags GetFlags() const; | 
| +  V8EXPORT Flags GetFlags() const; | 
|  | 
| V8_INLINE(static RegExp* Cast(v8::Value* obj)); | 
|  | 
| private: | 
| -  static void CheckCast(v8::Value* obj); | 
| +  V8EXPORT static void CheckCast(v8::Value* obj); | 
| }; | 
|  | 
|  | 
| @@ -1987,13 +2002,19 @@ class V8EXPORT RegExp : public Object { | 
| * A JavaScript value that wraps a C++ void*. This type of value is mainly used | 
| * to associate C++ data structures with JavaScript objects. | 
| */ | 
| -class V8EXPORT External : public Value { | 
| +class External : public Value { | 
| public: | 
| -  static Local<External> New(void* value); | 
| +  /** Deprecated, use New instead. */ | 
| +  V8_DEPRECATED(V8_INLINE(static Local<Value> Wrap(void* value))); | 
| + | 
| +  /** Deprecated, use a combination of Cast and Value instead. */ | 
| +  V8_DEPRECATED(V8_INLINE(static void* Unwrap(Handle<Value> obj))); | 
| + | 
| +  V8EXPORT static Local<External> New(void* value); | 
| V8_INLINE(static External* Cast(Value* obj)); | 
| -  void* Value() const; | 
| +  V8EXPORT void* Value() const; | 
| private: | 
| -  static void CheckCast(v8::Value* obj); | 
| +  V8EXPORT static void CheckCast(v8::Value* obj); | 
| }; | 
|  | 
|  | 
| @@ -2023,7 +2044,7 @@ class V8EXPORT Template : public Data { | 
| * including the receiver, the number and values of arguments, and | 
| * the holder of the function. | 
| */ | 
| -class V8EXPORT Arguments { | 
| +class Arguments { | 
| public: | 
| V8_INLINE(int Length() const); | 
| V8_INLINE(Local<Value> operator[](int i) const); | 
| @@ -2923,7 +2944,7 @@ class V8EXPORT Isolate { | 
| }; | 
|  | 
|  | 
| -class V8EXPORT StartupData { | 
| +class StartupData { | 
| public: | 
| enum CompressionAlgorithm { | 
| kUncompressed, | 
| @@ -3797,6 +3818,18 @@ class V8EXPORT Context { | 
| static bool InContext(); | 
|  | 
| /** | 
| +   * Gets embedder data with index 0. Deprecated, use GetEmbedderData with index | 
| +   * 0 instead. | 
| +   */ | 
| +  V8_DEPRECATED(V8_INLINE(Local<Value> GetData())); | 
| + | 
| +  /** | 
| +   * Sets embedder data with index 0. Deprecated, use SetEmbedderData with index | 
| +   * 0 instead. | 
| +   */ | 
| +  V8_DEPRECATED(V8_INLINE(void SetData(Handle<Value> value))); | 
| + | 
| +  /** | 
| * Gets the embedder data with the given index, which must have been set by a | 
| * previous call to SetEmbedderData with the same index. Note that index 0 | 
| * currently has a special meaning for Chrome's debugger. | 
| @@ -4490,6 +4523,11 @@ Local<Value> Object::GetInternalField(int index) { | 
| } | 
|  | 
|  | 
| +void Object::SetPointerInInternalField(int index, void* value) { | 
| +  SetInternalField(index, External::New(value)); | 
| +} | 
| + | 
| + | 
| void* Object::GetAlignedPointerFromInternalField(int index) { | 
| #ifndef V8_ENABLE_CHECKS | 
| typedef internal::Object O; | 
| @@ -4694,6 +4732,16 @@ Function* Function::Cast(v8::Value* value) { | 
| } | 
|  | 
|  | 
| +Local<Value> External::Wrap(void* value) { | 
| +  return External::New(value); | 
| +} | 
| + | 
| + | 
| +void* External::Unwrap(Handle<v8::Value> obj) { | 
| +  return External::Cast(*obj)->Value(); | 
| +} | 
| + | 
| + | 
| External* External::Cast(v8::Value* value) { | 
| #ifdef V8_ENABLE_CHECKS | 
| CheckCast(value); | 
| @@ -4770,6 +4818,15 @@ void* Isolate::GetData() { | 
| } | 
|  | 
|  | 
| +Local<Value> Context::GetData() { | 
| +  return GetEmbedderData(0); | 
| +} | 
| + | 
| +void Context::SetData(Handle<Value> data) { | 
| +  SetEmbedderData(0, data); | 
| +} | 
| + | 
| + | 
| Local<Value> Context::GetEmbedderData(int index) { | 
| #ifndef V8_ENABLE_CHECKS | 
| typedef internal::Object O; | 
|  |