Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(455)

Side by Side Diff: include/v8.h

Issue 22363003: Define V8EXPORT only in v8.h and use it in the other headers (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fixed long line Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | include/v8-debug.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 22 matching lines...) Expand all
33 * V8 header file, include/v8.h. 33 * V8 header file, include/v8.h.
34 * 34 *
35 * For other documentation see http://code.google.com/apis/v8/ 35 * For other documentation see http://code.google.com/apis/v8/
36 */ 36 */
37 37
38 #ifndef V8_H_ 38 #ifndef V8_H_
39 #define V8_H_ 39 #define V8_H_
40 40
41 #include "v8stdint.h" 41 #include "v8stdint.h"
42 42
43 // We reserve the V8_* prefix for macros defined in V8 public API and
44 // assume there are no name conflicts with the embedder's code.
45
43 #ifdef _WIN32 46 #ifdef _WIN32
44 47
45 // Setup for Windows DLL export/import. When building the V8 DLL the 48 // Setup for Windows DLL export/import. When building the V8 DLL the
46 // BUILDING_V8_SHARED needs to be defined. When building a program which uses 49 // BUILDING_V8_SHARED needs to be defined. When building a program which uses
47 // the V8 DLL USING_V8_SHARED needs to be defined. When either building the V8 50 // the V8 DLL USING_V8_SHARED needs to be defined. When either building the V8
48 // static library or building a program which uses the V8 static library neither 51 // static library or building a program which uses the V8 static library neither
49 // BUILDING_V8_SHARED nor USING_V8_SHARED should be defined. 52 // BUILDING_V8_SHARED nor USING_V8_SHARED should be defined.
50 #if defined(BUILDING_V8_SHARED) && defined(USING_V8_SHARED) 53 #if defined(BUILDING_V8_SHARED) && defined(USING_V8_SHARED)
51 #error both BUILDING_V8_SHARED and USING_V8_SHARED are set - please check the\ 54 #error both BUILDING_V8_SHARED and USING_V8_SHARED are set - please check the\
52 build configuration to ensure that at most one of these is set 55 build configuration to ensure that at most one of these is set
53 #endif 56 #endif
54 57
55 #ifdef BUILDING_V8_SHARED 58 #ifdef BUILDING_V8_SHARED
56 #define V8EXPORT __declspec(dllexport) 59 #define V8_EXPORT __declspec(dllexport)
57 #elif USING_V8_SHARED 60 #elif USING_V8_SHARED
58 #define V8EXPORT __declspec(dllimport) 61 #define V8_EXPORT __declspec(dllimport)
59 #else 62 #else
60 #define V8EXPORT 63 #define V8_EXPORT
61 #endif // BUILDING_V8_SHARED 64 #endif // BUILDING_V8_SHARED
62 65
63 #else // _WIN32 66 #else // _WIN32
64 67
65 // Setup for Linux shared library export. 68 // Setup for Linux shared library export.
66 #if defined(__GNUC__) && ((__GNUC__ >= 4) || \ 69 #if defined(__GNUC__) && ((__GNUC__ >= 4) || \
67 (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(V8_SHARED) 70 (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(V8_SHARED)
68 #ifdef BUILDING_V8_SHARED 71 #ifdef BUILDING_V8_SHARED
69 #define V8EXPORT __attribute__ ((visibility("default"))) 72 #define V8_EXPORT __attribute__ ((visibility("default")))
70 #else 73 #else
71 #define V8EXPORT 74 #define V8_EXPORT
72 #endif 75 #endif
73 #else 76 #else
74 #define V8EXPORT 77 #define V8_EXPORT
75 #endif 78 #endif
76 79
77 #endif // _WIN32 80 #endif // _WIN32
78 81
79 #if defined(__GNUC__) && !defined(DEBUG) 82 #if defined(__GNUC__) && !defined(DEBUG)
80 #define V8_INLINE(declarator) inline __attribute__((always_inline)) declarator 83 #define V8_INLINE(declarator) inline __attribute__((always_inline)) declarator
81 #elif defined(_MSC_VER) && !defined(DEBUG) 84 #elif defined(_MSC_VER) && !defined(DEBUG)
82 #define V8_INLINE(declarator) __forceinline declarator 85 #define V8_INLINE(declarator) __forceinline declarator
83 #else 86 #else
84 #define V8_INLINE(declarator) inline declarator 87 #define V8_INLINE(declarator) inline declarator
(...skipping 709 matching lines...) Expand 10 before | Expand all | Expand 10 after
794 * deleted or another handle scope is created. If there is already a 797 * deleted or another handle scope is created. If there is already a
795 * handle scope and a new one is created, all allocations will take 798 * handle scope and a new one is created, all allocations will take
796 * place in the new handle scope until it is deleted. After that, 799 * place in the new handle scope until it is deleted. After that,
797 * new handles will again be allocated in the original handle scope. 800 * new handles will again be allocated in the original handle scope.
798 * 801 *
799 * After the handle scope of a local handle has been deleted the 802 * After the handle scope of a local handle has been deleted the
800 * garbage collector will no longer track the object stored in the 803 * garbage collector will no longer track the object stored in the
801 * handle and may deallocate it. The behavior of accessing a handle 804 * handle and may deallocate it. The behavior of accessing a handle
802 * for which the handle scope has been deleted is undefined. 805 * for which the handle scope has been deleted is undefined.
803 */ 806 */
804 class V8EXPORT HandleScope { 807 class V8_EXPORT HandleScope {
805 public: 808 public:
806 // TODO(svenpanne) Deprecate me when Chrome is fixed! 809 // TODO(svenpanne) Deprecate me when Chrome is fixed!
807 HandleScope(); 810 HandleScope();
808 811
809 HandleScope(Isolate* isolate); 812 HandleScope(Isolate* isolate);
810 813
811 ~HandleScope(); 814 ~HandleScope();
812 815
813 /** 816 /**
814 * Closes the handle scope and returns the value as a handle in the 817 * Closes the handle scope and returns the value as a handle in the
(...skipping 18 matching lines...) Expand all
833 private: 836 private:
834 // Make it hard to create heap-allocated or illegal handle scopes by 837 // Make it hard to create heap-allocated or illegal handle scopes by
835 // disallowing certain operations. 838 // disallowing certain operations.
836 HandleScope(const HandleScope&); 839 HandleScope(const HandleScope&);
837 void operator=(const HandleScope&); 840 void operator=(const HandleScope&);
838 void* operator new(size_t size); 841 void* operator new(size_t size);
839 void operator delete(void*, size_t); 842 void operator delete(void*, size_t);
840 843
841 // This Data class is accessible internally as HandleScopeData through a 844 // This Data class is accessible internally as HandleScopeData through a
842 // typedef in the ImplementationUtilities class. 845 // typedef in the ImplementationUtilities class.
843 class V8EXPORT Data { 846 class V8_EXPORT Data {
844 public: 847 public:
845 internal::Object** next; 848 internal::Object** next;
846 internal::Object** limit; 849 internal::Object** limit;
847 int level; 850 int level;
848 V8_INLINE(void Initialize()) { 851 V8_INLINE(void Initialize()) {
849 next = limit = NULL; 852 next = limit = NULL;
850 level = 0; 853 level = 0;
851 } 854 }
852 }; 855 };
853 856
(...skipping 12 matching lines...) Expand all
866 friend class ImplementationUtilities; 869 friend class ImplementationUtilities;
867 }; 870 };
868 871
869 872
870 // --- Special objects --- 873 // --- Special objects ---
871 874
872 875
873 /** 876 /**
874 * The superclass of values and API object templates. 877 * The superclass of values and API object templates.
875 */ 878 */
876 class V8EXPORT Data { 879 class V8_EXPORT Data {
877 private: 880 private:
878 Data(); 881 Data();
879 }; 882 };
880 883
881 884
882 /** 885 /**
883 * Pre-compilation data that can be associated with a script. This 886 * Pre-compilation data that can be associated with a script. This
884 * data can be calculated for a script in advance of actually 887 * data can be calculated for a script in advance of actually
885 * compiling it, and can be stored between compilations. When script 888 * compiling it, and can be stored between compilations. When script
886 * data is given to the compile method compilation will be faster. 889 * data is given to the compile method compilation will be faster.
887 */ 890 */
888 class V8EXPORT ScriptData { // NOLINT 891 class V8_EXPORT ScriptData { // NOLINT
889 public: 892 public:
890 virtual ~ScriptData() { } 893 virtual ~ScriptData() { }
891 894
892 /** 895 /**
893 * Pre-compiles the specified script (context-independent). 896 * Pre-compiles the specified script (context-independent).
894 * 897 *
895 * \param input Pointer to UTF-8 script source code. 898 * \param input Pointer to UTF-8 script source code.
896 * \param length Length of UTF-8 script source code. 899 * \param length Length of UTF-8 script source code.
897 */ 900 */
898 static ScriptData* PreCompile(const char* input, int length); 901 static ScriptData* PreCompile(const char* input, int length);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
956 Handle<Value> resource_name_; 959 Handle<Value> resource_name_;
957 Handle<Integer> resource_line_offset_; 960 Handle<Integer> resource_line_offset_;
958 Handle<Integer> resource_column_offset_; 961 Handle<Integer> resource_column_offset_;
959 Handle<Boolean> resource_is_shared_cross_origin_; 962 Handle<Boolean> resource_is_shared_cross_origin_;
960 }; 963 };
961 964
962 965
963 /** 966 /**
964 * A compiled JavaScript script. 967 * A compiled JavaScript script.
965 */ 968 */
966 class V8EXPORT Script { 969 class V8_EXPORT Script {
967 public: 970 public:
968 /** 971 /**
969 * Compiles the specified script (context-independent). 972 * Compiles the specified script (context-independent).
970 * 973 *
971 * \param source Script source code. 974 * \param source Script source code.
972 * \param origin Script origin, owned by caller, no references are kept 975 * \param origin Script origin, owned by caller, no references are kept
973 * when New() returns 976 * when New() returns
974 * \param pre_data Pre-parsing data, as obtained by ScriptData::PreCompile() 977 * \param pre_data Pre-parsing data, as obtained by ScriptData::PreCompile()
975 * using pre_data speeds compilation if it's done multiple times. 978 * using pre_data speeds compilation if it's done multiple times.
976 * Owned by caller, no references are kept when New() returns. 979 * Owned by caller, no references are kept when New() returns.
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
1074 */ 1077 */
1075 int GetLineNumber(int code_pos); 1078 int GetLineNumber(int code_pos);
1076 1079
1077 static const int kNoScriptId = 0; 1080 static const int kNoScriptId = 0;
1078 }; 1081 };
1079 1082
1080 1083
1081 /** 1084 /**
1082 * An error message. 1085 * An error message.
1083 */ 1086 */
1084 class V8EXPORT Message { 1087 class V8_EXPORT Message {
1085 public: 1088 public:
1086 Local<String> Get() const; 1089 Local<String> Get() const;
1087 Local<String> GetSourceLine() const; 1090 Local<String> GetSourceLine() const;
1088 1091
1089 /** 1092 /**
1090 * Returns the resource name for the script from where the function causing 1093 * Returns the resource name for the script from where the function causing
1091 * the error originates. 1094 * the error originates.
1092 */ 1095 */
1093 Handle<Value> GetScriptResourceName() const; 1096 Handle<Value> GetScriptResourceName() const;
1094 1097
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1146 static const int kNoLineNumberInfo = 0; 1149 static const int kNoLineNumberInfo = 0;
1147 static const int kNoColumnInfo = 0; 1150 static const int kNoColumnInfo = 0;
1148 }; 1151 };
1149 1152
1150 1153
1151 /** 1154 /**
1152 * Representation of a JavaScript stack trace. The information collected is a 1155 * Representation of a JavaScript stack trace. The information collected is a
1153 * snapshot of the execution stack and the information remains valid after 1156 * snapshot of the execution stack and the information remains valid after
1154 * execution continues. 1157 * execution continues.
1155 */ 1158 */
1156 class V8EXPORT StackTrace { 1159 class V8_EXPORT StackTrace {
1157 public: 1160 public:
1158 /** 1161 /**
1159 * Flags that determine what information is placed captured for each 1162 * Flags that determine what information is placed captured for each
1160 * StackFrame when grabbing the current stack trace. 1163 * StackFrame when grabbing the current stack trace.
1161 */ 1164 */
1162 enum StackTraceOptions { 1165 enum StackTraceOptions {
1163 kLineNumber = 1, 1166 kLineNumber = 1,
1164 kColumnOffset = 1 << 1 | kLineNumber, 1167 kColumnOffset = 1 << 1 | kLineNumber,
1165 kScriptName = 1 << 2, 1168 kScriptName = 1 << 2,
1166 kFunctionName = 1 << 3, 1169 kFunctionName = 1 << 3,
(...skipping 28 matching lines...) Expand all
1195 */ 1198 */
1196 static Local<StackTrace> CurrentStackTrace( 1199 static Local<StackTrace> CurrentStackTrace(
1197 int frame_limit, 1200 int frame_limit,
1198 StackTraceOptions options = kOverview); 1201 StackTraceOptions options = kOverview);
1199 }; 1202 };
1200 1203
1201 1204
1202 /** 1205 /**
1203 * A single JavaScript stack frame. 1206 * A single JavaScript stack frame.
1204 */ 1207 */
1205 class V8EXPORT StackFrame { 1208 class V8_EXPORT StackFrame {
1206 public: 1209 public:
1207 /** 1210 /**
1208 * Returns the number, 1-based, of the line for the associate function call. 1211 * Returns the number, 1-based, of the line for the associate function call.
1209 * This method will return Message::kNoLineNumberInfo if it is unable to 1212 * This method will return Message::kNoLineNumberInfo if it is unable to
1210 * retrieve the line number, or if kLineNumber was not passed as an option 1213 * retrieve the line number, or if kLineNumber was not passed as an option
1211 * when capturing the StackTrace. 1214 * when capturing the StackTrace.
1212 */ 1215 */
1213 int GetLineNumber() const; 1216 int GetLineNumber() const;
1214 1217
1215 /** 1218 /**
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1250 * Returns whether or not the associated function is called as a 1253 * Returns whether or not the associated function is called as a
1251 * constructor via "new". 1254 * constructor via "new".
1252 */ 1255 */
1253 bool IsConstructor() const; 1256 bool IsConstructor() const;
1254 }; 1257 };
1255 1258
1256 1259
1257 /** 1260 /**
1258 * A JSON Parser. 1261 * A JSON Parser.
1259 */ 1262 */
1260 class V8EXPORT JSON { 1263 class V8_EXPORT JSON {
1261 public: 1264 public:
1262 /** 1265 /**
1263 * Tries to parse the string |json_string| and returns it as object if 1266 * Tries to parse the string |json_string| and returns it as object if
1264 * successful. 1267 * successful.
1265 * 1268 *
1266 * \param json_string The string to parse. 1269 * \param json_string The string to parse.
1267 * \return The corresponding object if successfully parsed. 1270 * \return The corresponding object if successfully parsed.
1268 */ 1271 */
1269 static Local<Object> Parse(Local<String> json_string); 1272 static Local<Object> Parse(Local<String> json_string);
1270 }; 1273 };
1271 1274
1272 1275
1273 // --- Value --- 1276 // --- Value ---
1274 1277
1275 1278
1276 /** 1279 /**
1277 * The superclass of all JavaScript values and objects. 1280 * The superclass of all JavaScript values and objects.
1278 */ 1281 */
1279 class V8EXPORT Value : public Data { 1282 class V8_EXPORT Value : public Data {
1280 public: 1283 public:
1281 /** 1284 /**
1282 * Returns true if this value is the undefined value. See ECMA-262 1285 * Returns true if this value is the undefined value. See ECMA-262
1283 * 4.3.10. 1286 * 4.3.10.
1284 */ 1287 */
1285 V8_INLINE(bool IsUndefined() const); 1288 V8_INLINE(bool IsUndefined() const);
1286 1289
1287 /** 1290 /**
1288 * Returns true if this value is the null value. See ECMA-262 1291 * Returns true if this value is the null value. See ECMA-262
1289 * 4.3.11. 1292 * 4.3.11.
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
1500 V8_INLINE(bool QuickIsString() const); 1503 V8_INLINE(bool QuickIsString() const);
1501 bool FullIsUndefined() const; 1504 bool FullIsUndefined() const;
1502 bool FullIsNull() const; 1505 bool FullIsNull() const;
1503 bool FullIsString() const; 1506 bool FullIsString() const;
1504 }; 1507 };
1505 1508
1506 1509
1507 /** 1510 /**
1508 * The superclass of primitive values. See ECMA-262 4.3.2. 1511 * The superclass of primitive values. See ECMA-262 4.3.2.
1509 */ 1512 */
1510 class V8EXPORT Primitive : public Value { }; 1513 class V8_EXPORT Primitive : public Value { };
1511 1514
1512 1515
1513 /** 1516 /**
1514 * A primitive boolean value (ECMA-262, 4.3.14). Either the true 1517 * A primitive boolean value (ECMA-262, 4.3.14). Either the true
1515 * or false value. 1518 * or false value.
1516 */ 1519 */
1517 class V8EXPORT Boolean : public Primitive { 1520 class V8_EXPORT Boolean : public Primitive {
1518 public: 1521 public:
1519 bool Value() const; 1522 bool Value() const;
1520 V8_INLINE(static Handle<Boolean> New(bool value)); 1523 V8_INLINE(static Handle<Boolean> New(bool value));
1521 }; 1524 };
1522 1525
1523 1526
1524 /** 1527 /**
1525 * A JavaScript string value (ECMA-262, 4.3.17). 1528 * A JavaScript string value (ECMA-262, 4.3.17).
1526 */ 1529 */
1527 class V8EXPORT String : public Primitive { 1530 class V8_EXPORT String : public Primitive {
1528 public: 1531 public:
1529 enum Encoding { 1532 enum Encoding {
1530 UNKNOWN_ENCODING = 0x1, 1533 UNKNOWN_ENCODING = 0x1,
1531 TWO_BYTE_ENCODING = 0x0, 1534 TWO_BYTE_ENCODING = 0x0,
1532 ASCII_ENCODING = 0x4, 1535 ASCII_ENCODING = 0x4,
1533 ONE_BYTE_ENCODING = 0x4 1536 ONE_BYTE_ENCODING = 0x4
1534 }; 1537 };
1535 /** 1538 /**
1536 * Returns the number of characters in this string. 1539 * Returns the number of characters in this string.
1537 */ 1540 */
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1623 /** 1626 /**
1624 * Returns true if the string is external 1627 * Returns true if the string is external
1625 */ 1628 */
1626 bool IsExternal() const; 1629 bool IsExternal() const;
1627 1630
1628 /** 1631 /**
1629 * Returns true if the string is both external and ASCII 1632 * Returns true if the string is both external and ASCII
1630 */ 1633 */
1631 bool IsExternalAscii() const; 1634 bool IsExternalAscii() const;
1632 1635
1633 class V8EXPORT ExternalStringResourceBase { // NOLINT 1636 class V8_EXPORT ExternalStringResourceBase { // NOLINT
1634 public: 1637 public:
1635 virtual ~ExternalStringResourceBase() {} 1638 virtual ~ExternalStringResourceBase() {}
1636 1639
1637 protected: 1640 protected:
1638 ExternalStringResourceBase() {} 1641 ExternalStringResourceBase() {}
1639 1642
1640 /** 1643 /**
1641 * Internally V8 will call this Dispose method when the external string 1644 * Internally V8 will call this Dispose method when the external string
1642 * resource is no longer needed. The default implementation will use the 1645 * resource is no longer needed. The default implementation will use the
1643 * delete operator. This method can be overridden in subclasses to 1646 * delete operator. This method can be overridden in subclasses to
1644 * control how allocated external string resources are disposed. 1647 * control how allocated external string resources are disposed.
1645 */ 1648 */
1646 virtual void Dispose() { delete this; } 1649 virtual void Dispose() { delete this; }
1647 1650
1648 private: 1651 private:
1649 // Disallow copying and assigning. 1652 // Disallow copying and assigning.
1650 ExternalStringResourceBase(const ExternalStringResourceBase&); 1653 ExternalStringResourceBase(const ExternalStringResourceBase&);
1651 void operator=(const ExternalStringResourceBase&); 1654 void operator=(const ExternalStringResourceBase&);
1652 1655
1653 friend class v8::internal::Heap; 1656 friend class v8::internal::Heap;
1654 }; 1657 };
1655 1658
1656 /** 1659 /**
1657 * An ExternalStringResource is a wrapper around a two-byte string 1660 * An ExternalStringResource is a wrapper around a two-byte string
1658 * buffer that resides outside V8's heap. Implement an 1661 * buffer that resides outside V8's heap. Implement an
1659 * ExternalStringResource to manage the life cycle of the underlying 1662 * ExternalStringResource to manage the life cycle of the underlying
1660 * buffer. Note that the string data must be immutable. 1663 * buffer. Note that the string data must be immutable.
1661 */ 1664 */
1662 class V8EXPORT ExternalStringResource 1665 class V8_EXPORT ExternalStringResource
1663 : public ExternalStringResourceBase { 1666 : public ExternalStringResourceBase {
1664 public: 1667 public:
1665 /** 1668 /**
1666 * Override the destructor to manage the life cycle of the underlying 1669 * Override the destructor to manage the life cycle of the underlying
1667 * buffer. 1670 * buffer.
1668 */ 1671 */
1669 virtual ~ExternalStringResource() {} 1672 virtual ~ExternalStringResource() {}
1670 1673
1671 /** 1674 /**
1672 * The string data from the underlying buffer. 1675 * The string data from the underlying buffer.
(...skipping 13 matching lines...) Expand all
1686 * An ExternalAsciiStringResource is a wrapper around an ASCII 1689 * An ExternalAsciiStringResource is a wrapper around an ASCII
1687 * string buffer that resides outside V8's heap. Implement an 1690 * string buffer that resides outside V8's heap. Implement an
1688 * ExternalAsciiStringResource to manage the life cycle of the 1691 * ExternalAsciiStringResource to manage the life cycle of the
1689 * underlying buffer. Note that the string data must be immutable 1692 * underlying buffer. Note that the string data must be immutable
1690 * and that the data must be strict (7-bit) ASCII, not Latin-1 or 1693 * and that the data must be strict (7-bit) ASCII, not Latin-1 or
1691 * UTF-8, which would require special treatment internally in the 1694 * UTF-8, which would require special treatment internally in the
1692 * engine and, in the case of UTF-8, do not allow efficient indexing. 1695 * engine and, in the case of UTF-8, do not allow efficient indexing.
1693 * Use String::New or convert to 16 bit data for non-ASCII. 1696 * Use String::New or convert to 16 bit data for non-ASCII.
1694 */ 1697 */
1695 1698
1696 class V8EXPORT ExternalAsciiStringResource 1699 class V8_EXPORT ExternalAsciiStringResource
1697 : public ExternalStringResourceBase { 1700 : public ExternalStringResourceBase {
1698 public: 1701 public:
1699 /** 1702 /**
1700 * Override the destructor to manage the life cycle of the underlying 1703 * Override the destructor to manage the life cycle of the underlying
1701 * buffer. 1704 * buffer.
1702 */ 1705 */
1703 virtual ~ExternalAsciiStringResource() {} 1706 virtual ~ExternalAsciiStringResource() {}
1704 /** The string data from the underlying buffer.*/ 1707 /** The string data from the underlying buffer.*/
1705 virtual const char* data() const = 0; 1708 virtual const char* data() const = 0;
1706 /** The number of ASCII characters in the string.*/ 1709 /** The number of ASCII characters in the string.*/
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1839 V8_INLINE(static Local<String> NewUndetectable( 1842 V8_INLINE(static Local<String> NewUndetectable(
1840 const uint16_t* data, int length = -1)); 1843 const uint16_t* data, int length = -1));
1841 1844
1842 /** 1845 /**
1843 * Converts an object to a UTF-8-encoded character array. Useful if 1846 * Converts an object to a UTF-8-encoded character array. Useful if
1844 * you want to print the object. If conversion to a string fails 1847 * you want to print the object. If conversion to a string fails
1845 * (e.g. due to an exception in the toString() method of the object) 1848 * (e.g. due to an exception in the toString() method of the object)
1846 * then the length() method returns 0 and the * operator returns 1849 * then the length() method returns 0 and the * operator returns
1847 * NULL. 1850 * NULL.
1848 */ 1851 */
1849 class V8EXPORT Utf8Value { 1852 class V8_EXPORT Utf8Value {
1850 public: 1853 public:
1851 explicit Utf8Value(Handle<v8::Value> obj); 1854 explicit Utf8Value(Handle<v8::Value> obj);
1852 ~Utf8Value(); 1855 ~Utf8Value();
1853 char* operator*() { return str_; } 1856 char* operator*() { return str_; }
1854 const char* operator*() const { return str_; } 1857 const char* operator*() const { return str_; }
1855 int length() const { return length_; } 1858 int length() const { return length_; }
1856 private: 1859 private:
1857 char* str_; 1860 char* str_;
1858 int length_; 1861 int length_;
1859 1862
1860 // Disallow copying and assigning. 1863 // Disallow copying and assigning.
1861 Utf8Value(const Utf8Value&); 1864 Utf8Value(const Utf8Value&);
1862 void operator=(const Utf8Value&); 1865 void operator=(const Utf8Value&);
1863 }; 1866 };
1864 1867
1865 /** 1868 /**
1866 * Converts an object to an ASCII string. 1869 * Converts an object to an ASCII string.
1867 * Useful if you want to print the object. 1870 * Useful if you want to print the object.
1868 * If conversion to a string fails (eg. due to an exception in the toString() 1871 * If conversion to a string fails (eg. due to an exception in the toString()
1869 * method of the object) then the length() method returns 0 and the * operator 1872 * method of the object) then the length() method returns 0 and the * operator
1870 * returns NULL. 1873 * returns NULL.
1871 */ 1874 */
1872 class V8EXPORT AsciiValue { 1875 class V8_EXPORT AsciiValue {
1873 public: 1876 public:
1874 // TODO(dcarney): deprecate 1877 // TODO(dcarney): deprecate
1875 explicit AsciiValue(Handle<v8::Value> obj); 1878 explicit AsciiValue(Handle<v8::Value> obj);
1876 ~AsciiValue(); 1879 ~AsciiValue();
1877 char* operator*() { return str_; } 1880 char* operator*() { return str_; }
1878 const char* operator*() const { return str_; } 1881 const char* operator*() const { return str_; }
1879 int length() const { return length_; } 1882 int length() const { return length_; }
1880 private: 1883 private:
1881 char* str_; 1884 char* str_;
1882 int length_; 1885 int length_;
1883 1886
1884 // Disallow copying and assigning. 1887 // Disallow copying and assigning.
1885 AsciiValue(const AsciiValue&); 1888 AsciiValue(const AsciiValue&);
1886 void operator=(const AsciiValue&); 1889 void operator=(const AsciiValue&);
1887 }; 1890 };
1888 1891
1889 /** 1892 /**
1890 * Converts an object to a two-byte string. 1893 * Converts an object to a two-byte string.
1891 * If conversion to a string fails (eg. due to an exception in the toString() 1894 * If conversion to a string fails (eg. due to an exception in the toString()
1892 * method of the object) then the length() method returns 0 and the * operator 1895 * method of the object) then the length() method returns 0 and the * operator
1893 * returns NULL. 1896 * returns NULL.
1894 */ 1897 */
1895 class V8EXPORT Value { 1898 class V8_EXPORT Value {
1896 public: 1899 public:
1897 explicit Value(Handle<v8::Value> obj); 1900 explicit Value(Handle<v8::Value> obj);
1898 ~Value(); 1901 ~Value();
1899 uint16_t* operator*() { return str_; } 1902 uint16_t* operator*() { return str_; }
1900 const uint16_t* operator*() const { return str_; } 1903 const uint16_t* operator*() const { return str_; }
1901 int length() const { return length_; } 1904 int length() const { return length_; }
1902 private: 1905 private:
1903 uint16_t* str_; 1906 uint16_t* str_;
1904 int length_; 1907 int length_;
1905 1908
1906 // Disallow copying and assigning. 1909 // Disallow copying and assigning.
1907 Value(const Value&); 1910 Value(const Value&);
1908 void operator=(const Value&); 1911 void operator=(const Value&);
1909 }; 1912 };
1910 1913
1911 private: 1914 private:
1912 void VerifyExternalStringResourceBase(ExternalStringResourceBase* v, 1915 void VerifyExternalStringResourceBase(ExternalStringResourceBase* v,
1913 Encoding encoding) const; 1916 Encoding encoding) const;
1914 void VerifyExternalStringResource(ExternalStringResource* val) const; 1917 void VerifyExternalStringResource(ExternalStringResource* val) const;
1915 static void CheckCast(v8::Value* obj); 1918 static void CheckCast(v8::Value* obj);
1916 }; 1919 };
1917 1920
1918 1921
1919 /** 1922 /**
1920 * A JavaScript symbol (ECMA-262 edition 6) 1923 * A JavaScript symbol (ECMA-262 edition 6)
1921 * 1924 *
1922 * This is an experimental feature. Use at your own risk. 1925 * This is an experimental feature. Use at your own risk.
1923 */ 1926 */
1924 class V8EXPORT Symbol : public Primitive { 1927 class V8_EXPORT Symbol : public Primitive {
1925 public: 1928 public:
1926 // Returns the print name string of the symbol, or undefined if none. 1929 // Returns the print name string of the symbol, or undefined if none.
1927 Local<Value> Name() const; 1930 Local<Value> Name() const;
1928 1931
1929 // Create a symbol without a print name. 1932 // Create a symbol without a print name.
1930 static Local<Symbol> New(Isolate* isolate); 1933 static Local<Symbol> New(Isolate* isolate);
1931 1934
1932 // Create a symbol with a print name. 1935 // Create a symbol with a print name.
1933 static Local<Symbol> New(Isolate *isolate, const char* data, int length = -1); 1936 static Local<Symbol> New(Isolate *isolate, const char* data, int length = -1);
1934 1937
1935 V8_INLINE(static Symbol* Cast(v8::Value* obj)); 1938 V8_INLINE(static Symbol* Cast(v8::Value* obj));
1936 private: 1939 private:
1937 Symbol(); 1940 Symbol();
1938 static void CheckCast(v8::Value* obj); 1941 static void CheckCast(v8::Value* obj);
1939 }; 1942 };
1940 1943
1941 1944
1942 /** 1945 /**
1943 * A JavaScript number value (ECMA-262, 4.3.20) 1946 * A JavaScript number value (ECMA-262, 4.3.20)
1944 */ 1947 */
1945 class V8EXPORT Number : public Primitive { 1948 class V8_EXPORT Number : public Primitive {
1946 public: 1949 public:
1947 double Value() const; 1950 double Value() const;
1948 static Local<Number> New(double value); 1951 static Local<Number> New(double value);
1949 static Local<Number> New(Isolate* isolate, double value); 1952 static Local<Number> New(Isolate* isolate, double value);
1950 V8_INLINE(static Number* Cast(v8::Value* obj)); 1953 V8_INLINE(static Number* Cast(v8::Value* obj));
1951 private: 1954 private:
1952 Number(); 1955 Number();
1953 static void CheckCast(v8::Value* obj); 1956 static void CheckCast(v8::Value* obj);
1954 }; 1957 };
1955 1958
1956 1959
1957 /** 1960 /**
1958 * A JavaScript value representing a signed integer. 1961 * A JavaScript value representing a signed integer.
1959 */ 1962 */
1960 class V8EXPORT Integer : public Number { 1963 class V8_EXPORT Integer : public Number {
1961 public: 1964 public:
1962 static Local<Integer> New(int32_t value); 1965 static Local<Integer> New(int32_t value);
1963 static Local<Integer> NewFromUnsigned(uint32_t value); 1966 static Local<Integer> NewFromUnsigned(uint32_t value);
1964 static Local<Integer> New(int32_t value, Isolate*); 1967 static Local<Integer> New(int32_t value, Isolate*);
1965 static Local<Integer> NewFromUnsigned(uint32_t value, Isolate*); 1968 static Local<Integer> NewFromUnsigned(uint32_t value, Isolate*);
1966 int64_t Value() const; 1969 int64_t Value() const;
1967 V8_INLINE(static Integer* Cast(v8::Value* obj)); 1970 V8_INLINE(static Integer* Cast(v8::Value* obj));
1968 private: 1971 private:
1969 Integer(); 1972 Integer();
1970 static void CheckCast(v8::Value* obj); 1973 static void CheckCast(v8::Value* obj);
1971 }; 1974 };
1972 1975
1973 1976
1974 /** 1977 /**
1975 * A JavaScript value representing a 32-bit signed integer. 1978 * A JavaScript value representing a 32-bit signed integer.
1976 */ 1979 */
1977 class V8EXPORT Int32 : public Integer { 1980 class V8_EXPORT Int32 : public Integer {
1978 public: 1981 public:
1979 int32_t Value() const; 1982 int32_t Value() const;
1980 private: 1983 private:
1981 Int32(); 1984 Int32();
1982 }; 1985 };
1983 1986
1984 1987
1985 /** 1988 /**
1986 * A JavaScript value representing a 32-bit unsigned integer. 1989 * A JavaScript value representing a 32-bit unsigned integer.
1987 */ 1990 */
1988 class V8EXPORT Uint32 : public Integer { 1991 class V8_EXPORT Uint32 : public Integer {
1989 public: 1992 public:
1990 uint32_t Value() const; 1993 uint32_t Value() const;
1991 private: 1994 private:
1992 Uint32(); 1995 Uint32();
1993 }; 1996 };
1994 1997
1995 1998
1996 enum PropertyAttribute { 1999 enum PropertyAttribute {
1997 None = 0, 2000 None = 0,
1998 ReadOnly = 1 << 0, 2001 ReadOnly = 1 << 0,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
2050 DEFAULT = 0, 2053 DEFAULT = 0,
2051 ALL_CAN_READ = 1, 2054 ALL_CAN_READ = 1,
2052 ALL_CAN_WRITE = 1 << 1, 2055 ALL_CAN_WRITE = 1 << 1,
2053 PROHIBITS_OVERWRITING = 1 << 2 2056 PROHIBITS_OVERWRITING = 1 << 2
2054 }; 2057 };
2055 2058
2056 2059
2057 /** 2060 /**
2058 * A JavaScript object (ECMA-262, 4.3.3) 2061 * A JavaScript object (ECMA-262, 4.3.3)
2059 */ 2062 */
2060 class V8EXPORT Object : public Value { 2063 class V8_EXPORT Object : public Value {
2061 public: 2064 public:
2062 bool Set(Handle<Value> key, 2065 bool Set(Handle<Value> key,
2063 Handle<Value> value, 2066 Handle<Value> value,
2064 PropertyAttribute attribs = None); 2067 PropertyAttribute attribs = None);
2065 2068
2066 bool Set(uint32_t index, Handle<Value> value); 2069 bool Set(uint32_t index, Handle<Value> value);
2067 2070
2068 // Sets a local property on this object bypassing interceptors and 2071 // Sets a local property on this object bypassing interceptors and
2069 // overriding accessors or read-only properties. 2072 // overriding accessors or read-only properties.
2070 // 2073 //
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
2322 Object(); 2325 Object();
2323 static void CheckCast(Value* obj); 2326 static void CheckCast(Value* obj);
2324 Local<Value> SlowGetInternalField(int index); 2327 Local<Value> SlowGetInternalField(int index);
2325 void* SlowGetAlignedPointerFromInternalField(int index); 2328 void* SlowGetAlignedPointerFromInternalField(int index);
2326 }; 2329 };
2327 2330
2328 2331
2329 /** 2332 /**
2330 * An instance of the built-in array constructor (ECMA-262, 15.4.2). 2333 * An instance of the built-in array constructor (ECMA-262, 15.4.2).
2331 */ 2334 */
2332 class V8EXPORT Array : public Object { 2335 class V8_EXPORT Array : public Object {
2333 public: 2336 public:
2334 uint32_t Length() const; 2337 uint32_t Length() const;
2335 2338
2336 /** 2339 /**
2337 * Clones an element at index |index|. Returns an empty 2340 * Clones an element at index |index|. Returns an empty
2338 * handle if cloning fails (for any reason). 2341 * handle if cloning fails (for any reason).
2339 */ 2342 */
2340 Local<Object> CloneElementAt(uint32_t index); 2343 Local<Object> CloneElementAt(uint32_t index);
2341 2344
2342 /** 2345 /**
2343 * Creates a JavaScript array with the given length. If the length 2346 * Creates a JavaScript array with the given length. If the length
2344 * is negative the returned array will have length 0. 2347 * is negative the returned array will have length 0.
2345 */ 2348 */
2346 static Local<Array> New(int length = 0); 2349 static Local<Array> New(int length = 0);
2347 2350
2348 V8_INLINE(static Array* Cast(Value* obj)); 2351 V8_INLINE(static Array* Cast(Value* obj));
2349 private: 2352 private:
2350 Array(); 2353 Array();
2351 static void CheckCast(Value* obj); 2354 static void CheckCast(Value* obj);
2352 }; 2355 };
2353 2356
2354 2357
2355 /** 2358 /**
2356 * A JavaScript function object (ECMA-262, 15.3). 2359 * A JavaScript function object (ECMA-262, 15.3).
2357 */ 2360 */
2358 class V8EXPORT Function : public Object { 2361 class V8_EXPORT Function : public Object {
2359 public: 2362 public:
2360 Local<Object> NewInstance() const; 2363 Local<Object> NewInstance() const;
2361 Local<Object> NewInstance(int argc, Handle<Value> argv[]) const; 2364 Local<Object> NewInstance(int argc, Handle<Value> argv[]) const;
2362 Local<Value> Call(Handle<Object> recv, int argc, Handle<Value> argv[]); 2365 Local<Value> Call(Handle<Object> recv, int argc, Handle<Value> argv[]);
2363 void SetName(Handle<String> name); 2366 void SetName(Handle<String> name);
2364 Handle<Value> GetName() const; 2367 Handle<Value> GetName() const;
2365 2368
2366 /** 2369 /**
2367 * Name inferred from variable or property assignment of this function. 2370 * Name inferred from variable or property assignment of this function.
2368 * Used to facilitate debugging and profiling of JavaScript code written 2371 * Used to facilitate debugging and profiling of JavaScript code written
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2404 2407
2405 #ifndef V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT 2408 #ifndef V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT
2406 // The number of required internal fields can be defined by embedder. 2409 // The number of required internal fields can be defined by embedder.
2407 #define V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT 2 2410 #define V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT 2
2408 #endif 2411 #endif
2409 2412
2410 /** 2413 /**
2411 * An instance of the built-in ArrayBuffer constructor (ES6 draft 15.13.5). 2414 * An instance of the built-in ArrayBuffer constructor (ES6 draft 15.13.5).
2412 * This API is experimental and may change significantly. 2415 * This API is experimental and may change significantly.
2413 */ 2416 */
2414 class V8EXPORT ArrayBuffer : public Object { 2417 class V8_EXPORT ArrayBuffer : public Object {
2415 public: 2418 public:
2416 /** 2419 /**
2417 * Allocator that V8 uses to allocate |ArrayBuffer|'s memory. 2420 * Allocator that V8 uses to allocate |ArrayBuffer|'s memory.
2418 * The allocator is a global V8 setting. It should be set with 2421 * The allocator is a global V8 setting. It should be set with
2419 * V8::SetArrayBufferAllocator prior to creation of a first ArrayBuffer. 2422 * V8::SetArrayBufferAllocator prior to creation of a first ArrayBuffer.
2420 * 2423 *
2421 * This API is experimental and may change significantly. 2424 * This API is experimental and may change significantly.
2422 */ 2425 */
2423 class V8EXPORT Allocator { // NOLINT 2426 class V8_EXPORT Allocator { // NOLINT
2424 public: 2427 public:
2425 virtual ~Allocator() {} 2428 virtual ~Allocator() {}
2426 2429
2427 /** 2430 /**
2428 * Allocate |length| bytes. Return NULL if allocation is not successful. 2431 * Allocate |length| bytes. Return NULL if allocation is not successful.
2429 * Memory should be initialized to zeroes. 2432 * Memory should be initialized to zeroes.
2430 */ 2433 */
2431 virtual void* Allocate(size_t length) = 0; 2434 virtual void* Allocate(size_t length) = 0;
2432 2435
2433 /** 2436 /**
(...skipping 26 matching lines...) Expand all
2460 /** 2463 /**
2461 * The contents of an |ArrayBuffer|. Externalization of |ArrayBuffer| 2464 * The contents of an |ArrayBuffer|. Externalization of |ArrayBuffer|
2462 * returns an instance of this class, populated, with a pointer to data 2465 * returns an instance of this class, populated, with a pointer to data
2463 * and byte length. 2466 * and byte length.
2464 * 2467 *
2465 * The Data pointer of ArrayBuffer::Contents is always allocated with 2468 * The Data pointer of ArrayBuffer::Contents is always allocated with
2466 * Allocator::Allocate that is set with V8::SetArrayBufferAllocator. 2469 * Allocator::Allocate that is set with V8::SetArrayBufferAllocator.
2467 * 2470 *
2468 * This API is experimental and may change significantly. 2471 * This API is experimental and may change significantly.
2469 */ 2472 */
2470 class V8EXPORT Contents { // NOLINT 2473 class V8_EXPORT Contents { // NOLINT
2471 public: 2474 public:
2472 Contents() : data_(NULL), byte_length_(0) {} 2475 Contents() : data_(NULL), byte_length_(0) {}
2473 2476
2474 void* Data() const { return data_; } 2477 void* Data() const { return data_; }
2475 size_t ByteLength() const { return byte_length_; } 2478 size_t ByteLength() const { return byte_length_; }
2476 2479
2477 private: 2480 private:
2478 void* data_; 2481 void* data_;
2479 size_t byte_length_; 2482 size_t byte_length_;
2480 2483
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
2543 #define V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT 2 2546 #define V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT 2
2544 #endif 2547 #endif
2545 2548
2546 2549
2547 /** 2550 /**
2548 * A base class for an instance of one of "views" over ArrayBuffer, 2551 * A base class for an instance of one of "views" over ArrayBuffer,
2549 * including TypedArrays and DataView (ES6 draft 15.13). 2552 * including TypedArrays and DataView (ES6 draft 15.13).
2550 * 2553 *
2551 * This API is experimental and may change significantly. 2554 * This API is experimental and may change significantly.
2552 */ 2555 */
2553 class V8EXPORT ArrayBufferView : public Object { 2556 class V8_EXPORT ArrayBufferView : public Object {
2554 public: 2557 public:
2555 /** 2558 /**
2556 * Returns underlying ArrayBuffer. 2559 * Returns underlying ArrayBuffer.
2557 */ 2560 */
2558 Local<ArrayBuffer> Buffer(); 2561 Local<ArrayBuffer> Buffer();
2559 /** 2562 /**
2560 * Byte offset in |Buffer|. 2563 * Byte offset in |Buffer|.
2561 */ 2564 */
2562 size_t ByteOffset(); 2565 size_t ByteOffset();
2563 /** 2566 /**
(...skipping 14 matching lines...) Expand all
2578 ArrayBufferView(); 2581 ArrayBufferView();
2579 static void CheckCast(Value* obj); 2582 static void CheckCast(Value* obj);
2580 }; 2583 };
2581 2584
2582 2585
2583 /** 2586 /**
2584 * A base class for an instance of TypedArray series of constructors 2587 * A base class for an instance of TypedArray series of constructors
2585 * (ES6 draft 15.13.6). 2588 * (ES6 draft 15.13.6).
2586 * This API is experimental and may change significantly. 2589 * This API is experimental and may change significantly.
2587 */ 2590 */
2588 class V8EXPORT TypedArray : public ArrayBufferView { 2591 class V8_EXPORT TypedArray : public ArrayBufferView {
2589 public: 2592 public:
2590 /** 2593 /**
2591 * Number of elements in this typed array 2594 * Number of elements in this typed array
2592 * (e.g. for Int16Array, |ByteLength|/2). 2595 * (e.g. for Int16Array, |ByteLength|/2).
2593 */ 2596 */
2594 size_t Length(); 2597 size_t Length();
2595 2598
2596 V8_INLINE(static TypedArray* Cast(Value* obj)); 2599 V8_INLINE(static TypedArray* Cast(Value* obj));
2597 2600
2598 private: 2601 private:
2599 TypedArray(); 2602 TypedArray();
2600 static void CheckCast(Value* obj); 2603 static void CheckCast(Value* obj);
2601 }; 2604 };
2602 2605
2603 2606
2604 /** 2607 /**
2605 * An instance of Uint8Array constructor (ES6 draft 15.13.6). 2608 * An instance of Uint8Array constructor (ES6 draft 15.13.6).
2606 * This API is experimental and may change significantly. 2609 * This API is experimental and may change significantly.
2607 */ 2610 */
2608 class V8EXPORT Uint8Array : public TypedArray { 2611 class V8_EXPORT Uint8Array : public TypedArray {
2609 public: 2612 public:
2610 static Local<Uint8Array> New(Handle<ArrayBuffer> array_buffer, 2613 static Local<Uint8Array> New(Handle<ArrayBuffer> array_buffer,
2611 size_t byte_offset, size_t length); 2614 size_t byte_offset, size_t length);
2612 V8_INLINE(static Uint8Array* Cast(Value* obj)); 2615 V8_INLINE(static Uint8Array* Cast(Value* obj));
2613 2616
2614 private: 2617 private:
2615 Uint8Array(); 2618 Uint8Array();
2616 static void CheckCast(Value* obj); 2619 static void CheckCast(Value* obj);
2617 }; 2620 };
2618 2621
2619 2622
2620 /** 2623 /**
2621 * An instance of Uint8ClampedArray constructor (ES6 draft 15.13.6). 2624 * An instance of Uint8ClampedArray constructor (ES6 draft 15.13.6).
2622 * This API is experimental and may change significantly. 2625 * This API is experimental and may change significantly.
2623 */ 2626 */
2624 class V8EXPORT Uint8ClampedArray : public TypedArray { 2627 class V8_EXPORT Uint8ClampedArray : public TypedArray {
2625 public: 2628 public:
2626 static Local<Uint8ClampedArray> New(Handle<ArrayBuffer> array_buffer, 2629 static Local<Uint8ClampedArray> New(Handle<ArrayBuffer> array_buffer,
2627 size_t byte_offset, size_t length); 2630 size_t byte_offset, size_t length);
2628 V8_INLINE(static Uint8ClampedArray* Cast(Value* obj)); 2631 V8_INLINE(static Uint8ClampedArray* Cast(Value* obj));
2629 2632
2630 private: 2633 private:
2631 Uint8ClampedArray(); 2634 Uint8ClampedArray();
2632 static void CheckCast(Value* obj); 2635 static void CheckCast(Value* obj);
2633 }; 2636 };
2634 2637
2635 /** 2638 /**
2636 * An instance of Int8Array constructor (ES6 draft 15.13.6). 2639 * An instance of Int8Array constructor (ES6 draft 15.13.6).
2637 * This API is experimental and may change significantly. 2640 * This API is experimental and may change significantly.
2638 */ 2641 */
2639 class V8EXPORT Int8Array : public TypedArray { 2642 class V8_EXPORT Int8Array : public TypedArray {
2640 public: 2643 public:
2641 static Local<Int8Array> New(Handle<ArrayBuffer> array_buffer, 2644 static Local<Int8Array> New(Handle<ArrayBuffer> array_buffer,
2642 size_t byte_offset, size_t length); 2645 size_t byte_offset, size_t length);
2643 V8_INLINE(static Int8Array* Cast(Value* obj)); 2646 V8_INLINE(static Int8Array* Cast(Value* obj));
2644 2647
2645 private: 2648 private:
2646 Int8Array(); 2649 Int8Array();
2647 static void CheckCast(Value* obj); 2650 static void CheckCast(Value* obj);
2648 }; 2651 };
2649 2652
2650 2653
2651 /** 2654 /**
2652 * An instance of Uint16Array constructor (ES6 draft 15.13.6). 2655 * An instance of Uint16Array constructor (ES6 draft 15.13.6).
2653 * This API is experimental and may change significantly. 2656 * This API is experimental and may change significantly.
2654 */ 2657 */
2655 class V8EXPORT Uint16Array : public TypedArray { 2658 class V8_EXPORT Uint16Array : public TypedArray {
2656 public: 2659 public:
2657 static Local<Uint16Array> New(Handle<ArrayBuffer> array_buffer, 2660 static Local<Uint16Array> New(Handle<ArrayBuffer> array_buffer,
2658 size_t byte_offset, size_t length); 2661 size_t byte_offset, size_t length);
2659 V8_INLINE(static Uint16Array* Cast(Value* obj)); 2662 V8_INLINE(static Uint16Array* Cast(Value* obj));
2660 2663
2661 private: 2664 private:
2662 Uint16Array(); 2665 Uint16Array();
2663 static void CheckCast(Value* obj); 2666 static void CheckCast(Value* obj);
2664 }; 2667 };
2665 2668
2666 2669
2667 /** 2670 /**
2668 * An instance of Int16Array constructor (ES6 draft 15.13.6). 2671 * An instance of Int16Array constructor (ES6 draft 15.13.6).
2669 * This API is experimental and may change significantly. 2672 * This API is experimental and may change significantly.
2670 */ 2673 */
2671 class V8EXPORT Int16Array : public TypedArray { 2674 class V8_EXPORT Int16Array : public TypedArray {
2672 public: 2675 public:
2673 static Local<Int16Array> New(Handle<ArrayBuffer> array_buffer, 2676 static Local<Int16Array> New(Handle<ArrayBuffer> array_buffer,
2674 size_t byte_offset, size_t length); 2677 size_t byte_offset, size_t length);
2675 V8_INLINE(static Int16Array* Cast(Value* obj)); 2678 V8_INLINE(static Int16Array* Cast(Value* obj));
2676 2679
2677 private: 2680 private:
2678 Int16Array(); 2681 Int16Array();
2679 static void CheckCast(Value* obj); 2682 static void CheckCast(Value* obj);
2680 }; 2683 };
2681 2684
2682 2685
2683 /** 2686 /**
2684 * An instance of Uint32Array constructor (ES6 draft 15.13.6). 2687 * An instance of Uint32Array constructor (ES6 draft 15.13.6).
2685 * This API is experimental and may change significantly. 2688 * This API is experimental and may change significantly.
2686 */ 2689 */
2687 class V8EXPORT Uint32Array : public TypedArray { 2690 class V8_EXPORT Uint32Array : public TypedArray {
2688 public: 2691 public:
2689 static Local<Uint32Array> New(Handle<ArrayBuffer> array_buffer, 2692 static Local<Uint32Array> New(Handle<ArrayBuffer> array_buffer,
2690 size_t byte_offset, size_t length); 2693 size_t byte_offset, size_t length);
2691 V8_INLINE(static Uint32Array* Cast(Value* obj)); 2694 V8_INLINE(static Uint32Array* Cast(Value* obj));
2692 2695
2693 private: 2696 private:
2694 Uint32Array(); 2697 Uint32Array();
2695 static void CheckCast(Value* obj); 2698 static void CheckCast(Value* obj);
2696 }; 2699 };
2697 2700
2698 2701
2699 /** 2702 /**
2700 * An instance of Int32Array constructor (ES6 draft 15.13.6). 2703 * An instance of Int32Array constructor (ES6 draft 15.13.6).
2701 * This API is experimental and may change significantly. 2704 * This API is experimental and may change significantly.
2702 */ 2705 */
2703 class V8EXPORT Int32Array : public TypedArray { 2706 class V8_EXPORT Int32Array : public TypedArray {
2704 public: 2707 public:
2705 static Local<Int32Array> New(Handle<ArrayBuffer> array_buffer, 2708 static Local<Int32Array> New(Handle<ArrayBuffer> array_buffer,
2706 size_t byte_offset, size_t length); 2709 size_t byte_offset, size_t length);
2707 V8_INLINE(static Int32Array* Cast(Value* obj)); 2710 V8_INLINE(static Int32Array* Cast(Value* obj));
2708 2711
2709 private: 2712 private:
2710 Int32Array(); 2713 Int32Array();
2711 static void CheckCast(Value* obj); 2714 static void CheckCast(Value* obj);
2712 }; 2715 };
2713 2716
2714 2717
2715 /** 2718 /**
2716 * An instance of Float32Array constructor (ES6 draft 15.13.6). 2719 * An instance of Float32Array constructor (ES6 draft 15.13.6).
2717 * This API is experimental and may change significantly. 2720 * This API is experimental and may change significantly.
2718 */ 2721 */
2719 class V8EXPORT Float32Array : public TypedArray { 2722 class V8_EXPORT Float32Array : public TypedArray {
2720 public: 2723 public:
2721 static Local<Float32Array> New(Handle<ArrayBuffer> array_buffer, 2724 static Local<Float32Array> New(Handle<ArrayBuffer> array_buffer,
2722 size_t byte_offset, size_t length); 2725 size_t byte_offset, size_t length);
2723 V8_INLINE(static Float32Array* Cast(Value* obj)); 2726 V8_INLINE(static Float32Array* Cast(Value* obj));
2724 2727
2725 private: 2728 private:
2726 Float32Array(); 2729 Float32Array();
2727 static void CheckCast(Value* obj); 2730 static void CheckCast(Value* obj);
2728 }; 2731 };
2729 2732
2730 2733
2731 /** 2734 /**
2732 * An instance of Float64Array constructor (ES6 draft 15.13.6). 2735 * An instance of Float64Array constructor (ES6 draft 15.13.6).
2733 * This API is experimental and may change significantly. 2736 * This API is experimental and may change significantly.
2734 */ 2737 */
2735 class V8EXPORT Float64Array : public TypedArray { 2738 class V8_EXPORT Float64Array : public TypedArray {
2736 public: 2739 public:
2737 static Local<Float64Array> New(Handle<ArrayBuffer> array_buffer, 2740 static Local<Float64Array> New(Handle<ArrayBuffer> array_buffer,
2738 size_t byte_offset, size_t length); 2741 size_t byte_offset, size_t length);
2739 V8_INLINE(static Float64Array* Cast(Value* obj)); 2742 V8_INLINE(static Float64Array* Cast(Value* obj));
2740 2743
2741 private: 2744 private:
2742 Float64Array(); 2745 Float64Array();
2743 static void CheckCast(Value* obj); 2746 static void CheckCast(Value* obj);
2744 }; 2747 };
2745 2748
2746 2749
2747 /** 2750 /**
2748 * An instance of DataView constructor (ES6 draft 15.13.7). 2751 * An instance of DataView constructor (ES6 draft 15.13.7).
2749 * This API is experimental and may change significantly. 2752 * This API is experimental and may change significantly.
2750 */ 2753 */
2751 class V8EXPORT DataView : public ArrayBufferView { 2754 class V8_EXPORT DataView : public ArrayBufferView {
2752 public: 2755 public:
2753 static Local<DataView> New(Handle<ArrayBuffer> array_buffer, 2756 static Local<DataView> New(Handle<ArrayBuffer> array_buffer,
2754 size_t byte_offset, size_t length); 2757 size_t byte_offset, size_t length);
2755 V8_INLINE(static DataView* Cast(Value* obj)); 2758 V8_INLINE(static DataView* Cast(Value* obj));
2756 2759
2757 private: 2760 private:
2758 DataView(); 2761 DataView();
2759 static void CheckCast(Value* obj); 2762 static void CheckCast(Value* obj);
2760 }; 2763 };
2761 2764
2762 2765
2763 /** 2766 /**
2764 * An instance of the built-in Date constructor (ECMA-262, 15.9). 2767 * An instance of the built-in Date constructor (ECMA-262, 15.9).
2765 */ 2768 */
2766 class V8EXPORT Date : public Object { 2769 class V8_EXPORT Date : public Object {
2767 public: 2770 public:
2768 static Local<Value> New(double time); 2771 static Local<Value> New(double time);
2769 2772
2770 // Deprecated, use Date::ValueOf() instead. 2773 // Deprecated, use Date::ValueOf() instead.
2771 // TODO(svenpanne) Actually deprecate when Chrome is adapted. 2774 // TODO(svenpanne) Actually deprecate when Chrome is adapted.
2772 double NumberValue() const { return ValueOf(); } 2775 double NumberValue() const { return ValueOf(); }
2773 2776
2774 /** 2777 /**
2775 * A specialization of Value::NumberValue that is more efficient 2778 * A specialization of Value::NumberValue that is more efficient
2776 * because we know the structure of this object. 2779 * because we know the structure of this object.
(...skipping 17 matching lines...) Expand all
2794 static void DateTimeConfigurationChangeNotification(); 2797 static void DateTimeConfigurationChangeNotification();
2795 2798
2796 private: 2799 private:
2797 static void CheckCast(v8::Value* obj); 2800 static void CheckCast(v8::Value* obj);
2798 }; 2801 };
2799 2802
2800 2803
2801 /** 2804 /**
2802 * A Number object (ECMA-262, 4.3.21). 2805 * A Number object (ECMA-262, 4.3.21).
2803 */ 2806 */
2804 class V8EXPORT NumberObject : public Object { 2807 class V8_EXPORT NumberObject : public Object {
2805 public: 2808 public:
2806 static Local<Value> New(double value); 2809 static Local<Value> New(double value);
2807 2810
2808 // Deprecated, use NumberObject::ValueOf() instead. 2811 // Deprecated, use NumberObject::ValueOf() instead.
2809 // TODO(svenpanne) Actually deprecate when Chrome is adapted. 2812 // TODO(svenpanne) Actually deprecate when Chrome is adapted.
2810 double NumberValue() const { return ValueOf(); } 2813 double NumberValue() const { return ValueOf(); }
2811 2814
2812 /** 2815 /**
2813 * Returns the Number held by the object. 2816 * Returns the Number held by the object.
2814 */ 2817 */
2815 double ValueOf() const; 2818 double ValueOf() const;
2816 2819
2817 V8_INLINE(static NumberObject* Cast(v8::Value* obj)); 2820 V8_INLINE(static NumberObject* Cast(v8::Value* obj));
2818 2821
2819 private: 2822 private:
2820 static void CheckCast(v8::Value* obj); 2823 static void CheckCast(v8::Value* obj);
2821 }; 2824 };
2822 2825
2823 2826
2824 /** 2827 /**
2825 * A Boolean object (ECMA-262, 4.3.15). 2828 * A Boolean object (ECMA-262, 4.3.15).
2826 */ 2829 */
2827 class V8EXPORT BooleanObject : public Object { 2830 class V8_EXPORT BooleanObject : public Object {
2828 public: 2831 public:
2829 static Local<Value> New(bool value); 2832 static Local<Value> New(bool value);
2830 2833
2831 // Deprecated, use BooleanObject::ValueOf() instead. 2834 // Deprecated, use BooleanObject::ValueOf() instead.
2832 // TODO(svenpanne) Actually deprecate when Chrome is adapted. 2835 // TODO(svenpanne) Actually deprecate when Chrome is adapted.
2833 bool BooleanValue() const { return ValueOf(); } 2836 bool BooleanValue() const { return ValueOf(); }
2834 2837
2835 /** 2838 /**
2836 * Returns the Boolean held by the object. 2839 * Returns the Boolean held by the object.
2837 */ 2840 */
2838 bool ValueOf() const; 2841 bool ValueOf() const;
2839 2842
2840 V8_INLINE(static BooleanObject* Cast(v8::Value* obj)); 2843 V8_INLINE(static BooleanObject* Cast(v8::Value* obj));
2841 2844
2842 private: 2845 private:
2843 static void CheckCast(v8::Value* obj); 2846 static void CheckCast(v8::Value* obj);
2844 }; 2847 };
2845 2848
2846 2849
2847 /** 2850 /**
2848 * A String object (ECMA-262, 4.3.18). 2851 * A String object (ECMA-262, 4.3.18).
2849 */ 2852 */
2850 class V8EXPORT StringObject : public Object { 2853 class V8_EXPORT StringObject : public Object {
2851 public: 2854 public:
2852 static Local<Value> New(Handle<String> value); 2855 static Local<Value> New(Handle<String> value);
2853 2856
2854 // Deprecated, use StringObject::ValueOf() instead. 2857 // Deprecated, use StringObject::ValueOf() instead.
2855 // TODO(svenpanne) Actually deprecate when Chrome is adapted. 2858 // TODO(svenpanne) Actually deprecate when Chrome is adapted.
2856 Local<String> StringValue() const { return ValueOf(); } 2859 Local<String> StringValue() const { return ValueOf(); }
2857 2860
2858 /** 2861 /**
2859 * Returns the String held by the object. 2862 * Returns the String held by the object.
2860 */ 2863 */
2861 Local<String> ValueOf() const; 2864 Local<String> ValueOf() const;
2862 2865
2863 V8_INLINE(static StringObject* Cast(v8::Value* obj)); 2866 V8_INLINE(static StringObject* Cast(v8::Value* obj));
2864 2867
2865 private: 2868 private:
2866 static void CheckCast(v8::Value* obj); 2869 static void CheckCast(v8::Value* obj);
2867 }; 2870 };
2868 2871
2869 2872
2870 /** 2873 /**
2871 * A Symbol object (ECMA-262 edition 6). 2874 * A Symbol object (ECMA-262 edition 6).
2872 * 2875 *
2873 * This is an experimental feature. Use at your own risk. 2876 * This is an experimental feature. Use at your own risk.
2874 */ 2877 */
2875 class V8EXPORT SymbolObject : public Object { 2878 class V8_EXPORT SymbolObject : public Object {
2876 public: 2879 public:
2877 static Local<Value> New(Isolate* isolate, Handle<Symbol> value); 2880 static Local<Value> New(Isolate* isolate, Handle<Symbol> value);
2878 2881
2879 // Deprecated, use SymbolObject::ValueOf() instead. 2882 // Deprecated, use SymbolObject::ValueOf() instead.
2880 // TODO(svenpanne) Actually deprecate when Chrome is adapted. 2883 // TODO(svenpanne) Actually deprecate when Chrome is adapted.
2881 Local<Symbol> SymbolValue() const { return ValueOf(); } 2884 Local<Symbol> SymbolValue() const { return ValueOf(); }
2882 2885
2883 /** 2886 /**
2884 * Returns the Symbol held by the object. 2887 * Returns the Symbol held by the object.
2885 */ 2888 */
2886 Local<Symbol> ValueOf() const; 2889 Local<Symbol> ValueOf() const;
2887 2890
2888 V8_INLINE(static SymbolObject* Cast(v8::Value* obj)); 2891 V8_INLINE(static SymbolObject* Cast(v8::Value* obj));
2889 2892
2890 private: 2893 private:
2891 static void CheckCast(v8::Value* obj); 2894 static void CheckCast(v8::Value* obj);
2892 }; 2895 };
2893 2896
2894 2897
2895 /** 2898 /**
2896 * An instance of the built-in RegExp constructor (ECMA-262, 15.10). 2899 * An instance of the built-in RegExp constructor (ECMA-262, 15.10).
2897 */ 2900 */
2898 class V8EXPORT RegExp : public Object { 2901 class V8_EXPORT RegExp : public Object {
2899 public: 2902 public:
2900 /** 2903 /**
2901 * Regular expression flag bits. They can be or'ed to enable a set 2904 * Regular expression flag bits. They can be or'ed to enable a set
2902 * of flags. 2905 * of flags.
2903 */ 2906 */
2904 enum Flags { 2907 enum Flags {
2905 kNone = 0, 2908 kNone = 0,
2906 kGlobal = 1, 2909 kGlobal = 1,
2907 kIgnoreCase = 2, 2910 kIgnoreCase = 2,
2908 kMultiline = 4 2911 kMultiline = 4
(...skipping 26 matching lines...) Expand all
2935 2938
2936 private: 2939 private:
2937 static void CheckCast(v8::Value* obj); 2940 static void CheckCast(v8::Value* obj);
2938 }; 2941 };
2939 2942
2940 2943
2941 /** 2944 /**
2942 * A JavaScript value that wraps a C++ void*. This type of value is mainly used 2945 * A JavaScript value that wraps a C++ void*. This type of value is mainly used
2943 * to associate C++ data structures with JavaScript objects. 2946 * to associate C++ data structures with JavaScript objects.
2944 */ 2947 */
2945 class V8EXPORT External : public Value { 2948 class V8_EXPORT External : public Value {
2946 public: 2949 public:
2947 static Local<External> New(void* value); 2950 static Local<External> New(void* value);
2948 V8_INLINE(static External* Cast(Value* obj)); 2951 V8_INLINE(static External* Cast(Value* obj));
2949 void* Value() const; 2952 void* Value() const;
2950 private: 2953 private:
2951 static void CheckCast(v8::Value* obj); 2954 static void CheckCast(v8::Value* obj);
2952 }; 2955 };
2953 2956
2954 2957
2955 // --- Templates --- 2958 // --- Templates ---
2956 2959
2957 2960
2958 /** 2961 /**
2959 * The superclass of object and function templates. 2962 * The superclass of object and function templates.
2960 */ 2963 */
2961 class V8EXPORT Template : public Data { 2964 class V8_EXPORT Template : public Data {
2962 public: 2965 public:
2963 /** Adds a property to each instance created by this template.*/ 2966 /** Adds a property to each instance created by this template.*/
2964 void Set(Handle<String> name, Handle<Data> value, 2967 void Set(Handle<String> name, Handle<Data> value,
2965 PropertyAttribute attributes = None); 2968 PropertyAttribute attributes = None);
2966 V8_INLINE(void Set(const char* name, Handle<Data> value)); 2969 V8_INLINE(void Set(const char* name, Handle<Data> value));
2967 private: 2970 private:
2968 Template(); 2971 Template();
2969 2972
2970 friend class ObjectTemplate; 2973 friend class ObjectTemplate;
2971 friend class FunctionTemplate; 2974 friend class FunctionTemplate;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
3039 internal::Object** values, 3042 internal::Object** values,
3040 int length, 3043 int length,
3041 bool is_construct_call)); 3044 bool is_construct_call));
3042 internal::Object** implicit_args_; 3045 internal::Object** implicit_args_;
3043 internal::Object** values_; 3046 internal::Object** values_;
3044 int length_; 3047 int length_;
3045 bool is_construct_call_; 3048 bool is_construct_call_;
3046 }; 3049 };
3047 3050
3048 3051
3049 class V8EXPORT Arguments : public FunctionCallbackInfo<Value> { 3052 class V8_EXPORT Arguments : public FunctionCallbackInfo<Value> {
3050 private: 3053 private:
3051 friend class internal::FunctionCallbackArguments; 3054 friend class internal::FunctionCallbackArguments;
3052 V8_INLINE(Arguments(internal::Object** implicit_args, 3055 V8_INLINE(Arguments(internal::Object** implicit_args,
3053 internal::Object** values, 3056 internal::Object** values,
3054 int length, 3057 int length,
3055 bool is_construct_call)); 3058 bool is_construct_call));
3056 }; 3059 };
3057 3060
3058 /** 3061 /**
3059 * The information passed to a property callback about the context 3062 * The information passed to a property callback about the context
(...skipping 20 matching lines...) Expand all
3080 static const int kReturnValueIndex = -3; 3083 static const int kReturnValueIndex = -3;
3081 static const int kReturnValueDefaultValueIndex = -4; 3084 static const int kReturnValueDefaultValueIndex = -4;
3082 static const int kIsolateIndex = -5; 3085 static const int kIsolateIndex = -5;
3083 3086
3084 V8_INLINE(PropertyCallbackInfo(internal::Object** args)) 3087 V8_INLINE(PropertyCallbackInfo(internal::Object** args))
3085 : args_(args) { } 3088 : args_(args) { }
3086 internal::Object** args_; 3089 internal::Object** args_;
3087 }; 3090 };
3088 3091
3089 3092
3090 class V8EXPORT AccessorInfo : public PropertyCallbackInfo<Value> { 3093 class V8_EXPORT AccessorInfo : public PropertyCallbackInfo<Value> {
3091 private: 3094 private:
3092 friend class internal::PropertyCallbackArguments; 3095 friend class internal::PropertyCallbackArguments;
3093 V8_INLINE(AccessorInfo(internal::Object** args)) 3096 V8_INLINE(AccessorInfo(internal::Object** args))
3094 : PropertyCallbackInfo<Value>(args) { } 3097 : PropertyCallbackInfo<Value>(args) { }
3095 }; 3098 };
3096 3099
3097 3100
3098 typedef Handle<Value> (*InvocationCallback)(const Arguments& args); 3101 typedef Handle<Value> (*InvocationCallback)(const Arguments& args);
3099 typedef void (*FunctionCallback)(const FunctionCallbackInfo<Value>& info); 3102 typedef void (*FunctionCallback)(const FunctionCallbackInfo<Value>& info);
3100 3103
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
3328 * 3331 *
3329 * The Child function and Child instance will have the following 3332 * The Child function and Child instance will have the following
3330 * properties: 3333 * properties:
3331 * 3334 *
3332 * \code 3335 * \code
3333 * child_func.prototype.__proto__ == function.prototype; 3336 * child_func.prototype.__proto__ == function.prototype;
3334 * child_instance.instance_accessor calls 'InstanceAccessorCallback' 3337 * child_instance.instance_accessor calls 'InstanceAccessorCallback'
3335 * child_instance.instance_property == 3; 3338 * child_instance.instance_property == 3;
3336 * \endcode 3339 * \endcode
3337 */ 3340 */
3338 class V8EXPORT FunctionTemplate : public Template { 3341 class V8_EXPORT FunctionTemplate : public Template {
3339 public: 3342 public:
3340 /** Creates a function template.*/ 3343 /** Creates a function template.*/
3341 V8_DEPRECATED(static Local<FunctionTemplate> New( 3344 V8_DEPRECATED(static Local<FunctionTemplate> New(
3342 InvocationCallback callback, 3345 InvocationCallback callback,
3343 Handle<Value> data = Handle<Value>(), 3346 Handle<Value> data = Handle<Value>(),
3344 Handle<Signature> signature = Handle<Signature>(), 3347 Handle<Signature> signature = Handle<Signature>(),
3345 int length = 0)); 3348 int length = 0));
3346 static Local<FunctionTemplate> New( 3349 static Local<FunctionTemplate> New(
3347 FunctionCallback callback = 0, 3350 FunctionCallback callback = 0,
3348 Handle<Value> data = Handle<Value>(), 3351 Handle<Value> data = Handle<Value>(),
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
3419 friend class ObjectTemplate; 3422 friend class ObjectTemplate;
3420 }; 3423 };
3421 3424
3422 3425
3423 /** 3426 /**
3424 * An ObjectTemplate is used to create objects at runtime. 3427 * An ObjectTemplate is used to create objects at runtime.
3425 * 3428 *
3426 * Properties added to an ObjectTemplate are added to each object 3429 * Properties added to an ObjectTemplate are added to each object
3427 * created from the ObjectTemplate. 3430 * created from the ObjectTemplate.
3428 */ 3431 */
3429 class V8EXPORT ObjectTemplate : public Template { 3432 class V8_EXPORT ObjectTemplate : public Template {
3430 public: 3433 public:
3431 /** Creates an ObjectTemplate. */ 3434 /** Creates an ObjectTemplate. */
3432 static Local<ObjectTemplate> New(); 3435 static Local<ObjectTemplate> New();
3433 3436
3434 /** Creates a new instance of this template.*/ 3437 /** Creates a new instance of this template.*/
3435 Local<Object> NewInstance(); 3438 Local<Object> NewInstance();
3436 3439
3437 /** 3440 /**
3438 * Sets an accessor on the object template. 3441 * Sets an accessor on the object template.
3439 * 3442 *
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
3605 ObjectTemplate(); 3608 ObjectTemplate();
3606 static Local<ObjectTemplate> New(Handle<FunctionTemplate> constructor); 3609 static Local<ObjectTemplate> New(Handle<FunctionTemplate> constructor);
3607 friend class FunctionTemplate; 3610 friend class FunctionTemplate;
3608 }; 3611 };
3609 3612
3610 3613
3611 /** 3614 /**
3612 * A Signature specifies which receivers and arguments are valid 3615 * A Signature specifies which receivers and arguments are valid
3613 * parameters to a function. 3616 * parameters to a function.
3614 */ 3617 */
3615 class V8EXPORT Signature : public Data { 3618 class V8_EXPORT Signature : public Data {
3616 public: 3619 public:
3617 static Local<Signature> New(Handle<FunctionTemplate> receiver = 3620 static Local<Signature> New(Handle<FunctionTemplate> receiver =
3618 Handle<FunctionTemplate>(), 3621 Handle<FunctionTemplate>(),
3619 int argc = 0, 3622 int argc = 0,
3620 Handle<FunctionTemplate> argv[] = 0); 3623 Handle<FunctionTemplate> argv[] = 0);
3621 private: 3624 private:
3622 Signature(); 3625 Signature();
3623 }; 3626 };
3624 3627
3625 3628
3626 /** 3629 /**
3627 * An AccessorSignature specifies which receivers are valid parameters 3630 * An AccessorSignature specifies which receivers are valid parameters
3628 * to an accessor callback. 3631 * to an accessor callback.
3629 */ 3632 */
3630 class V8EXPORT AccessorSignature : public Data { 3633 class V8_EXPORT AccessorSignature : public Data {
3631 public: 3634 public:
3632 static Local<AccessorSignature> New(Handle<FunctionTemplate> receiver = 3635 static Local<AccessorSignature> New(Handle<FunctionTemplate> receiver =
3633 Handle<FunctionTemplate>()); 3636 Handle<FunctionTemplate>());
3634 private: 3637 private:
3635 AccessorSignature(); 3638 AccessorSignature();
3636 }; 3639 };
3637 3640
3638 3641
3639 class V8EXPORT DeclaredAccessorDescriptor : public Data { 3642 class V8_EXPORT DeclaredAccessorDescriptor : public Data {
3640 private: 3643 private:
3641 DeclaredAccessorDescriptor(); 3644 DeclaredAccessorDescriptor();
3642 }; 3645 };
3643 3646
3644 3647
3645 class V8EXPORT ObjectOperationDescriptor : public Data { 3648 class V8_EXPORT ObjectOperationDescriptor : public Data {
3646 public: 3649 public:
3647 // This function is not yet stable and should not be used at this time. 3650 // This function is not yet stable and should not be used at this time.
3648 static Local<RawOperationDescriptor> NewInternalFieldDereference( 3651 static Local<RawOperationDescriptor> NewInternalFieldDereference(
3649 Isolate* isolate, 3652 Isolate* isolate,
3650 int internal_field); 3653 int internal_field);
3651 private: 3654 private:
3652 ObjectOperationDescriptor(); 3655 ObjectOperationDescriptor();
3653 }; 3656 };
3654 3657
3655 3658
3656 enum DeclaredAccessorDescriptorDataType { 3659 enum DeclaredAccessorDescriptorDataType {
3657 kDescriptorBoolType, 3660 kDescriptorBoolType,
3658 kDescriptorInt8Type, kDescriptorUint8Type, 3661 kDescriptorInt8Type, kDescriptorUint8Type,
3659 kDescriptorInt16Type, kDescriptorUint16Type, 3662 kDescriptorInt16Type, kDescriptorUint16Type,
3660 kDescriptorInt32Type, kDescriptorUint32Type, 3663 kDescriptorInt32Type, kDescriptorUint32Type,
3661 kDescriptorFloatType, kDescriptorDoubleType 3664 kDescriptorFloatType, kDescriptorDoubleType
3662 }; 3665 };
3663 3666
3664 3667
3665 class V8EXPORT RawOperationDescriptor : public Data { 3668 class V8_EXPORT RawOperationDescriptor : public Data {
3666 public: 3669 public:
3667 Local<DeclaredAccessorDescriptor> NewHandleDereference(Isolate* isolate); 3670 Local<DeclaredAccessorDescriptor> NewHandleDereference(Isolate* isolate);
3668 Local<RawOperationDescriptor> NewRawDereference(Isolate* isolate); 3671 Local<RawOperationDescriptor> NewRawDereference(Isolate* isolate);
3669 Local<RawOperationDescriptor> NewRawShift(Isolate* isolate, 3672 Local<RawOperationDescriptor> NewRawShift(Isolate* isolate,
3670 int16_t byte_offset); 3673 int16_t byte_offset);
3671 Local<DeclaredAccessorDescriptor> NewPointerCompare(Isolate* isolate, 3674 Local<DeclaredAccessorDescriptor> NewPointerCompare(Isolate* isolate,
3672 void* compare_value); 3675 void* compare_value);
3673 Local<DeclaredAccessorDescriptor> NewPrimitiveValue( 3676 Local<DeclaredAccessorDescriptor> NewPrimitiveValue(
3674 Isolate* isolate, 3677 Isolate* isolate,
3675 DeclaredAccessorDescriptorDataType data_type, 3678 DeclaredAccessorDescriptorDataType data_type,
(...skipping 12 matching lines...) Expand all
3688 3691
3689 private: 3692 private:
3690 RawOperationDescriptor(); 3693 RawOperationDescriptor();
3691 }; 3694 };
3692 3695
3693 3696
3694 /** 3697 /**
3695 * A utility for determining the type of objects based on the template 3698 * A utility for determining the type of objects based on the template
3696 * they were constructed from. 3699 * they were constructed from.
3697 */ 3700 */
3698 class V8EXPORT TypeSwitch : public Data { 3701 class V8_EXPORT TypeSwitch : public Data {
3699 public: 3702 public:
3700 static Local<TypeSwitch> New(Handle<FunctionTemplate> type); 3703 static Local<TypeSwitch> New(Handle<FunctionTemplate> type);
3701 static Local<TypeSwitch> New(int argc, Handle<FunctionTemplate> types[]); 3704 static Local<TypeSwitch> New(int argc, Handle<FunctionTemplate> types[]);
3702 int match(Handle<Value> value); 3705 int match(Handle<Value> value);
3703 private: 3706 private:
3704 TypeSwitch(); 3707 TypeSwitch();
3705 }; 3708 };
3706 3709
3707 3710
3708 // --- Extensions --- 3711 // --- Extensions ---
3709 3712
3710 class V8EXPORT ExternalAsciiStringResourceImpl 3713 class V8_EXPORT ExternalAsciiStringResourceImpl
3711 : public String::ExternalAsciiStringResource { 3714 : public String::ExternalAsciiStringResource {
3712 public: 3715 public:
3713 ExternalAsciiStringResourceImpl() : data_(0), length_(0) {} 3716 ExternalAsciiStringResourceImpl() : data_(0), length_(0) {}
3714 ExternalAsciiStringResourceImpl(const char* data, size_t length) 3717 ExternalAsciiStringResourceImpl(const char* data, size_t length)
3715 : data_(data), length_(length) {} 3718 : data_(data), length_(length) {}
3716 const char* data() const { return data_; } 3719 const char* data() const { return data_; }
3717 size_t length() const { return length_; } 3720 size_t length() const { return length_; }
3718 3721
3719 private: 3722 private:
3720 const char* data_; 3723 const char* data_;
3721 size_t length_; 3724 size_t length_;
3722 }; 3725 };
3723 3726
3724 /** 3727 /**
3725 * Ignore 3728 * Ignore
3726 */ 3729 */
3727 class V8EXPORT Extension { // NOLINT 3730 class V8_EXPORT Extension { // NOLINT
3728 public: 3731 public:
3729 // Note that the strings passed into this constructor must live as long 3732 // Note that the strings passed into this constructor must live as long
3730 // as the Extension itself. 3733 // as the Extension itself.
3731 Extension(const char* name, 3734 Extension(const char* name,
3732 const char* source = 0, 3735 const char* source = 0,
3733 int dep_count = 0, 3736 int dep_count = 0,
3734 const char** deps = 0, 3737 const char** deps = 0,
3735 int source_length = -1); 3738 int source_length = -1);
3736 virtual ~Extension() { } 3739 virtual ~Extension() { }
3737 virtual v8::Handle<v8::FunctionTemplate> 3740 virtual v8::Handle<v8::FunctionTemplate>
(...skipping 17 matching lines...) Expand all
3755 int dep_count_; 3758 int dep_count_;
3756 const char** deps_; 3759 const char** deps_;
3757 bool auto_enable_; 3760 bool auto_enable_;
3758 3761
3759 // Disallow copying and assigning. 3762 // Disallow copying and assigning.
3760 Extension(const Extension&); 3763 Extension(const Extension&);
3761 void operator=(const Extension&); 3764 void operator=(const Extension&);
3762 }; 3765 };
3763 3766
3764 3767
3765 void V8EXPORT RegisterExtension(Extension* extension); 3768 void V8_EXPORT RegisterExtension(Extension* extension);
3766 3769
3767 3770
3768 /** 3771 /**
3769 * Ignore 3772 * Ignore
3770 */ 3773 */
3771 class V8EXPORT DeclareExtension { 3774 class V8_EXPORT DeclareExtension {
3772 public: 3775 public:
3773 V8_INLINE(DeclareExtension(Extension* extension)) { 3776 V8_INLINE(DeclareExtension(Extension* extension)) {
3774 RegisterExtension(extension); 3777 RegisterExtension(extension);
3775 } 3778 }
3776 }; 3779 };
3777 3780
3778 3781
3779 // --- Statics --- 3782 // --- Statics ---
3780 3783
3781 3784
3782 Handle<Primitive> V8EXPORT Undefined(); 3785 Handle<Primitive> V8_EXPORT Undefined();
3783 Handle<Primitive> V8EXPORT Null(); 3786 Handle<Primitive> V8_EXPORT Null();
3784 Handle<Boolean> V8EXPORT True(); 3787 Handle<Boolean> V8_EXPORT True();
3785 Handle<Boolean> V8EXPORT False(); 3788 Handle<Boolean> V8_EXPORT False();
3786 3789
3787 V8_INLINE(Handle<Primitive> Undefined(Isolate* isolate)); 3790 V8_INLINE(Handle<Primitive> Undefined(Isolate* isolate));
3788 V8_INLINE(Handle<Primitive> Null(Isolate* isolate)); 3791 V8_INLINE(Handle<Primitive> Null(Isolate* isolate));
3789 V8_INLINE(Handle<Boolean> True(Isolate* isolate)); 3792 V8_INLINE(Handle<Boolean> True(Isolate* isolate));
3790 V8_INLINE(Handle<Boolean> False(Isolate* isolate)); 3793 V8_INLINE(Handle<Boolean> False(Isolate* isolate));
3791 3794
3792 3795
3793 /** 3796 /**
3794 * A set of constraints that specifies the limits of the runtime's memory use. 3797 * A set of constraints that specifies the limits of the runtime's memory use.
3795 * You must set the heap size before initializing the VM - the size cannot be 3798 * You must set the heap size before initializing the VM - the size cannot be
3796 * adjusted after the VM is initialized. 3799 * adjusted after the VM is initialized.
3797 * 3800 *
3798 * If you are using threads then you should hold the V8::Locker lock while 3801 * If you are using threads then you should hold the V8::Locker lock while
3799 * setting the stack limit and you must set a non-default stack limit separately 3802 * setting the stack limit and you must set a non-default stack limit separately
3800 * for each thread. 3803 * for each thread.
3801 */ 3804 */
3802 class V8EXPORT ResourceConstraints { 3805 class V8_EXPORT ResourceConstraints {
3803 public: 3806 public:
3804 ResourceConstraints(); 3807 ResourceConstraints();
3805 int max_young_space_size() const { return max_young_space_size_; } 3808 int max_young_space_size() const { return max_young_space_size_; }
3806 void set_max_young_space_size(int value) { max_young_space_size_ = value; } 3809 void set_max_young_space_size(int value) { max_young_space_size_ = value; }
3807 int max_old_space_size() const { return max_old_space_size_; } 3810 int max_old_space_size() const { return max_old_space_size_; }
3808 void set_max_old_space_size(int value) { max_old_space_size_ = value; } 3811 void set_max_old_space_size(int value) { max_old_space_size_ = value; }
3809 int max_executable_size() { return max_executable_size_; } 3812 int max_executable_size() { return max_executable_size_; }
3810 void set_max_executable_size(int value) { max_executable_size_ = value; } 3813 void set_max_executable_size(int value) { max_executable_size_ = value; }
3811 uint32_t* stack_limit() const { return stack_limit_; } 3814 uint32_t* stack_limit() const { return stack_limit_; }
3812 // Sets an address beyond which the VM's stack may not grow. 3815 // Sets an address beyond which the VM's stack may not grow.
3813 void set_stack_limit(uint32_t* value) { stack_limit_ = value; } 3816 void set_stack_limit(uint32_t* value) { stack_limit_ = value; }
3814 private: 3817 private:
3815 int max_young_space_size_; 3818 int max_young_space_size_;
3816 int max_old_space_size_; 3819 int max_old_space_size_;
3817 int max_executable_size_; 3820 int max_executable_size_;
3818 uint32_t* stack_limit_; 3821 uint32_t* stack_limit_;
3819 }; 3822 };
3820 3823
3821 3824
3822 bool V8EXPORT SetResourceConstraints(ResourceConstraints* constraints); 3825 bool V8_EXPORT SetResourceConstraints(ResourceConstraints* constraints);
3823 3826
3824 3827
3825 // --- Exceptions --- 3828 // --- Exceptions ---
3826 3829
3827 3830
3828 typedef void (*FatalErrorCallback)(const char* location, const char* message); 3831 typedef void (*FatalErrorCallback)(const char* location, const char* message);
3829 3832
3830 3833
3831 typedef void (*MessageCallback)(Handle<Message> message, Handle<Value> error); 3834 typedef void (*MessageCallback)(Handle<Message> message, Handle<Value> error);
3832 3835
3833 3836
3834 /** 3837 /**
3835 * Schedules an exception to be thrown when returning to JavaScript. When an 3838 * Schedules an exception to be thrown when returning to JavaScript. When an
3836 * exception has been scheduled it is illegal to invoke any JavaScript 3839 * exception has been scheduled it is illegal to invoke any JavaScript
3837 * operation; the caller must return immediately and only after the exception 3840 * operation; the caller must return immediately and only after the exception
3838 * has been handled does it become legal to invoke JavaScript operations. 3841 * has been handled does it become legal to invoke JavaScript operations.
3839 */ 3842 */
3840 Handle<Value> V8EXPORT ThrowException(Handle<Value> exception); 3843 Handle<Value> V8_EXPORT ThrowException(Handle<Value> exception);
3841 3844
3842 /** 3845 /**
3843 * Create new error objects by calling the corresponding error object 3846 * Create new error objects by calling the corresponding error object
3844 * constructor with the message. 3847 * constructor with the message.
3845 */ 3848 */
3846 class V8EXPORT Exception { 3849 class V8_EXPORT Exception {
3847 public: 3850 public:
3848 static Local<Value> RangeError(Handle<String> message); 3851 static Local<Value> RangeError(Handle<String> message);
3849 static Local<Value> ReferenceError(Handle<String> message); 3852 static Local<Value> ReferenceError(Handle<String> message);
3850 static Local<Value> SyntaxError(Handle<String> message); 3853 static Local<Value> SyntaxError(Handle<String> message);
3851 static Local<Value> TypeError(Handle<String> message); 3854 static Local<Value> TypeError(Handle<String> message);
3852 static Local<Value> Error(Handle<String> message); 3855 static Local<Value> Error(Handle<String> message);
3853 }; 3856 };
3854 3857
3855 3858
3856 // --- Counters Callbacks --- 3859 // --- Counters Callbacks ---
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
3930 3933
3931 typedef void (*GCCallback)(); 3934 typedef void (*GCCallback)();
3932 3935
3933 3936
3934 /** 3937 /**
3935 * Collection of V8 heap information. 3938 * Collection of V8 heap information.
3936 * 3939 *
3937 * Instances of this class can be passed to v8::V8::HeapStatistics to 3940 * Instances of this class can be passed to v8::V8::HeapStatistics to
3938 * get heap statistics from V8. 3941 * get heap statistics from V8.
3939 */ 3942 */
3940 class V8EXPORT HeapStatistics { 3943 class V8_EXPORT HeapStatistics {
3941 public: 3944 public:
3942 HeapStatistics(); 3945 HeapStatistics();
3943 size_t total_heap_size() { return total_heap_size_; } 3946 size_t total_heap_size() { return total_heap_size_; }
3944 size_t total_heap_size_executable() { return total_heap_size_executable_; } 3947 size_t total_heap_size_executable() { return total_heap_size_executable_; }
3945 size_t total_physical_size() { return total_physical_size_; } 3948 size_t total_physical_size() { return total_physical_size_; }
3946 size_t used_heap_size() { return used_heap_size_; } 3949 size_t used_heap_size() { return used_heap_size_; }
3947 size_t heap_size_limit() { return heap_size_limit_; } 3950 size_t heap_size_limit() { return heap_size_limit_; }
3948 3951
3949 private: 3952 private:
3950 size_t total_heap_size_; 3953 size_t total_heap_size_;
(...skipping 11 matching lines...) Expand all
3962 3965
3963 /** 3966 /**
3964 * Isolate represents an isolated instance of the V8 engine. V8 3967 * Isolate represents an isolated instance of the V8 engine. V8
3965 * isolates have completely separate states. Objects from one isolate 3968 * isolates have completely separate states. Objects from one isolate
3966 * must not be used in other isolates. When V8 is initialized a 3969 * must not be used in other isolates. When V8 is initialized a
3967 * default isolate is implicitly created and entered. The embedder 3970 * default isolate is implicitly created and entered. The embedder
3968 * can create additional isolates and use them in parallel in multiple 3971 * can create additional isolates and use them in parallel in multiple
3969 * threads. An isolate can be entered by at most one thread at any 3972 * threads. An isolate can be entered by at most one thread at any
3970 * given time. The Locker/Unlocker API must be used to synchronize. 3973 * given time. The Locker/Unlocker API must be used to synchronize.
3971 */ 3974 */
3972 class V8EXPORT Isolate { 3975 class V8_EXPORT Isolate {
3973 public: 3976 public:
3974 /** 3977 /**
3975 * Stack-allocated class which sets the isolate for all operations 3978 * Stack-allocated class which sets the isolate for all operations
3976 * executed within a local scope. 3979 * executed within a local scope.
3977 */ 3980 */
3978 class V8EXPORT Scope { 3981 class V8_EXPORT Scope {
3979 public: 3982 public:
3980 explicit Scope(Isolate* isolate) : isolate_(isolate) { 3983 explicit Scope(Isolate* isolate) : isolate_(isolate) {
3981 isolate->Enter(); 3984 isolate->Enter();
3982 } 3985 }
3983 3986
3984 ~Scope() { isolate_->Exit(); } 3987 ~Scope() { isolate_->Exit(); }
3985 3988
3986 private: 3989 private:
3987 Isolate* const isolate_; 3990 Isolate* const isolate_;
3988 3991
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
4116 private: 4119 private:
4117 Isolate(); 4120 Isolate();
4118 Isolate(const Isolate&); 4121 Isolate(const Isolate&);
4119 ~Isolate(); 4122 ~Isolate();
4120 Isolate& operator=(const Isolate&); 4123 Isolate& operator=(const Isolate&);
4121 void* operator new(size_t size); 4124 void* operator new(size_t size);
4122 void operator delete(void*, size_t); 4125 void operator delete(void*, size_t);
4123 }; 4126 };
4124 4127
4125 4128
4126 class V8EXPORT StartupData { 4129 class V8_EXPORT StartupData {
4127 public: 4130 public:
4128 enum CompressionAlgorithm { 4131 enum CompressionAlgorithm {
4129 kUncompressed, 4132 kUncompressed,
4130 kBZip2 4133 kBZip2
4131 }; 4134 };
4132 4135
4133 const char* data; 4136 const char* data;
4134 int compressed_size; 4137 int compressed_size;
4135 int raw_size; 4138 int raw_size;
4136 }; 4139 };
4137 4140
4138 4141
4139 /** 4142 /**
4140 * A helper class for driving V8 startup data decompression. It is based on 4143 * A helper class for driving V8 startup data decompression. It is based on
4141 * "CompressedStartupData" API functions from the V8 class. It isn't mandatory 4144 * "CompressedStartupData" API functions from the V8 class. It isn't mandatory
4142 * for an embedder to use this class, instead, API functions can be used 4145 * for an embedder to use this class, instead, API functions can be used
4143 * directly. 4146 * directly.
4144 * 4147 *
4145 * For an example of the class usage, see the "shell.cc" sample application. 4148 * For an example of the class usage, see the "shell.cc" sample application.
4146 */ 4149 */
4147 class V8EXPORT StartupDataDecompressor { // NOLINT 4150 class V8_EXPORT StartupDataDecompressor { // NOLINT
4148 public: 4151 public:
4149 StartupDataDecompressor(); 4152 StartupDataDecompressor();
4150 virtual ~StartupDataDecompressor(); 4153 virtual ~StartupDataDecompressor();
4151 int Decompress(); 4154 int Decompress();
4152 4155
4153 protected: 4156 protected:
4154 virtual int DecompressData(char* raw_data, 4157 virtual int DecompressData(char* raw_data,
4155 int* raw_data_size, 4158 int* raw_data_size,
4156 const char* compressed_data, 4159 const char* compressed_data,
4157 int compressed_data_size) = 0; 4160 int compressed_data_size) = 0;
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
4281 * Callback function passed to SetJitCodeEventHandler. 4284 * Callback function passed to SetJitCodeEventHandler.
4282 * 4285 *
4283 * \param event code add, move or removal event. 4286 * \param event code add, move or removal event.
4284 */ 4287 */
4285 typedef void (*JitCodeEventHandler)(const JitCodeEvent* event); 4288 typedef void (*JitCodeEventHandler)(const JitCodeEvent* event);
4286 4289
4287 4290
4288 /** 4291 /**
4289 * Interface for iterating through all external resources in the heap. 4292 * Interface for iterating through all external resources in the heap.
4290 */ 4293 */
4291 class V8EXPORT ExternalResourceVisitor { // NOLINT 4294 class V8_EXPORT ExternalResourceVisitor { // NOLINT
4292 public: 4295 public:
4293 virtual ~ExternalResourceVisitor() {} 4296 virtual ~ExternalResourceVisitor() {}
4294 virtual void VisitExternalString(Handle<String> string) {} 4297 virtual void VisitExternalString(Handle<String> string) {}
4295 }; 4298 };
4296 4299
4297 4300
4298 /** 4301 /**
4299 * Interface for iterating through all the persistent handles in the heap. 4302 * Interface for iterating through all the persistent handles in the heap.
4300 */ 4303 */
4301 class V8EXPORT PersistentHandleVisitor { // NOLINT 4304 class V8_EXPORT PersistentHandleVisitor { // NOLINT
4302 public: 4305 public:
4303 virtual ~PersistentHandleVisitor() {} 4306 virtual ~PersistentHandleVisitor() {}
4304 virtual void VisitPersistentHandle(Persistent<Value>* value, 4307 virtual void VisitPersistentHandle(Persistent<Value>* value,
4305 uint16_t class_id) {} 4308 uint16_t class_id) {}
4306 }; 4309 };
4307 4310
4308 4311
4309 /** 4312 /**
4310 * Asserts that no action is performed that could cause a handle's value 4313 * Asserts that no action is performed that could cause a handle's value
4311 * to be modified. Useful when otherwise unsafe handle operations need to 4314 * to be modified. Useful when otherwise unsafe handle operations need to
4312 * be performed. 4315 * be performed.
4313 */ 4316 */
4314 class V8EXPORT AssertNoGCScope { 4317 class V8_EXPORT AssertNoGCScope {
4315 #ifndef DEBUG 4318 #ifndef DEBUG
4316 // TODO(yangguo): remove isolate argument. 4319 // TODO(yangguo): remove isolate argument.
4317 V8_INLINE(AssertNoGCScope(Isolate* isolate)) { } 4320 V8_INLINE(AssertNoGCScope(Isolate* isolate)) { }
4318 #else 4321 #else
4319 AssertNoGCScope(Isolate* isolate); 4322 AssertNoGCScope(Isolate* isolate);
4320 ~AssertNoGCScope(); 4323 ~AssertNoGCScope();
4321 private: 4324 private:
4322 void* disallow_heap_allocation_; 4325 void* disallow_heap_allocation_;
4323 #endif 4326 #endif
4324 }; 4327 };
4325 4328
4326 4329
4327 /** 4330 /**
4328 * Container class for static utility functions. 4331 * Container class for static utility functions.
4329 */ 4332 */
4330 class V8EXPORT V8 { 4333 class V8_EXPORT V8 {
4331 public: 4334 public:
4332 /** Set the callback to invoke in case of fatal errors. */ 4335 /** Set the callback to invoke in case of fatal errors. */
4333 static void SetFatalErrorHandler(FatalErrorCallback that); 4336 static void SetFatalErrorHandler(FatalErrorCallback that);
4334 4337
4335 /** 4338 /**
4336 * Set the callback to invoke to check if code generation from 4339 * Set the callback to invoke to check if code generation from
4337 * strings should be allowed. 4340 * strings should be allowed.
4338 */ 4341 */
4339 static void SetAllowCodeGenerationFromStringsCallback( 4342 static void SetAllowCodeGenerationFromStringsCallback(
4340 AllowCodeGenerationFromStringsCallback that); 4343 AllowCodeGenerationFromStringsCallback that);
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after
4788 template <class T> friend class Handle; 4791 template <class T> friend class Handle;
4789 template <class T> friend class Local; 4792 template <class T> friend class Local;
4790 template <class T> friend class Persistent; 4793 template <class T> friend class Persistent;
4791 friend class Context; 4794 friend class Context;
4792 }; 4795 };
4793 4796
4794 4797
4795 /** 4798 /**
4796 * An external exception handler. 4799 * An external exception handler.
4797 */ 4800 */
4798 class V8EXPORT TryCatch { 4801 class V8_EXPORT TryCatch {
4799 public: 4802 public:
4800 /** 4803 /**
4801 * Creates a new try/catch block and registers it with v8. Note that 4804 * Creates a new try/catch block and registers it with v8. Note that
4802 * all TryCatch blocks should be stack allocated because the memory 4805 * all TryCatch blocks should be stack allocated because the memory
4803 * location itself is compared against JavaScript try/catch blocks. 4806 * location itself is compared against JavaScript try/catch blocks.
4804 */ 4807 */
4805 TryCatch(); 4808 TryCatch();
4806 4809
4807 /** 4810 /**
4808 * Unregisters and deletes this try/catch block. 4811 * Unregisters and deletes this try/catch block.
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
4921 friend class v8::internal::Isolate; 4924 friend class v8::internal::Isolate;
4922 }; 4925 };
4923 4926
4924 4927
4925 // --- Context --- 4928 // --- Context ---
4926 4929
4927 4930
4928 /** 4931 /**
4929 * Ignore 4932 * Ignore
4930 */ 4933 */
4931 class V8EXPORT ExtensionConfiguration { 4934 class V8_EXPORT ExtensionConfiguration {
4932 public: 4935 public:
4933 ExtensionConfiguration(int name_count, const char* names[]) 4936 ExtensionConfiguration(int name_count, const char* names[])
4934 : name_count_(name_count), names_(names) { } 4937 : name_count_(name_count), names_(names) { }
4935 private: 4938 private:
4936 friend class ImplementationUtilities; 4939 friend class ImplementationUtilities;
4937 int name_count_; 4940 int name_count_;
4938 const char** names_; 4941 const char** names_;
4939 }; 4942 };
4940 4943
4941 4944
4942 /** 4945 /**
4943 * A sandboxed execution context with its own set of built-in objects 4946 * A sandboxed execution context with its own set of built-in objects
4944 * and functions. 4947 * and functions.
4945 */ 4948 */
4946 class V8EXPORT Context { 4949 class V8_EXPORT Context {
4947 public: 4950 public:
4948 /** 4951 /**
4949 * Returns the global proxy object or global object itself for 4952 * Returns the global proxy object or global object itself for
4950 * detached contexts. 4953 * detached contexts.
4951 * 4954 *
4952 * Global proxy object is a thin wrapper whose prototype points to 4955 * Global proxy object is a thin wrapper whose prototype points to
4953 * actual context's global object with the properties like Object, etc. 4956 * actual context's global object with the properties like Object, etc.
4954 * This is done that way for security reasons (for more details see 4957 * This is done that way for security reasons (for more details see
4955 * https://wiki.mozilla.org/Gecko:SplitWindow). 4958 * https://wiki.mozilla.org/Gecko:SplitWindow).
4956 * 4959 *
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
5221 * // V8 not locked. 5224 * // V8 not locked.
5222 * } 5225 * }
5223 * isolate->Enter(); 5226 * isolate->Enter();
5224 * // V8 locked again (2 levels). 5227 * // V8 locked again (2 levels).
5225 * } 5228 * }
5226 * // V8 still locked (1 level). 5229 * // V8 still locked (1 level).
5227 * } 5230 * }
5228 * // V8 Now no longer locked. 5231 * // V8 Now no longer locked.
5229 * \endcode 5232 * \endcode
5230 */ 5233 */
5231 class V8EXPORT Unlocker { 5234 class V8_EXPORT Unlocker {
5232 public: 5235 public:
5233 /** 5236 /**
5234 * Initialize Unlocker for a given Isolate. 5237 * Initialize Unlocker for a given Isolate.
5235 */ 5238 */
5236 V8_INLINE(explicit Unlocker(Isolate* isolate)) { Initialize(isolate); } 5239 V8_INLINE(explicit Unlocker(Isolate* isolate)) { Initialize(isolate); }
5237 5240
5238 /** Deprecated. Use Isolate version instead. */ 5241 /** Deprecated. Use Isolate version instead. */
5239 V8_DEPRECATED(Unlocker()); 5242 V8_DEPRECATED(Unlocker());
5240 5243
5241 ~Unlocker(); 5244 ~Unlocker();
5242 private: 5245 private:
5243 void Initialize(Isolate* isolate); 5246 void Initialize(Isolate* isolate);
5244 5247
5245 internal::Isolate* isolate_; 5248 internal::Isolate* isolate_;
5246 }; 5249 };
5247 5250
5248 5251
5249 class V8EXPORT Locker { 5252 class V8_EXPORT Locker {
5250 public: 5253 public:
5251 /** 5254 /**
5252 * Initialize Locker for a given Isolate. 5255 * Initialize Locker for a given Isolate.
5253 */ 5256 */
5254 V8_INLINE(explicit Locker(Isolate* isolate)) { Initialize(isolate); } 5257 V8_INLINE(explicit Locker(Isolate* isolate)) { Initialize(isolate); }
5255 5258
5256 /** Deprecated. Use Isolate version instead. */ 5259 /** Deprecated. Use Isolate version instead. */
5257 V8_DEPRECATED(Locker()); 5260 V8_DEPRECATED(Locker());
5258 5261
5259 ~Locker(); 5262 ~Locker();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
5300 5303
5301 /** 5304 /**
5302 * A struct for exporting HeapStats data from V8, using "push" model. 5305 * A struct for exporting HeapStats data from V8, using "push" model.
5303 */ 5306 */
5304 struct HeapStatsUpdate; 5307 struct HeapStatsUpdate;
5305 5308
5306 5309
5307 /** 5310 /**
5308 * An interface for exporting data from V8, using "push" model. 5311 * An interface for exporting data from V8, using "push" model.
5309 */ 5312 */
5310 class V8EXPORT OutputStream { // NOLINT 5313 class V8_EXPORT OutputStream { // NOLINT
5311 public: 5314 public:
5312 enum OutputEncoding { 5315 enum OutputEncoding {
5313 kAscii = 0 // 7-bit ASCII. 5316 kAscii = 0 // 7-bit ASCII.
5314 }; 5317 };
5315 enum WriteResult { 5318 enum WriteResult {
5316 kContinue = 0, 5319 kContinue = 0,
5317 kAbort = 1 5320 kAbort = 1
5318 }; 5321 };
5319 virtual ~OutputStream() {} 5322 virtual ~OutputStream() {}
5320 /** Notify about the end of stream. */ 5323 /** Notify about the end of stream. */
(...skipping 16 matching lines...) Expand all
5337 virtual WriteResult WriteHeapStatsChunk(HeapStatsUpdate* data, int count) { 5340 virtual WriteResult WriteHeapStatsChunk(HeapStatsUpdate* data, int count) {
5338 return kAbort; 5341 return kAbort;
5339 }; 5342 };
5340 }; 5343 };
5341 5344
5342 5345
5343 /** 5346 /**
5344 * An interface for reporting progress and controlling long-running 5347 * An interface for reporting progress and controlling long-running
5345 * activities. 5348 * activities.
5346 */ 5349 */
5347 class V8EXPORT ActivityControl { // NOLINT 5350 class V8_EXPORT ActivityControl { // NOLINT
5348 public: 5351 public:
5349 enum ControlOption { 5352 enum ControlOption {
5350 kContinue = 0, 5353 kContinue = 0,
5351 kAbort = 1 5354 kAbort = 1
5352 }; 5355 };
5353 virtual ~ActivityControl() {} 5356 virtual ~ActivityControl() {}
5354 /** 5357 /**
5355 * Notify about current progress. The activity can be stopped by 5358 * Notify about current progress. The activity can be stopped by
5356 * returning kAbort as the callback result. 5359 * returning kAbort as the callback result.
5357 */ 5360 */
(...skipping 1193 matching lines...) Expand 10 before | Expand all | Expand 10 after
6551 6554
6552 6555
6553 /** 6556 /**
6554 * \example process.cc 6557 * \example process.cc
6555 */ 6558 */
6556 6559
6557 6560
6558 } // namespace v8 6561 } // namespace v8
6559 6562
6560 6563
6561 #undef V8EXPORT
6562 #undef TYPE_CHECK 6564 #undef TYPE_CHECK
6563 6565
6564 6566
6565 #endif // V8_H_ 6567 #endif // V8_H_
OLDNEW
« no previous file with comments | « no previous file | include/v8-debug.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698