| OLD | NEW |
| 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 Loading... |
| 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 | |
| 46 #ifdef _WIN32 | 43 #ifdef _WIN32 |
| 47 | 44 |
| 48 // Setup for Windows DLL export/import. When building the V8 DLL the | 45 // Setup for Windows DLL export/import. When building the V8 DLL the |
| 49 // BUILDING_V8_SHARED needs to be defined. When building a program which uses | 46 // BUILDING_V8_SHARED needs to be defined. When building a program which uses |
| 50 // the V8 DLL USING_V8_SHARED needs to be defined. When either building the V8 | 47 // the V8 DLL USING_V8_SHARED needs to be defined. When either building the V8 |
| 51 // static library or building a program which uses the V8 static library neither | 48 // static library or building a program which uses the V8 static library neither |
| 52 // BUILDING_V8_SHARED nor USING_V8_SHARED should be defined. | 49 // BUILDING_V8_SHARED nor USING_V8_SHARED should be defined. |
| 53 #if defined(BUILDING_V8_SHARED) && defined(USING_V8_SHARED) | 50 #if defined(BUILDING_V8_SHARED) && defined(USING_V8_SHARED) |
| 54 #error both BUILDING_V8_SHARED and USING_V8_SHARED are set - please check the\ | 51 #error both BUILDING_V8_SHARED and USING_V8_SHARED are set - please check the\ |
| 55 build configuration to ensure that at most one of these is set | 52 build configuration to ensure that at most one of these is set |
| 56 #endif | 53 #endif |
| 57 | 54 |
| 58 #ifdef BUILDING_V8_SHARED | 55 #ifdef BUILDING_V8_SHARED |
| 59 #define V8_EXPORT __declspec(dllexport) | 56 #define V8EXPORT __declspec(dllexport) |
| 60 #elif USING_V8_SHARED | 57 #elif USING_V8_SHARED |
| 61 #define V8_EXPORT __declspec(dllimport) | 58 #define V8EXPORT __declspec(dllimport) |
| 62 #else | 59 #else |
| 63 #define V8_EXPORT | 60 #define V8EXPORT |
| 64 #endif // BUILDING_V8_SHARED | 61 #endif // BUILDING_V8_SHARED |
| 65 | 62 |
| 66 #else // _WIN32 | 63 #else // _WIN32 |
| 67 | 64 |
| 68 // Setup for Linux shared library export. | 65 // Setup for Linux shared library export. |
| 69 #if defined(__GNUC__) && ((__GNUC__ >= 4) || \ | 66 #if defined(__GNUC__) && ((__GNUC__ >= 4) || \ |
| 70 (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(V8_SHARED) | 67 (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(V8_SHARED) |
| 71 #ifdef BUILDING_V8_SHARED | 68 #ifdef BUILDING_V8_SHARED |
| 72 #define V8_EXPORT __attribute__ ((visibility("default"))) | 69 #define V8EXPORT __attribute__ ((visibility("default"))) |
| 73 #else | 70 #else |
| 74 #define V8_EXPORT | 71 #define V8EXPORT |
| 75 #endif | 72 #endif |
| 76 #else | 73 #else |
| 77 #define V8_EXPORT | 74 #define V8EXPORT |
| 78 #endif | 75 #endif |
| 79 | 76 |
| 80 #endif // _WIN32 | 77 #endif // _WIN32 |
| 81 | 78 |
| 82 #if defined(__GNUC__) && !defined(DEBUG) | 79 #if defined(__GNUC__) && !defined(DEBUG) |
| 83 #define V8_INLINE(declarator) inline __attribute__((always_inline)) declarator | 80 #define V8_INLINE(declarator) inline __attribute__((always_inline)) declarator |
| 84 #elif defined(_MSC_VER) && !defined(DEBUG) | 81 #elif defined(_MSC_VER) && !defined(DEBUG) |
| 85 #define V8_INLINE(declarator) __forceinline declarator | 82 #define V8_INLINE(declarator) __forceinline declarator |
| 86 #else | 83 #else |
| 87 #define V8_INLINE(declarator) inline declarator | 84 #define V8_INLINE(declarator) inline declarator |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 381 friend class HandleScope; | 378 friend class HandleScope; |
| 382 | 379 |
| 383 #ifndef V8_USE_UNSAFE_HANDLES | 380 #ifndef V8_USE_UNSAFE_HANDLES |
| 384 V8_INLINE(static Handle<T> New(Isolate* isolate, T* that)); | 381 V8_INLINE(static Handle<T> New(Isolate* isolate, T* that)); |
| 385 #endif | 382 #endif |
| 386 | 383 |
| 387 T* val_; | 384 T* val_; |
| 388 }; | 385 }; |
| 389 | 386 |
| 390 | 387 |
| 391 // A value which will never be returned by Local::Eternalize | |
| 392 // Useful for static initialization | |
| 393 const int kUninitializedEternalIndex = -1; | |
| 394 | |
| 395 | |
| 396 /** | 388 /** |
| 397 * A light-weight stack-allocated object handle. All operations | 389 * A light-weight stack-allocated object handle. All operations |
| 398 * that return objects from within v8 return them in local handles. They | 390 * that return objects from within v8 return them in local handles. They |
| 399 * are created within HandleScopes, and all local handles allocated within a | 391 * are created within HandleScopes, and all local handles allocated within a |
| 400 * handle scope are destroyed when the handle scope is destroyed. Hence it | 392 * handle scope are destroyed when the handle scope is destroyed. Hence it |
| 401 * is not necessary to explicitly deallocate local handles. | 393 * is not necessary to explicitly deallocate local handles. |
| 402 */ | 394 */ |
| 403 // TODO(dcarney): deprecate entire class | 395 // TODO(dcarney): deprecate entire class |
| 404 template <class T> class Local : public Handle<T> { | 396 template <class T> class Local : public Handle<T> { |
| 405 public: | 397 public: |
| (...skipping 25 matching lines...) Expand all Loading... |
| 431 template <class S> V8_INLINE(Local(Handle<S> that)) | 423 template <class S> V8_INLINE(Local(Handle<S> that)) |
| 432 : Handle<T>(reinterpret_cast<T*>(*that)) { | 424 : Handle<T>(reinterpret_cast<T*>(*that)) { |
| 433 TYPE_CHECK(T, S); | 425 TYPE_CHECK(T, S); |
| 434 } | 426 } |
| 435 #endif | 427 #endif |
| 436 | 428 |
| 437 template <class S> V8_INLINE(Local<S> As()) { | 429 template <class S> V8_INLINE(Local<S> As()) { |
| 438 return Local<S>::Cast(*this); | 430 return Local<S>::Cast(*this); |
| 439 } | 431 } |
| 440 | 432 |
| 441 // Keep this Local alive for the lifetime of the Isolate. | |
| 442 // It remains retrievable via the returned index, | |
| 443 V8_INLINE(int Eternalize(Isolate* isolate)); | |
| 444 V8_INLINE(static Local<T> GetEternal(Isolate* isolate, int index)); | |
| 445 | |
| 446 /** | 433 /** |
| 447 * Create a local handle for the content of another handle. | 434 * Create a local handle for the content of another handle. |
| 448 * The referee is kept alive by the local handle even when | 435 * The referee is kept alive by the local handle even when |
| 449 * the original handle is destroyed/disposed. | 436 * the original handle is destroyed/disposed. |
| 450 */ | 437 */ |
| 451 V8_INLINE(static Local<T> New(Handle<T> that)); | 438 V8_INLINE(static Local<T> New(Handle<T> that)); |
| 452 V8_INLINE(static Local<T> New(Isolate* isolate, Handle<T> that)); | 439 V8_INLINE(static Local<T> New(Isolate* isolate, Handle<T> that)); |
| 453 #ifndef V8_USE_UNSAFE_HANDLES | 440 #ifndef V8_USE_UNSAFE_HANDLES |
| 454 // TODO(dcarney): remove before cutover | 441 // TODO(dcarney): remove before cutover |
| 455 V8_INLINE(static Local<T> New(Isolate* isolate, const Persistent<T>& that)); | 442 V8_INLINE(static Local<T> New(Isolate* isolate, const Persistent<T>& that)); |
| (...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 807 * deleted or another handle scope is created. If there is already a | 794 * deleted or another handle scope is created. If there is already a |
| 808 * handle scope and a new one is created, all allocations will take | 795 * handle scope and a new one is created, all allocations will take |
| 809 * place in the new handle scope until it is deleted. After that, | 796 * place in the new handle scope until it is deleted. After that, |
| 810 * new handles will again be allocated in the original handle scope. | 797 * new handles will again be allocated in the original handle scope. |
| 811 * | 798 * |
| 812 * After the handle scope of a local handle has been deleted the | 799 * After the handle scope of a local handle has been deleted the |
| 813 * garbage collector will no longer track the object stored in the | 800 * garbage collector will no longer track the object stored in the |
| 814 * handle and may deallocate it. The behavior of accessing a handle | 801 * handle and may deallocate it. The behavior of accessing a handle |
| 815 * for which the handle scope has been deleted is undefined. | 802 * for which the handle scope has been deleted is undefined. |
| 816 */ | 803 */ |
| 817 class V8_EXPORT HandleScope { | 804 class V8EXPORT HandleScope { |
| 818 public: | 805 public: |
| 819 // TODO(svenpanne) Deprecate me when Chrome is fixed! | 806 // TODO(svenpanne) Deprecate me when Chrome is fixed! |
| 820 HandleScope(); | 807 HandleScope(); |
| 821 | 808 |
| 822 HandleScope(Isolate* isolate); | 809 HandleScope(Isolate* isolate); |
| 823 | 810 |
| 824 ~HandleScope(); | 811 ~HandleScope(); |
| 825 | 812 |
| 826 /** | 813 /** |
| 827 * Closes the handle scope and returns the value as a handle in the | 814 * Closes the handle scope and returns the value as a handle in the |
| (...skipping 18 matching lines...) Expand all Loading... |
| 846 private: | 833 private: |
| 847 // Make it hard to create heap-allocated or illegal handle scopes by | 834 // Make it hard to create heap-allocated or illegal handle scopes by |
| 848 // disallowing certain operations. | 835 // disallowing certain operations. |
| 849 HandleScope(const HandleScope&); | 836 HandleScope(const HandleScope&); |
| 850 void operator=(const HandleScope&); | 837 void operator=(const HandleScope&); |
| 851 void* operator new(size_t size); | 838 void* operator new(size_t size); |
| 852 void operator delete(void*, size_t); | 839 void operator delete(void*, size_t); |
| 853 | 840 |
| 854 // This Data class is accessible internally as HandleScopeData through a | 841 // This Data class is accessible internally as HandleScopeData through a |
| 855 // typedef in the ImplementationUtilities class. | 842 // typedef in the ImplementationUtilities class. |
| 856 class V8_EXPORT Data { | 843 class V8EXPORT Data { |
| 857 public: | 844 public: |
| 858 internal::Object** next; | 845 internal::Object** next; |
| 859 internal::Object** limit; | 846 internal::Object** limit; |
| 860 int level; | 847 int level; |
| 861 V8_INLINE(void Initialize()) { | 848 V8_INLINE(void Initialize()) { |
| 862 next = limit = NULL; | 849 next = limit = NULL; |
| 863 level = 0; | 850 level = 0; |
| 864 } | 851 } |
| 865 }; | 852 }; |
| 866 | 853 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 879 friend class ImplementationUtilities; | 866 friend class ImplementationUtilities; |
| 880 }; | 867 }; |
| 881 | 868 |
| 882 | 869 |
| 883 // --- Special objects --- | 870 // --- Special objects --- |
| 884 | 871 |
| 885 | 872 |
| 886 /** | 873 /** |
| 887 * The superclass of values and API object templates. | 874 * The superclass of values and API object templates. |
| 888 */ | 875 */ |
| 889 class V8_EXPORT Data { | 876 class V8EXPORT Data { |
| 890 private: | 877 private: |
| 891 Data(); | 878 Data(); |
| 892 }; | 879 }; |
| 893 | 880 |
| 894 | 881 |
| 895 /** | 882 /** |
| 896 * Pre-compilation data that can be associated with a script. This | 883 * Pre-compilation data that can be associated with a script. This |
| 897 * data can be calculated for a script in advance of actually | 884 * data can be calculated for a script in advance of actually |
| 898 * compiling it, and can be stored between compilations. When script | 885 * compiling it, and can be stored between compilations. When script |
| 899 * data is given to the compile method compilation will be faster. | 886 * data is given to the compile method compilation will be faster. |
| 900 */ | 887 */ |
| 901 class V8_EXPORT ScriptData { // NOLINT | 888 class V8EXPORT ScriptData { // NOLINT |
| 902 public: | 889 public: |
| 903 virtual ~ScriptData() { } | 890 virtual ~ScriptData() { } |
| 904 | 891 |
| 905 /** | 892 /** |
| 906 * Pre-compiles the specified script (context-independent). | 893 * Pre-compiles the specified script (context-independent). |
| 907 * | 894 * |
| 908 * \param input Pointer to UTF-8 script source code. | 895 * \param input Pointer to UTF-8 script source code. |
| 909 * \param length Length of UTF-8 script source code. | 896 * \param length Length of UTF-8 script source code. |
| 910 */ | 897 */ |
| 911 static ScriptData* PreCompile(const char* input, int length); | 898 static ScriptData* PreCompile(const char* input, int length); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 969 Handle<Value> resource_name_; | 956 Handle<Value> resource_name_; |
| 970 Handle<Integer> resource_line_offset_; | 957 Handle<Integer> resource_line_offset_; |
| 971 Handle<Integer> resource_column_offset_; | 958 Handle<Integer> resource_column_offset_; |
| 972 Handle<Boolean> resource_is_shared_cross_origin_; | 959 Handle<Boolean> resource_is_shared_cross_origin_; |
| 973 }; | 960 }; |
| 974 | 961 |
| 975 | 962 |
| 976 /** | 963 /** |
| 977 * A compiled JavaScript script. | 964 * A compiled JavaScript script. |
| 978 */ | 965 */ |
| 979 class V8_EXPORT Script { | 966 class V8EXPORT Script { |
| 980 public: | 967 public: |
| 981 /** | 968 /** |
| 982 * Compiles the specified script (context-independent). | 969 * Compiles the specified script (context-independent). |
| 983 * | 970 * |
| 984 * \param source Script source code. | 971 * \param source Script source code. |
| 985 * \param origin Script origin, owned by caller, no references are kept | 972 * \param origin Script origin, owned by caller, no references are kept |
| 986 * when New() returns | 973 * when New() returns |
| 987 * \param pre_data Pre-parsing data, as obtained by ScriptData::PreCompile() | 974 * \param pre_data Pre-parsing data, as obtained by ScriptData::PreCompile() |
| 988 * using pre_data speeds compilation if it's done multiple times. | 975 * using pre_data speeds compilation if it's done multiple times. |
| 989 * Owned by caller, no references are kept when New() returns. | 976 * Owned by caller, no references are kept when New() returns. |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1087 */ | 1074 */ |
| 1088 int GetLineNumber(int code_pos); | 1075 int GetLineNumber(int code_pos); |
| 1089 | 1076 |
| 1090 static const int kNoScriptId = 0; | 1077 static const int kNoScriptId = 0; |
| 1091 }; | 1078 }; |
| 1092 | 1079 |
| 1093 | 1080 |
| 1094 /** | 1081 /** |
| 1095 * An error message. | 1082 * An error message. |
| 1096 */ | 1083 */ |
| 1097 class V8_EXPORT Message { | 1084 class V8EXPORT Message { |
| 1098 public: | 1085 public: |
| 1099 Local<String> Get() const; | 1086 Local<String> Get() const; |
| 1100 Local<String> GetSourceLine() const; | 1087 Local<String> GetSourceLine() const; |
| 1101 | 1088 |
| 1102 /** | 1089 /** |
| 1103 * Returns the resource name for the script from where the function causing | 1090 * Returns the resource name for the script from where the function causing |
| 1104 * the error originates. | 1091 * the error originates. |
| 1105 */ | 1092 */ |
| 1106 Handle<Value> GetScriptResourceName() const; | 1093 Handle<Value> GetScriptResourceName() const; |
| 1107 | 1094 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1159 static const int kNoLineNumberInfo = 0; | 1146 static const int kNoLineNumberInfo = 0; |
| 1160 static const int kNoColumnInfo = 0; | 1147 static const int kNoColumnInfo = 0; |
| 1161 }; | 1148 }; |
| 1162 | 1149 |
| 1163 | 1150 |
| 1164 /** | 1151 /** |
| 1165 * Representation of a JavaScript stack trace. The information collected is a | 1152 * Representation of a JavaScript stack trace. The information collected is a |
| 1166 * snapshot of the execution stack and the information remains valid after | 1153 * snapshot of the execution stack and the information remains valid after |
| 1167 * execution continues. | 1154 * execution continues. |
| 1168 */ | 1155 */ |
| 1169 class V8_EXPORT StackTrace { | 1156 class V8EXPORT StackTrace { |
| 1170 public: | 1157 public: |
| 1171 /** | 1158 /** |
| 1172 * Flags that determine what information is placed captured for each | 1159 * Flags that determine what information is placed captured for each |
| 1173 * StackFrame when grabbing the current stack trace. | 1160 * StackFrame when grabbing the current stack trace. |
| 1174 */ | 1161 */ |
| 1175 enum StackTraceOptions { | 1162 enum StackTraceOptions { |
| 1176 kLineNumber = 1, | 1163 kLineNumber = 1, |
| 1177 kColumnOffset = 1 << 1 | kLineNumber, | 1164 kColumnOffset = 1 << 1 | kLineNumber, |
| 1178 kScriptName = 1 << 2, | 1165 kScriptName = 1 << 2, |
| 1179 kFunctionName = 1 << 3, | 1166 kFunctionName = 1 << 3, |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1208 */ | 1195 */ |
| 1209 static Local<StackTrace> CurrentStackTrace( | 1196 static Local<StackTrace> CurrentStackTrace( |
| 1210 int frame_limit, | 1197 int frame_limit, |
| 1211 StackTraceOptions options = kOverview); | 1198 StackTraceOptions options = kOverview); |
| 1212 }; | 1199 }; |
| 1213 | 1200 |
| 1214 | 1201 |
| 1215 /** | 1202 /** |
| 1216 * A single JavaScript stack frame. | 1203 * A single JavaScript stack frame. |
| 1217 */ | 1204 */ |
| 1218 class V8_EXPORT StackFrame { | 1205 class V8EXPORT StackFrame { |
| 1219 public: | 1206 public: |
| 1220 /** | 1207 /** |
| 1221 * Returns the number, 1-based, of the line for the associate function call. | 1208 * Returns the number, 1-based, of the line for the associate function call. |
| 1222 * This method will return Message::kNoLineNumberInfo if it is unable to | 1209 * This method will return Message::kNoLineNumberInfo if it is unable to |
| 1223 * retrieve the line number, or if kLineNumber was not passed as an option | 1210 * retrieve the line number, or if kLineNumber was not passed as an option |
| 1224 * when capturing the StackTrace. | 1211 * when capturing the StackTrace. |
| 1225 */ | 1212 */ |
| 1226 int GetLineNumber() const; | 1213 int GetLineNumber() const; |
| 1227 | 1214 |
| 1228 /** | 1215 /** |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1260 bool IsEval() const; | 1247 bool IsEval() const; |
| 1261 | 1248 |
| 1262 /** | 1249 /** |
| 1263 * Returns whether or not the associated function is called as a | 1250 * Returns whether or not the associated function is called as a |
| 1264 * constructor via "new". | 1251 * constructor via "new". |
| 1265 */ | 1252 */ |
| 1266 bool IsConstructor() const; | 1253 bool IsConstructor() const; |
| 1267 }; | 1254 }; |
| 1268 | 1255 |
| 1269 | 1256 |
| 1270 /** | |
| 1271 * A JSON Parser. | |
| 1272 */ | |
| 1273 class V8_EXPORT JSON { | |
| 1274 public: | |
| 1275 /** | |
| 1276 * Tries to parse the string |json_string| and returns it as object if | |
| 1277 * successful. | |
| 1278 * | |
| 1279 * \param json_string The string to parse. | |
| 1280 * \return The corresponding object if successfully parsed. | |
| 1281 */ | |
| 1282 static Local<Object> Parse(Local<String> json_string); | |
| 1283 }; | |
| 1284 | |
| 1285 | |
| 1286 // --- Value --- | 1257 // --- Value --- |
| 1287 | 1258 |
| 1288 | 1259 |
| 1289 /** | 1260 /** |
| 1290 * The superclass of all JavaScript values and objects. | 1261 * The superclass of all JavaScript values and objects. |
| 1291 */ | 1262 */ |
| 1292 class V8_EXPORT Value : public Data { | 1263 class V8EXPORT Value : public Data { |
| 1293 public: | 1264 public: |
| 1294 /** | 1265 /** |
| 1295 * Returns true if this value is the undefined value. See ECMA-262 | 1266 * Returns true if this value is the undefined value. See ECMA-262 |
| 1296 * 4.3.10. | 1267 * 4.3.10. |
| 1297 */ | 1268 */ |
| 1298 V8_INLINE(bool IsUndefined() const); | 1269 V8_INLINE(bool IsUndefined() const); |
| 1299 | 1270 |
| 1300 /** | 1271 /** |
| 1301 * Returns true if this value is the null value. See ECMA-262 | 1272 * Returns true if this value is the null value. See ECMA-262 |
| 1302 * 4.3.11. | 1273 * 4.3.11. |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1513 V8_INLINE(bool QuickIsString() const); | 1484 V8_INLINE(bool QuickIsString() const); |
| 1514 bool FullIsUndefined() const; | 1485 bool FullIsUndefined() const; |
| 1515 bool FullIsNull() const; | 1486 bool FullIsNull() const; |
| 1516 bool FullIsString() const; | 1487 bool FullIsString() const; |
| 1517 }; | 1488 }; |
| 1518 | 1489 |
| 1519 | 1490 |
| 1520 /** | 1491 /** |
| 1521 * The superclass of primitive values. See ECMA-262 4.3.2. | 1492 * The superclass of primitive values. See ECMA-262 4.3.2. |
| 1522 */ | 1493 */ |
| 1523 class V8_EXPORT Primitive : public Value { }; | 1494 class V8EXPORT Primitive : public Value { }; |
| 1524 | 1495 |
| 1525 | 1496 |
| 1526 /** | 1497 /** |
| 1527 * A primitive boolean value (ECMA-262, 4.3.14). Either the true | 1498 * A primitive boolean value (ECMA-262, 4.3.14). Either the true |
| 1528 * or false value. | 1499 * or false value. |
| 1529 */ | 1500 */ |
| 1530 class V8_EXPORT Boolean : public Primitive { | 1501 class V8EXPORT Boolean : public Primitive { |
| 1531 public: | 1502 public: |
| 1532 bool Value() const; | 1503 bool Value() const; |
| 1533 V8_INLINE(static Handle<Boolean> New(bool value)); | 1504 V8_INLINE(static Handle<Boolean> New(bool value)); |
| 1534 }; | 1505 }; |
| 1535 | 1506 |
| 1536 | 1507 |
| 1537 /** | 1508 /** |
| 1538 * A JavaScript string value (ECMA-262, 4.3.17). | 1509 * A JavaScript string value (ECMA-262, 4.3.17). |
| 1539 */ | 1510 */ |
| 1540 class V8_EXPORT String : public Primitive { | 1511 class V8EXPORT String : public Primitive { |
| 1541 public: | 1512 public: |
| 1542 enum Encoding { | 1513 enum Encoding { |
| 1543 UNKNOWN_ENCODING = 0x1, | 1514 UNKNOWN_ENCODING = 0x1, |
| 1544 TWO_BYTE_ENCODING = 0x0, | 1515 TWO_BYTE_ENCODING = 0x0, |
| 1545 ASCII_ENCODING = 0x4, | 1516 ASCII_ENCODING = 0x4, |
| 1546 ONE_BYTE_ENCODING = 0x4 | 1517 ONE_BYTE_ENCODING = 0x4 |
| 1547 }; | 1518 }; |
| 1548 /** | 1519 /** |
| 1549 * Returns the number of characters in this string. | 1520 * Returns the number of characters in this string. |
| 1550 */ | 1521 */ |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1636 /** | 1607 /** |
| 1637 * Returns true if the string is external | 1608 * Returns true if the string is external |
| 1638 */ | 1609 */ |
| 1639 bool IsExternal() const; | 1610 bool IsExternal() const; |
| 1640 | 1611 |
| 1641 /** | 1612 /** |
| 1642 * Returns true if the string is both external and ASCII | 1613 * Returns true if the string is both external and ASCII |
| 1643 */ | 1614 */ |
| 1644 bool IsExternalAscii() const; | 1615 bool IsExternalAscii() const; |
| 1645 | 1616 |
| 1646 class V8_EXPORT ExternalStringResourceBase { // NOLINT | 1617 class V8EXPORT ExternalStringResourceBase { // NOLINT |
| 1647 public: | 1618 public: |
| 1648 virtual ~ExternalStringResourceBase() {} | 1619 virtual ~ExternalStringResourceBase() {} |
| 1649 | 1620 |
| 1650 protected: | 1621 protected: |
| 1651 ExternalStringResourceBase() {} | 1622 ExternalStringResourceBase() {} |
| 1652 | 1623 |
| 1653 /** | 1624 /** |
| 1654 * Internally V8 will call this Dispose method when the external string | 1625 * Internally V8 will call this Dispose method when the external string |
| 1655 * resource is no longer needed. The default implementation will use the | 1626 * resource is no longer needed. The default implementation will use the |
| 1656 * delete operator. This method can be overridden in subclasses to | 1627 * delete operator. This method can be overridden in subclasses to |
| 1657 * control how allocated external string resources are disposed. | 1628 * control how allocated external string resources are disposed. |
| 1658 */ | 1629 */ |
| 1659 virtual void Dispose() { delete this; } | 1630 virtual void Dispose() { delete this; } |
| 1660 | 1631 |
| 1661 private: | 1632 private: |
| 1662 // Disallow copying and assigning. | 1633 // Disallow copying and assigning. |
| 1663 ExternalStringResourceBase(const ExternalStringResourceBase&); | 1634 ExternalStringResourceBase(const ExternalStringResourceBase&); |
| 1664 void operator=(const ExternalStringResourceBase&); | 1635 void operator=(const ExternalStringResourceBase&); |
| 1665 | 1636 |
| 1666 friend class v8::internal::Heap; | 1637 friend class v8::internal::Heap; |
| 1667 }; | 1638 }; |
| 1668 | 1639 |
| 1669 /** | 1640 /** |
| 1670 * An ExternalStringResource is a wrapper around a two-byte string | 1641 * An ExternalStringResource is a wrapper around a two-byte string |
| 1671 * buffer that resides outside V8's heap. Implement an | 1642 * buffer that resides outside V8's heap. Implement an |
| 1672 * ExternalStringResource to manage the life cycle of the underlying | 1643 * ExternalStringResource to manage the life cycle of the underlying |
| 1673 * buffer. Note that the string data must be immutable. | 1644 * buffer. Note that the string data must be immutable. |
| 1674 */ | 1645 */ |
| 1675 class V8_EXPORT ExternalStringResource | 1646 class V8EXPORT ExternalStringResource |
| 1676 : public ExternalStringResourceBase { | 1647 : public ExternalStringResourceBase { |
| 1677 public: | 1648 public: |
| 1678 /** | 1649 /** |
| 1679 * Override the destructor to manage the life cycle of the underlying | 1650 * Override the destructor to manage the life cycle of the underlying |
| 1680 * buffer. | 1651 * buffer. |
| 1681 */ | 1652 */ |
| 1682 virtual ~ExternalStringResource() {} | 1653 virtual ~ExternalStringResource() {} |
| 1683 | 1654 |
| 1684 /** | 1655 /** |
| 1685 * The string data from the underlying buffer. | 1656 * The string data from the underlying buffer. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1699 * An ExternalAsciiStringResource is a wrapper around an ASCII | 1670 * An ExternalAsciiStringResource is a wrapper around an ASCII |
| 1700 * string buffer that resides outside V8's heap. Implement an | 1671 * string buffer that resides outside V8's heap. Implement an |
| 1701 * ExternalAsciiStringResource to manage the life cycle of the | 1672 * ExternalAsciiStringResource to manage the life cycle of the |
| 1702 * underlying buffer. Note that the string data must be immutable | 1673 * underlying buffer. Note that the string data must be immutable |
| 1703 * and that the data must be strict (7-bit) ASCII, not Latin-1 or | 1674 * and that the data must be strict (7-bit) ASCII, not Latin-1 or |
| 1704 * UTF-8, which would require special treatment internally in the | 1675 * UTF-8, which would require special treatment internally in the |
| 1705 * engine and, in the case of UTF-8, do not allow efficient indexing. | 1676 * engine and, in the case of UTF-8, do not allow efficient indexing. |
| 1706 * Use String::New or convert to 16 bit data for non-ASCII. | 1677 * Use String::New or convert to 16 bit data for non-ASCII. |
| 1707 */ | 1678 */ |
| 1708 | 1679 |
| 1709 class V8_EXPORT ExternalAsciiStringResource | 1680 class V8EXPORT ExternalAsciiStringResource |
| 1710 : public ExternalStringResourceBase { | 1681 : public ExternalStringResourceBase { |
| 1711 public: | 1682 public: |
| 1712 /** | 1683 /** |
| 1713 * Override the destructor to manage the life cycle of the underlying | 1684 * Override the destructor to manage the life cycle of the underlying |
| 1714 * buffer. | 1685 * buffer. |
| 1715 */ | 1686 */ |
| 1716 virtual ~ExternalAsciiStringResource() {} | 1687 virtual ~ExternalAsciiStringResource() {} |
| 1717 /** The string data from the underlying buffer.*/ | 1688 /** The string data from the underlying buffer.*/ |
| 1718 virtual const char* data() const = 0; | 1689 virtual const char* data() const = 0; |
| 1719 /** The number of ASCII characters in the string.*/ | 1690 /** The number of ASCII characters in the string.*/ |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1852 V8_INLINE(static Local<String> NewUndetectable( | 1823 V8_INLINE(static Local<String> NewUndetectable( |
| 1853 const uint16_t* data, int length = -1)); | 1824 const uint16_t* data, int length = -1)); |
| 1854 | 1825 |
| 1855 /** | 1826 /** |
| 1856 * Converts an object to a UTF-8-encoded character array. Useful if | 1827 * Converts an object to a UTF-8-encoded character array. Useful if |
| 1857 * you want to print the object. If conversion to a string fails | 1828 * you want to print the object. If conversion to a string fails |
| 1858 * (e.g. due to an exception in the toString() method of the object) | 1829 * (e.g. due to an exception in the toString() method of the object) |
| 1859 * then the length() method returns 0 and the * operator returns | 1830 * then the length() method returns 0 and the * operator returns |
| 1860 * NULL. | 1831 * NULL. |
| 1861 */ | 1832 */ |
| 1862 class V8_EXPORT Utf8Value { | 1833 class V8EXPORT Utf8Value { |
| 1863 public: | 1834 public: |
| 1864 explicit Utf8Value(Handle<v8::Value> obj); | 1835 explicit Utf8Value(Handle<v8::Value> obj); |
| 1865 ~Utf8Value(); | 1836 ~Utf8Value(); |
| 1866 char* operator*() { return str_; } | 1837 char* operator*() { return str_; } |
| 1867 const char* operator*() const { return str_; } | 1838 const char* operator*() const { return str_; } |
| 1868 int length() const { return length_; } | 1839 int length() const { return length_; } |
| 1869 private: | 1840 private: |
| 1870 char* str_; | 1841 char* str_; |
| 1871 int length_; | 1842 int length_; |
| 1872 | 1843 |
| 1873 // Disallow copying and assigning. | 1844 // Disallow copying and assigning. |
| 1874 Utf8Value(const Utf8Value&); | 1845 Utf8Value(const Utf8Value&); |
| 1875 void operator=(const Utf8Value&); | 1846 void operator=(const Utf8Value&); |
| 1876 }; | 1847 }; |
| 1877 | 1848 |
| 1878 /** | 1849 /** |
| 1879 * Converts an object to an ASCII string. | 1850 * Converts an object to an ASCII string. |
| 1880 * Useful if you want to print the object. | 1851 * Useful if you want to print the object. |
| 1881 * If conversion to a string fails (eg. due to an exception in the toString() | 1852 * If conversion to a string fails (eg. due to an exception in the toString() |
| 1882 * method of the object) then the length() method returns 0 and the * operator | 1853 * method of the object) then the length() method returns 0 and the * operator |
| 1883 * returns NULL. | 1854 * returns NULL. |
| 1884 */ | 1855 */ |
| 1885 class V8_EXPORT AsciiValue { | 1856 class V8EXPORT AsciiValue { |
| 1886 public: | 1857 public: |
| 1887 // TODO(dcarney): deprecate | 1858 // TODO(dcarney): deprecate |
| 1888 explicit AsciiValue(Handle<v8::Value> obj); | 1859 explicit AsciiValue(Handle<v8::Value> obj); |
| 1889 ~AsciiValue(); | 1860 ~AsciiValue(); |
| 1890 char* operator*() { return str_; } | 1861 char* operator*() { return str_; } |
| 1891 const char* operator*() const { return str_; } | 1862 const char* operator*() const { return str_; } |
| 1892 int length() const { return length_; } | 1863 int length() const { return length_; } |
| 1893 private: | 1864 private: |
| 1894 char* str_; | 1865 char* str_; |
| 1895 int length_; | 1866 int length_; |
| 1896 | 1867 |
| 1897 // Disallow copying and assigning. | 1868 // Disallow copying and assigning. |
| 1898 AsciiValue(const AsciiValue&); | 1869 AsciiValue(const AsciiValue&); |
| 1899 void operator=(const AsciiValue&); | 1870 void operator=(const AsciiValue&); |
| 1900 }; | 1871 }; |
| 1901 | 1872 |
| 1902 /** | 1873 /** |
| 1903 * Converts an object to a two-byte string. | 1874 * Converts an object to a two-byte string. |
| 1904 * If conversion to a string fails (eg. due to an exception in the toString() | 1875 * If conversion to a string fails (eg. due to an exception in the toString() |
| 1905 * method of the object) then the length() method returns 0 and the * operator | 1876 * method of the object) then the length() method returns 0 and the * operator |
| 1906 * returns NULL. | 1877 * returns NULL. |
| 1907 */ | 1878 */ |
| 1908 class V8_EXPORT Value { | 1879 class V8EXPORT Value { |
| 1909 public: | 1880 public: |
| 1910 explicit Value(Handle<v8::Value> obj); | 1881 explicit Value(Handle<v8::Value> obj); |
| 1911 ~Value(); | 1882 ~Value(); |
| 1912 uint16_t* operator*() { return str_; } | 1883 uint16_t* operator*() { return str_; } |
| 1913 const uint16_t* operator*() const { return str_; } | 1884 const uint16_t* operator*() const { return str_; } |
| 1914 int length() const { return length_; } | 1885 int length() const { return length_; } |
| 1915 private: | 1886 private: |
| 1916 uint16_t* str_; | 1887 uint16_t* str_; |
| 1917 int length_; | 1888 int length_; |
| 1918 | 1889 |
| 1919 // Disallow copying and assigning. | 1890 // Disallow copying and assigning. |
| 1920 Value(const Value&); | 1891 Value(const Value&); |
| 1921 void operator=(const Value&); | 1892 void operator=(const Value&); |
| 1922 }; | 1893 }; |
| 1923 | 1894 |
| 1924 private: | 1895 private: |
| 1925 void VerifyExternalStringResourceBase(ExternalStringResourceBase* v, | 1896 void VerifyExternalStringResourceBase(ExternalStringResourceBase* v, |
| 1926 Encoding encoding) const; | 1897 Encoding encoding) const; |
| 1927 void VerifyExternalStringResource(ExternalStringResource* val) const; | 1898 void VerifyExternalStringResource(ExternalStringResource* val) const; |
| 1928 static void CheckCast(v8::Value* obj); | 1899 static void CheckCast(v8::Value* obj); |
| 1929 }; | 1900 }; |
| 1930 | 1901 |
| 1931 | 1902 |
| 1932 /** | 1903 /** |
| 1933 * A JavaScript symbol (ECMA-262 edition 6) | 1904 * A JavaScript symbol (ECMA-262 edition 6) |
| 1934 * | 1905 * |
| 1935 * This is an experimental feature. Use at your own risk. | 1906 * This is an experimental feature. Use at your own risk. |
| 1936 */ | 1907 */ |
| 1937 class V8_EXPORT Symbol : public Primitive { | 1908 class V8EXPORT Symbol : public Primitive { |
| 1938 public: | 1909 public: |
| 1939 // Returns the print name string of the symbol, or undefined if none. | 1910 // Returns the print name string of the symbol, or undefined if none. |
| 1940 Local<Value> Name() const; | 1911 Local<Value> Name() const; |
| 1941 | 1912 |
| 1942 // Create a symbol without a print name. | 1913 // Create a symbol without a print name. |
| 1943 static Local<Symbol> New(Isolate* isolate); | 1914 static Local<Symbol> New(Isolate* isolate); |
| 1944 | 1915 |
| 1945 // Create a symbol with a print name. | 1916 // Create a symbol with a print name. |
| 1946 static Local<Symbol> New(Isolate *isolate, const char* data, int length = -1); | 1917 static Local<Symbol> New(Isolate *isolate, const char* data, int length = -1); |
| 1947 | 1918 |
| 1948 V8_INLINE(static Symbol* Cast(v8::Value* obj)); | 1919 V8_INLINE(static Symbol* Cast(v8::Value* obj)); |
| 1949 private: | 1920 private: |
| 1950 Symbol(); | 1921 Symbol(); |
| 1951 static void CheckCast(v8::Value* obj); | 1922 static void CheckCast(v8::Value* obj); |
| 1952 }; | 1923 }; |
| 1953 | 1924 |
| 1954 | 1925 |
| 1955 /** | 1926 /** |
| 1956 * A JavaScript number value (ECMA-262, 4.3.20) | 1927 * A JavaScript number value (ECMA-262, 4.3.20) |
| 1957 */ | 1928 */ |
| 1958 class V8_EXPORT Number : public Primitive { | 1929 class V8EXPORT Number : public Primitive { |
| 1959 public: | 1930 public: |
| 1960 double Value() const; | 1931 double Value() const; |
| 1961 static Local<Number> New(double value); | 1932 static Local<Number> New(double value); |
| 1962 static Local<Number> New(Isolate* isolate, double value); | 1933 static Local<Number> New(Isolate* isolate, double value); |
| 1963 V8_INLINE(static Number* Cast(v8::Value* obj)); | 1934 V8_INLINE(static Number* Cast(v8::Value* obj)); |
| 1964 private: | 1935 private: |
| 1965 Number(); | 1936 Number(); |
| 1966 static void CheckCast(v8::Value* obj); | 1937 static void CheckCast(v8::Value* obj); |
| 1967 }; | 1938 }; |
| 1968 | 1939 |
| 1969 | 1940 |
| 1970 /** | 1941 /** |
| 1971 * A JavaScript value representing a signed integer. | 1942 * A JavaScript value representing a signed integer. |
| 1972 */ | 1943 */ |
| 1973 class V8_EXPORT Integer : public Number { | 1944 class V8EXPORT Integer : public Number { |
| 1974 public: | 1945 public: |
| 1975 static Local<Integer> New(int32_t value); | 1946 static Local<Integer> New(int32_t value); |
| 1976 static Local<Integer> NewFromUnsigned(uint32_t value); | 1947 static Local<Integer> NewFromUnsigned(uint32_t value); |
| 1977 static Local<Integer> New(int32_t value, Isolate*); | 1948 static Local<Integer> New(int32_t value, Isolate*); |
| 1978 static Local<Integer> NewFromUnsigned(uint32_t value, Isolate*); | 1949 static Local<Integer> NewFromUnsigned(uint32_t value, Isolate*); |
| 1979 int64_t Value() const; | 1950 int64_t Value() const; |
| 1980 V8_INLINE(static Integer* Cast(v8::Value* obj)); | 1951 V8_INLINE(static Integer* Cast(v8::Value* obj)); |
| 1981 private: | 1952 private: |
| 1982 Integer(); | 1953 Integer(); |
| 1983 static void CheckCast(v8::Value* obj); | 1954 static void CheckCast(v8::Value* obj); |
| 1984 }; | 1955 }; |
| 1985 | 1956 |
| 1986 | 1957 |
| 1987 /** | 1958 /** |
| 1988 * A JavaScript value representing a 32-bit signed integer. | 1959 * A JavaScript value representing a 32-bit signed integer. |
| 1989 */ | 1960 */ |
| 1990 class V8_EXPORT Int32 : public Integer { | 1961 class V8EXPORT Int32 : public Integer { |
| 1991 public: | 1962 public: |
| 1992 int32_t Value() const; | 1963 int32_t Value() const; |
| 1993 private: | 1964 private: |
| 1994 Int32(); | 1965 Int32(); |
| 1995 }; | 1966 }; |
| 1996 | 1967 |
| 1997 | 1968 |
| 1998 /** | 1969 /** |
| 1999 * A JavaScript value representing a 32-bit unsigned integer. | 1970 * A JavaScript value representing a 32-bit unsigned integer. |
| 2000 */ | 1971 */ |
| 2001 class V8_EXPORT Uint32 : public Integer { | 1972 class V8EXPORT Uint32 : public Integer { |
| 2002 public: | 1973 public: |
| 2003 uint32_t Value() const; | 1974 uint32_t Value() const; |
| 2004 private: | 1975 private: |
| 2005 Uint32(); | 1976 Uint32(); |
| 2006 }; | 1977 }; |
| 2007 | 1978 |
| 2008 | 1979 |
| 2009 enum PropertyAttribute { | 1980 enum PropertyAttribute { |
| 2010 None = 0, | 1981 None = 0, |
| 2011 ReadOnly = 1 << 0, | 1982 ReadOnly = 1 << 0, |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2063 DEFAULT = 0, | 2034 DEFAULT = 0, |
| 2064 ALL_CAN_READ = 1, | 2035 ALL_CAN_READ = 1, |
| 2065 ALL_CAN_WRITE = 1 << 1, | 2036 ALL_CAN_WRITE = 1 << 1, |
| 2066 PROHIBITS_OVERWRITING = 1 << 2 | 2037 PROHIBITS_OVERWRITING = 1 << 2 |
| 2067 }; | 2038 }; |
| 2068 | 2039 |
| 2069 | 2040 |
| 2070 /** | 2041 /** |
| 2071 * A JavaScript object (ECMA-262, 4.3.3) | 2042 * A JavaScript object (ECMA-262, 4.3.3) |
| 2072 */ | 2043 */ |
| 2073 class V8_EXPORT Object : public Value { | 2044 class V8EXPORT Object : public Value { |
| 2074 public: | 2045 public: |
| 2075 bool Set(Handle<Value> key, | 2046 bool Set(Handle<Value> key, |
| 2076 Handle<Value> value, | 2047 Handle<Value> value, |
| 2077 PropertyAttribute attribs = None); | 2048 PropertyAttribute attribs = None); |
| 2078 | 2049 |
| 2079 bool Set(uint32_t index, Handle<Value> value); | 2050 bool Set(uint32_t index, Handle<Value> value); |
| 2080 | 2051 |
| 2081 // Sets a local property on this object bypassing interceptors and | 2052 // Sets a local property on this object bypassing interceptors and |
| 2082 // overriding accessors or read-only properties. | 2053 // overriding accessors or read-only properties. |
| 2083 // | 2054 // |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2335 Object(); | 2306 Object(); |
| 2336 static void CheckCast(Value* obj); | 2307 static void CheckCast(Value* obj); |
| 2337 Local<Value> SlowGetInternalField(int index); | 2308 Local<Value> SlowGetInternalField(int index); |
| 2338 void* SlowGetAlignedPointerFromInternalField(int index); | 2309 void* SlowGetAlignedPointerFromInternalField(int index); |
| 2339 }; | 2310 }; |
| 2340 | 2311 |
| 2341 | 2312 |
| 2342 /** | 2313 /** |
| 2343 * An instance of the built-in array constructor (ECMA-262, 15.4.2). | 2314 * An instance of the built-in array constructor (ECMA-262, 15.4.2). |
| 2344 */ | 2315 */ |
| 2345 class V8_EXPORT Array : public Object { | 2316 class V8EXPORT Array : public Object { |
| 2346 public: | 2317 public: |
| 2347 uint32_t Length() const; | 2318 uint32_t Length() const; |
| 2348 | 2319 |
| 2349 /** | 2320 /** |
| 2350 * Clones an element at index |index|. Returns an empty | 2321 * Clones an element at index |index|. Returns an empty |
| 2351 * handle if cloning fails (for any reason). | 2322 * handle if cloning fails (for any reason). |
| 2352 */ | 2323 */ |
| 2353 Local<Object> CloneElementAt(uint32_t index); | 2324 Local<Object> CloneElementAt(uint32_t index); |
| 2354 | 2325 |
| 2355 /** | 2326 /** |
| 2356 * Creates a JavaScript array with the given length. If the length | 2327 * Creates a JavaScript array with the given length. If the length |
| 2357 * is negative the returned array will have length 0. | 2328 * is negative the returned array will have length 0. |
| 2358 */ | 2329 */ |
| 2359 static Local<Array> New(int length = 0); | 2330 static Local<Array> New(int length = 0); |
| 2360 | 2331 |
| 2361 V8_INLINE(static Array* Cast(Value* obj)); | 2332 V8_INLINE(static Array* Cast(Value* obj)); |
| 2362 private: | 2333 private: |
| 2363 Array(); | 2334 Array(); |
| 2364 static void CheckCast(Value* obj); | 2335 static void CheckCast(Value* obj); |
| 2365 }; | 2336 }; |
| 2366 | 2337 |
| 2367 | 2338 |
| 2368 /** | 2339 /** |
| 2369 * A JavaScript function object (ECMA-262, 15.3). | 2340 * A JavaScript function object (ECMA-262, 15.3). |
| 2370 */ | 2341 */ |
| 2371 class V8_EXPORT Function : public Object { | 2342 class V8EXPORT Function : public Object { |
| 2372 public: | 2343 public: |
| 2373 Local<Object> NewInstance() const; | 2344 Local<Object> NewInstance() const; |
| 2374 Local<Object> NewInstance(int argc, Handle<Value> argv[]) const; | 2345 Local<Object> NewInstance(int argc, Handle<Value> argv[]) const; |
| 2375 Local<Value> Call(Handle<Object> recv, int argc, Handle<Value> argv[]); | 2346 Local<Value> Call(Handle<Object> recv, int argc, Handle<Value> argv[]); |
| 2376 void SetName(Handle<String> name); | 2347 void SetName(Handle<String> name); |
| 2377 Handle<Value> GetName() const; | 2348 Handle<Value> GetName() const; |
| 2378 | 2349 |
| 2379 /** | 2350 /** |
| 2380 * Name inferred from variable or property assignment of this function. | 2351 * Name inferred from variable or property assignment of this function. |
| 2381 * Used to facilitate debugging and profiling of JavaScript code written | 2352 * Used to facilitate debugging and profiling of JavaScript code written |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2417 | 2388 |
| 2418 #ifndef V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT | 2389 #ifndef V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT |
| 2419 // The number of required internal fields can be defined by embedder. | 2390 // The number of required internal fields can be defined by embedder. |
| 2420 #define V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT 2 | 2391 #define V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT 2 |
| 2421 #endif | 2392 #endif |
| 2422 | 2393 |
| 2423 /** | 2394 /** |
| 2424 * An instance of the built-in ArrayBuffer constructor (ES6 draft 15.13.5). | 2395 * An instance of the built-in ArrayBuffer constructor (ES6 draft 15.13.5). |
| 2425 * This API is experimental and may change significantly. | 2396 * This API is experimental and may change significantly. |
| 2426 */ | 2397 */ |
| 2427 class V8_EXPORT ArrayBuffer : public Object { | 2398 class V8EXPORT ArrayBuffer : public Object { |
| 2428 public: | 2399 public: |
| 2429 /** | 2400 /** |
| 2430 * Allocator that V8 uses to allocate |ArrayBuffer|'s memory. | 2401 * Allocator that V8 uses to allocate |ArrayBuffer|'s memory. |
| 2431 * The allocator is a global V8 setting. It should be set with | 2402 * The allocator is a global V8 setting. It should be set with |
| 2432 * V8::SetArrayBufferAllocator prior to creation of a first ArrayBuffer. | 2403 * V8::SetArrayBufferAllocator prior to creation of a first ArrayBuffer. |
| 2433 * | 2404 * |
| 2434 * This API is experimental and may change significantly. | 2405 * This API is experimental and may change significantly. |
| 2435 */ | 2406 */ |
| 2436 class V8_EXPORT Allocator { // NOLINT | 2407 class V8EXPORT Allocator { // NOLINT |
| 2437 public: | 2408 public: |
| 2438 virtual ~Allocator() {} | 2409 virtual ~Allocator() {} |
| 2439 | 2410 |
| 2440 /** | 2411 /** |
| 2441 * Allocate |length| bytes. Return NULL if allocation is not successful. | 2412 * Allocate |length| bytes. Return NULL if allocation is not successful. |
| 2442 * Memory should be initialized to zeroes. | 2413 * Memory should be initialized to zeroes. |
| 2443 */ | 2414 */ |
| 2444 virtual void* Allocate(size_t length) = 0; | 2415 virtual void* Allocate(size_t length) = 0; |
| 2445 | 2416 |
| 2446 /** | 2417 /** |
| (...skipping 26 matching lines...) Expand all Loading... |
| 2473 /** | 2444 /** |
| 2474 * The contents of an |ArrayBuffer|. Externalization of |ArrayBuffer| | 2445 * The contents of an |ArrayBuffer|. Externalization of |ArrayBuffer| |
| 2475 * returns an instance of this class, populated, with a pointer to data | 2446 * returns an instance of this class, populated, with a pointer to data |
| 2476 * and byte length. | 2447 * and byte length. |
| 2477 * | 2448 * |
| 2478 * The Data pointer of ArrayBuffer::Contents is always allocated with | 2449 * The Data pointer of ArrayBuffer::Contents is always allocated with |
| 2479 * Allocator::Allocate that is set with V8::SetArrayBufferAllocator. | 2450 * Allocator::Allocate that is set with V8::SetArrayBufferAllocator. |
| 2480 * | 2451 * |
| 2481 * This API is experimental and may change significantly. | 2452 * This API is experimental and may change significantly. |
| 2482 */ | 2453 */ |
| 2483 class V8_EXPORT Contents { // NOLINT | 2454 class V8EXPORT Contents { // NOLINT |
| 2484 public: | 2455 public: |
| 2485 Contents() : data_(NULL), byte_length_(0) {} | 2456 Contents() : data_(NULL), byte_length_(0) {} |
| 2486 | 2457 |
| 2487 void* Data() const { return data_; } | 2458 void* Data() const { return data_; } |
| 2488 size_t ByteLength() const { return byte_length_; } | 2459 size_t ByteLength() const { return byte_length_; } |
| 2489 | 2460 |
| 2490 private: | 2461 private: |
| 2491 void* data_; | 2462 void* data_; |
| 2492 size_t byte_length_; | 2463 size_t byte_length_; |
| 2493 | 2464 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2556 #define V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT 2 | 2527 #define V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT 2 |
| 2557 #endif | 2528 #endif |
| 2558 | 2529 |
| 2559 | 2530 |
| 2560 /** | 2531 /** |
| 2561 * A base class for an instance of one of "views" over ArrayBuffer, | 2532 * A base class for an instance of one of "views" over ArrayBuffer, |
| 2562 * including TypedArrays and DataView (ES6 draft 15.13). | 2533 * including TypedArrays and DataView (ES6 draft 15.13). |
| 2563 * | 2534 * |
| 2564 * This API is experimental and may change significantly. | 2535 * This API is experimental and may change significantly. |
| 2565 */ | 2536 */ |
| 2566 class V8_EXPORT ArrayBufferView : public Object { | 2537 class V8EXPORT ArrayBufferView : public Object { |
| 2567 public: | 2538 public: |
| 2568 /** | 2539 /** |
| 2569 * Returns underlying ArrayBuffer. | 2540 * Returns underlying ArrayBuffer. |
| 2570 */ | 2541 */ |
| 2571 Local<ArrayBuffer> Buffer(); | 2542 Local<ArrayBuffer> Buffer(); |
| 2572 /** | 2543 /** |
| 2573 * Byte offset in |Buffer|. | 2544 * Byte offset in |Buffer|. |
| 2574 */ | 2545 */ |
| 2575 size_t ByteOffset(); | 2546 size_t ByteOffset(); |
| 2576 /** | 2547 /** |
| (...skipping 14 matching lines...) Expand all Loading... |
| 2591 ArrayBufferView(); | 2562 ArrayBufferView(); |
| 2592 static void CheckCast(Value* obj); | 2563 static void CheckCast(Value* obj); |
| 2593 }; | 2564 }; |
| 2594 | 2565 |
| 2595 | 2566 |
| 2596 /** | 2567 /** |
| 2597 * A base class for an instance of TypedArray series of constructors | 2568 * A base class for an instance of TypedArray series of constructors |
| 2598 * (ES6 draft 15.13.6). | 2569 * (ES6 draft 15.13.6). |
| 2599 * This API is experimental and may change significantly. | 2570 * This API is experimental and may change significantly. |
| 2600 */ | 2571 */ |
| 2601 class V8_EXPORT TypedArray : public ArrayBufferView { | 2572 class V8EXPORT TypedArray : public ArrayBufferView { |
| 2602 public: | 2573 public: |
| 2603 /** | 2574 /** |
| 2604 * Number of elements in this typed array | 2575 * Number of elements in this typed array |
| 2605 * (e.g. for Int16Array, |ByteLength|/2). | 2576 * (e.g. for Int16Array, |ByteLength|/2). |
| 2606 */ | 2577 */ |
| 2607 size_t Length(); | 2578 size_t Length(); |
| 2608 | 2579 |
| 2609 V8_INLINE(static TypedArray* Cast(Value* obj)); | 2580 V8_INLINE(static TypedArray* Cast(Value* obj)); |
| 2610 | 2581 |
| 2611 private: | 2582 private: |
| 2612 TypedArray(); | 2583 TypedArray(); |
| 2613 static void CheckCast(Value* obj); | 2584 static void CheckCast(Value* obj); |
| 2614 }; | 2585 }; |
| 2615 | 2586 |
| 2616 | 2587 |
| 2617 /** | 2588 /** |
| 2618 * An instance of Uint8Array constructor (ES6 draft 15.13.6). | 2589 * An instance of Uint8Array constructor (ES6 draft 15.13.6). |
| 2619 * This API is experimental and may change significantly. | 2590 * This API is experimental and may change significantly. |
| 2620 */ | 2591 */ |
| 2621 class V8_EXPORT Uint8Array : public TypedArray { | 2592 class V8EXPORT Uint8Array : public TypedArray { |
| 2622 public: | 2593 public: |
| 2623 static Local<Uint8Array> New(Handle<ArrayBuffer> array_buffer, | 2594 static Local<Uint8Array> New(Handle<ArrayBuffer> array_buffer, |
| 2624 size_t byte_offset, size_t length); | 2595 size_t byte_offset, size_t length); |
| 2625 V8_INLINE(static Uint8Array* Cast(Value* obj)); | 2596 V8_INLINE(static Uint8Array* Cast(Value* obj)); |
| 2626 | 2597 |
| 2627 private: | 2598 private: |
| 2628 Uint8Array(); | 2599 Uint8Array(); |
| 2629 static void CheckCast(Value* obj); | 2600 static void CheckCast(Value* obj); |
| 2630 }; | 2601 }; |
| 2631 | 2602 |
| 2632 | 2603 |
| 2633 /** | 2604 /** |
| 2634 * An instance of Uint8ClampedArray constructor (ES6 draft 15.13.6). | 2605 * An instance of Uint8ClampedArray constructor (ES6 draft 15.13.6). |
| 2635 * This API is experimental and may change significantly. | 2606 * This API is experimental and may change significantly. |
| 2636 */ | 2607 */ |
| 2637 class V8_EXPORT Uint8ClampedArray : public TypedArray { | 2608 class V8EXPORT Uint8ClampedArray : public TypedArray { |
| 2638 public: | 2609 public: |
| 2639 static Local<Uint8ClampedArray> New(Handle<ArrayBuffer> array_buffer, | 2610 static Local<Uint8ClampedArray> New(Handle<ArrayBuffer> array_buffer, |
| 2640 size_t byte_offset, size_t length); | 2611 size_t byte_offset, size_t length); |
| 2641 V8_INLINE(static Uint8ClampedArray* Cast(Value* obj)); | 2612 V8_INLINE(static Uint8ClampedArray* Cast(Value* obj)); |
| 2642 | 2613 |
| 2643 private: | 2614 private: |
| 2644 Uint8ClampedArray(); | 2615 Uint8ClampedArray(); |
| 2645 static void CheckCast(Value* obj); | 2616 static void CheckCast(Value* obj); |
| 2646 }; | 2617 }; |
| 2647 | 2618 |
| 2648 /** | 2619 /** |
| 2649 * An instance of Int8Array constructor (ES6 draft 15.13.6). | 2620 * An instance of Int8Array constructor (ES6 draft 15.13.6). |
| 2650 * This API is experimental and may change significantly. | 2621 * This API is experimental and may change significantly. |
| 2651 */ | 2622 */ |
| 2652 class V8_EXPORT Int8Array : public TypedArray { | 2623 class V8EXPORT Int8Array : public TypedArray { |
| 2653 public: | 2624 public: |
| 2654 static Local<Int8Array> New(Handle<ArrayBuffer> array_buffer, | 2625 static Local<Int8Array> New(Handle<ArrayBuffer> array_buffer, |
| 2655 size_t byte_offset, size_t length); | 2626 size_t byte_offset, size_t length); |
| 2656 V8_INLINE(static Int8Array* Cast(Value* obj)); | 2627 V8_INLINE(static Int8Array* Cast(Value* obj)); |
| 2657 | 2628 |
| 2658 private: | 2629 private: |
| 2659 Int8Array(); | 2630 Int8Array(); |
| 2660 static void CheckCast(Value* obj); | 2631 static void CheckCast(Value* obj); |
| 2661 }; | 2632 }; |
| 2662 | 2633 |
| 2663 | 2634 |
| 2664 /** | 2635 /** |
| 2665 * An instance of Uint16Array constructor (ES6 draft 15.13.6). | 2636 * An instance of Uint16Array constructor (ES6 draft 15.13.6). |
| 2666 * This API is experimental and may change significantly. | 2637 * This API is experimental and may change significantly. |
| 2667 */ | 2638 */ |
| 2668 class V8_EXPORT Uint16Array : public TypedArray { | 2639 class V8EXPORT Uint16Array : public TypedArray { |
| 2669 public: | 2640 public: |
| 2670 static Local<Uint16Array> New(Handle<ArrayBuffer> array_buffer, | 2641 static Local<Uint16Array> New(Handle<ArrayBuffer> array_buffer, |
| 2671 size_t byte_offset, size_t length); | 2642 size_t byte_offset, size_t length); |
| 2672 V8_INLINE(static Uint16Array* Cast(Value* obj)); | 2643 V8_INLINE(static Uint16Array* Cast(Value* obj)); |
| 2673 | 2644 |
| 2674 private: | 2645 private: |
| 2675 Uint16Array(); | 2646 Uint16Array(); |
| 2676 static void CheckCast(Value* obj); | 2647 static void CheckCast(Value* obj); |
| 2677 }; | 2648 }; |
| 2678 | 2649 |
| 2679 | 2650 |
| 2680 /** | 2651 /** |
| 2681 * An instance of Int16Array constructor (ES6 draft 15.13.6). | 2652 * An instance of Int16Array constructor (ES6 draft 15.13.6). |
| 2682 * This API is experimental and may change significantly. | 2653 * This API is experimental and may change significantly. |
| 2683 */ | 2654 */ |
| 2684 class V8_EXPORT Int16Array : public TypedArray { | 2655 class V8EXPORT Int16Array : public TypedArray { |
| 2685 public: | 2656 public: |
| 2686 static Local<Int16Array> New(Handle<ArrayBuffer> array_buffer, | 2657 static Local<Int16Array> New(Handle<ArrayBuffer> array_buffer, |
| 2687 size_t byte_offset, size_t length); | 2658 size_t byte_offset, size_t length); |
| 2688 V8_INLINE(static Int16Array* Cast(Value* obj)); | 2659 V8_INLINE(static Int16Array* Cast(Value* obj)); |
| 2689 | 2660 |
| 2690 private: | 2661 private: |
| 2691 Int16Array(); | 2662 Int16Array(); |
| 2692 static void CheckCast(Value* obj); | 2663 static void CheckCast(Value* obj); |
| 2693 }; | 2664 }; |
| 2694 | 2665 |
| 2695 | 2666 |
| 2696 /** | 2667 /** |
| 2697 * An instance of Uint32Array constructor (ES6 draft 15.13.6). | 2668 * An instance of Uint32Array constructor (ES6 draft 15.13.6). |
| 2698 * This API is experimental and may change significantly. | 2669 * This API is experimental and may change significantly. |
| 2699 */ | 2670 */ |
| 2700 class V8_EXPORT Uint32Array : public TypedArray { | 2671 class V8EXPORT Uint32Array : public TypedArray { |
| 2701 public: | 2672 public: |
| 2702 static Local<Uint32Array> New(Handle<ArrayBuffer> array_buffer, | 2673 static Local<Uint32Array> New(Handle<ArrayBuffer> array_buffer, |
| 2703 size_t byte_offset, size_t length); | 2674 size_t byte_offset, size_t length); |
| 2704 V8_INLINE(static Uint32Array* Cast(Value* obj)); | 2675 V8_INLINE(static Uint32Array* Cast(Value* obj)); |
| 2705 | 2676 |
| 2706 private: | 2677 private: |
| 2707 Uint32Array(); | 2678 Uint32Array(); |
| 2708 static void CheckCast(Value* obj); | 2679 static void CheckCast(Value* obj); |
| 2709 }; | 2680 }; |
| 2710 | 2681 |
| 2711 | 2682 |
| 2712 /** | 2683 /** |
| 2713 * An instance of Int32Array constructor (ES6 draft 15.13.6). | 2684 * An instance of Int32Array constructor (ES6 draft 15.13.6). |
| 2714 * This API is experimental and may change significantly. | 2685 * This API is experimental and may change significantly. |
| 2715 */ | 2686 */ |
| 2716 class V8_EXPORT Int32Array : public TypedArray { | 2687 class V8EXPORT Int32Array : public TypedArray { |
| 2717 public: | 2688 public: |
| 2718 static Local<Int32Array> New(Handle<ArrayBuffer> array_buffer, | 2689 static Local<Int32Array> New(Handle<ArrayBuffer> array_buffer, |
| 2719 size_t byte_offset, size_t length); | 2690 size_t byte_offset, size_t length); |
| 2720 V8_INLINE(static Int32Array* Cast(Value* obj)); | 2691 V8_INLINE(static Int32Array* Cast(Value* obj)); |
| 2721 | 2692 |
| 2722 private: | 2693 private: |
| 2723 Int32Array(); | 2694 Int32Array(); |
| 2724 static void CheckCast(Value* obj); | 2695 static void CheckCast(Value* obj); |
| 2725 }; | 2696 }; |
| 2726 | 2697 |
| 2727 | 2698 |
| 2728 /** | 2699 /** |
| 2729 * An instance of Float32Array constructor (ES6 draft 15.13.6). | 2700 * An instance of Float32Array constructor (ES6 draft 15.13.6). |
| 2730 * This API is experimental and may change significantly. | 2701 * This API is experimental and may change significantly. |
| 2731 */ | 2702 */ |
| 2732 class V8_EXPORT Float32Array : public TypedArray { | 2703 class V8EXPORT Float32Array : public TypedArray { |
| 2733 public: | 2704 public: |
| 2734 static Local<Float32Array> New(Handle<ArrayBuffer> array_buffer, | 2705 static Local<Float32Array> New(Handle<ArrayBuffer> array_buffer, |
| 2735 size_t byte_offset, size_t length); | 2706 size_t byte_offset, size_t length); |
| 2736 V8_INLINE(static Float32Array* Cast(Value* obj)); | 2707 V8_INLINE(static Float32Array* Cast(Value* obj)); |
| 2737 | 2708 |
| 2738 private: | 2709 private: |
| 2739 Float32Array(); | 2710 Float32Array(); |
| 2740 static void CheckCast(Value* obj); | 2711 static void CheckCast(Value* obj); |
| 2741 }; | 2712 }; |
| 2742 | 2713 |
| 2743 | 2714 |
| 2744 /** | 2715 /** |
| 2745 * An instance of Float64Array constructor (ES6 draft 15.13.6). | 2716 * An instance of Float64Array constructor (ES6 draft 15.13.6). |
| 2746 * This API is experimental and may change significantly. | 2717 * This API is experimental and may change significantly. |
| 2747 */ | 2718 */ |
| 2748 class V8_EXPORT Float64Array : public TypedArray { | 2719 class V8EXPORT Float64Array : public TypedArray { |
| 2749 public: | 2720 public: |
| 2750 static Local<Float64Array> New(Handle<ArrayBuffer> array_buffer, | 2721 static Local<Float64Array> New(Handle<ArrayBuffer> array_buffer, |
| 2751 size_t byte_offset, size_t length); | 2722 size_t byte_offset, size_t length); |
| 2752 V8_INLINE(static Float64Array* Cast(Value* obj)); | 2723 V8_INLINE(static Float64Array* Cast(Value* obj)); |
| 2753 | 2724 |
| 2754 private: | 2725 private: |
| 2755 Float64Array(); | 2726 Float64Array(); |
| 2756 static void CheckCast(Value* obj); | 2727 static void CheckCast(Value* obj); |
| 2757 }; | 2728 }; |
| 2758 | 2729 |
| 2759 | 2730 |
| 2760 /** | 2731 /** |
| 2761 * An instance of DataView constructor (ES6 draft 15.13.7). | 2732 * An instance of DataView constructor (ES6 draft 15.13.7). |
| 2762 * This API is experimental and may change significantly. | 2733 * This API is experimental and may change significantly. |
| 2763 */ | 2734 */ |
| 2764 class V8_EXPORT DataView : public ArrayBufferView { | 2735 class V8EXPORT DataView : public ArrayBufferView { |
| 2765 public: | 2736 public: |
| 2766 static Local<DataView> New(Handle<ArrayBuffer> array_buffer, | 2737 static Local<DataView> New(Handle<ArrayBuffer> array_buffer, |
| 2767 size_t byte_offset, size_t length); | 2738 size_t byte_offset, size_t length); |
| 2768 V8_INLINE(static DataView* Cast(Value* obj)); | 2739 V8_INLINE(static DataView* Cast(Value* obj)); |
| 2769 | 2740 |
| 2770 private: | 2741 private: |
| 2771 DataView(); | 2742 DataView(); |
| 2772 static void CheckCast(Value* obj); | 2743 static void CheckCast(Value* obj); |
| 2773 }; | 2744 }; |
| 2774 | 2745 |
| 2775 | 2746 |
| 2776 /** | 2747 /** |
| 2777 * An instance of the built-in Date constructor (ECMA-262, 15.9). | 2748 * An instance of the built-in Date constructor (ECMA-262, 15.9). |
| 2778 */ | 2749 */ |
| 2779 class V8_EXPORT Date : public Object { | 2750 class V8EXPORT Date : public Object { |
| 2780 public: | 2751 public: |
| 2781 static Local<Value> New(double time); | 2752 static Local<Value> New(double time); |
| 2782 | 2753 |
| 2783 // Deprecated, use Date::ValueOf() instead. | 2754 // Deprecated, use Date::ValueOf() instead. |
| 2784 // TODO(svenpanne) Actually deprecate when Chrome is adapted. | 2755 // TODO(svenpanne) Actually deprecate when Chrome is adapted. |
| 2785 double NumberValue() const { return ValueOf(); } | 2756 double NumberValue() const { return ValueOf(); } |
| 2786 | 2757 |
| 2787 /** | 2758 /** |
| 2788 * A specialization of Value::NumberValue that is more efficient | 2759 * A specialization of Value::NumberValue that is more efficient |
| 2789 * because we know the structure of this object. | 2760 * because we know the structure of this object. |
| (...skipping 17 matching lines...) Expand all Loading... |
| 2807 static void DateTimeConfigurationChangeNotification(); | 2778 static void DateTimeConfigurationChangeNotification(); |
| 2808 | 2779 |
| 2809 private: | 2780 private: |
| 2810 static void CheckCast(v8::Value* obj); | 2781 static void CheckCast(v8::Value* obj); |
| 2811 }; | 2782 }; |
| 2812 | 2783 |
| 2813 | 2784 |
| 2814 /** | 2785 /** |
| 2815 * A Number object (ECMA-262, 4.3.21). | 2786 * A Number object (ECMA-262, 4.3.21). |
| 2816 */ | 2787 */ |
| 2817 class V8_EXPORT NumberObject : public Object { | 2788 class V8EXPORT NumberObject : public Object { |
| 2818 public: | 2789 public: |
| 2819 static Local<Value> New(double value); | 2790 static Local<Value> New(double value); |
| 2820 | 2791 |
| 2821 // Deprecated, use NumberObject::ValueOf() instead. | 2792 // Deprecated, use NumberObject::ValueOf() instead. |
| 2822 // TODO(svenpanne) Actually deprecate when Chrome is adapted. | 2793 // TODO(svenpanne) Actually deprecate when Chrome is adapted. |
| 2823 double NumberValue() const { return ValueOf(); } | 2794 double NumberValue() const { return ValueOf(); } |
| 2824 | 2795 |
| 2825 /** | 2796 /** |
| 2826 * Returns the Number held by the object. | 2797 * Returns the Number held by the object. |
| 2827 */ | 2798 */ |
| 2828 double ValueOf() const; | 2799 double ValueOf() const; |
| 2829 | 2800 |
| 2830 V8_INLINE(static NumberObject* Cast(v8::Value* obj)); | 2801 V8_INLINE(static NumberObject* Cast(v8::Value* obj)); |
| 2831 | 2802 |
| 2832 private: | 2803 private: |
| 2833 static void CheckCast(v8::Value* obj); | 2804 static void CheckCast(v8::Value* obj); |
| 2834 }; | 2805 }; |
| 2835 | 2806 |
| 2836 | 2807 |
| 2837 /** | 2808 /** |
| 2838 * A Boolean object (ECMA-262, 4.3.15). | 2809 * A Boolean object (ECMA-262, 4.3.15). |
| 2839 */ | 2810 */ |
| 2840 class V8_EXPORT BooleanObject : public Object { | 2811 class V8EXPORT BooleanObject : public Object { |
| 2841 public: | 2812 public: |
| 2842 static Local<Value> New(bool value); | 2813 static Local<Value> New(bool value); |
| 2843 | 2814 |
| 2844 // Deprecated, use BooleanObject::ValueOf() instead. | 2815 // Deprecated, use BooleanObject::ValueOf() instead. |
| 2845 // TODO(svenpanne) Actually deprecate when Chrome is adapted. | 2816 // TODO(svenpanne) Actually deprecate when Chrome is adapted. |
| 2846 bool BooleanValue() const { return ValueOf(); } | 2817 bool BooleanValue() const { return ValueOf(); } |
| 2847 | 2818 |
| 2848 /** | 2819 /** |
| 2849 * Returns the Boolean held by the object. | 2820 * Returns the Boolean held by the object. |
| 2850 */ | 2821 */ |
| 2851 bool ValueOf() const; | 2822 bool ValueOf() const; |
| 2852 | 2823 |
| 2853 V8_INLINE(static BooleanObject* Cast(v8::Value* obj)); | 2824 V8_INLINE(static BooleanObject* Cast(v8::Value* obj)); |
| 2854 | 2825 |
| 2855 private: | 2826 private: |
| 2856 static void CheckCast(v8::Value* obj); | 2827 static void CheckCast(v8::Value* obj); |
| 2857 }; | 2828 }; |
| 2858 | 2829 |
| 2859 | 2830 |
| 2860 /** | 2831 /** |
| 2861 * A String object (ECMA-262, 4.3.18). | 2832 * A String object (ECMA-262, 4.3.18). |
| 2862 */ | 2833 */ |
| 2863 class V8_EXPORT StringObject : public Object { | 2834 class V8EXPORT StringObject : public Object { |
| 2864 public: | 2835 public: |
| 2865 static Local<Value> New(Handle<String> value); | 2836 static Local<Value> New(Handle<String> value); |
| 2866 | 2837 |
| 2867 // Deprecated, use StringObject::ValueOf() instead. | 2838 // Deprecated, use StringObject::ValueOf() instead. |
| 2868 // TODO(svenpanne) Actually deprecate when Chrome is adapted. | 2839 // TODO(svenpanne) Actually deprecate when Chrome is adapted. |
| 2869 Local<String> StringValue() const { return ValueOf(); } | 2840 Local<String> StringValue() const { return ValueOf(); } |
| 2870 | 2841 |
| 2871 /** | 2842 /** |
| 2872 * Returns the String held by the object. | 2843 * Returns the String held by the object. |
| 2873 */ | 2844 */ |
| 2874 Local<String> ValueOf() const; | 2845 Local<String> ValueOf() const; |
| 2875 | 2846 |
| 2876 V8_INLINE(static StringObject* Cast(v8::Value* obj)); | 2847 V8_INLINE(static StringObject* Cast(v8::Value* obj)); |
| 2877 | 2848 |
| 2878 private: | 2849 private: |
| 2879 static void CheckCast(v8::Value* obj); | 2850 static void CheckCast(v8::Value* obj); |
| 2880 }; | 2851 }; |
| 2881 | 2852 |
| 2882 | 2853 |
| 2883 /** | 2854 /** |
| 2884 * A Symbol object (ECMA-262 edition 6). | 2855 * A Symbol object (ECMA-262 edition 6). |
| 2885 * | 2856 * |
| 2886 * This is an experimental feature. Use at your own risk. | 2857 * This is an experimental feature. Use at your own risk. |
| 2887 */ | 2858 */ |
| 2888 class V8_EXPORT SymbolObject : public Object { | 2859 class V8EXPORT SymbolObject : public Object { |
| 2889 public: | 2860 public: |
| 2890 static Local<Value> New(Isolate* isolate, Handle<Symbol> value); | 2861 static Local<Value> New(Isolate* isolate, Handle<Symbol> value); |
| 2891 | 2862 |
| 2892 // Deprecated, use SymbolObject::ValueOf() instead. | 2863 // Deprecated, use SymbolObject::ValueOf() instead. |
| 2893 // TODO(svenpanne) Actually deprecate when Chrome is adapted. | 2864 // TODO(svenpanne) Actually deprecate when Chrome is adapted. |
| 2894 Local<Symbol> SymbolValue() const { return ValueOf(); } | 2865 Local<Symbol> SymbolValue() const { return ValueOf(); } |
| 2895 | 2866 |
| 2896 /** | 2867 /** |
| 2897 * Returns the Symbol held by the object. | 2868 * Returns the Symbol held by the object. |
| 2898 */ | 2869 */ |
| 2899 Local<Symbol> ValueOf() const; | 2870 Local<Symbol> ValueOf() const; |
| 2900 | 2871 |
| 2901 V8_INLINE(static SymbolObject* Cast(v8::Value* obj)); | 2872 V8_INLINE(static SymbolObject* Cast(v8::Value* obj)); |
| 2902 | 2873 |
| 2903 private: | 2874 private: |
| 2904 static void CheckCast(v8::Value* obj); | 2875 static void CheckCast(v8::Value* obj); |
| 2905 }; | 2876 }; |
| 2906 | 2877 |
| 2907 | 2878 |
| 2908 /** | 2879 /** |
| 2909 * An instance of the built-in RegExp constructor (ECMA-262, 15.10). | 2880 * An instance of the built-in RegExp constructor (ECMA-262, 15.10). |
| 2910 */ | 2881 */ |
| 2911 class V8_EXPORT RegExp : public Object { | 2882 class V8EXPORT RegExp : public Object { |
| 2912 public: | 2883 public: |
| 2913 /** | 2884 /** |
| 2914 * Regular expression flag bits. They can be or'ed to enable a set | 2885 * Regular expression flag bits. They can be or'ed to enable a set |
| 2915 * of flags. | 2886 * of flags. |
| 2916 */ | 2887 */ |
| 2917 enum Flags { | 2888 enum Flags { |
| 2918 kNone = 0, | 2889 kNone = 0, |
| 2919 kGlobal = 1, | 2890 kGlobal = 1, |
| 2920 kIgnoreCase = 2, | 2891 kIgnoreCase = 2, |
| 2921 kMultiline = 4 | 2892 kMultiline = 4 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 2948 | 2919 |
| 2949 private: | 2920 private: |
| 2950 static void CheckCast(v8::Value* obj); | 2921 static void CheckCast(v8::Value* obj); |
| 2951 }; | 2922 }; |
| 2952 | 2923 |
| 2953 | 2924 |
| 2954 /** | 2925 /** |
| 2955 * A JavaScript value that wraps a C++ void*. This type of value is mainly used | 2926 * A JavaScript value that wraps a C++ void*. This type of value is mainly used |
| 2956 * to associate C++ data structures with JavaScript objects. | 2927 * to associate C++ data structures with JavaScript objects. |
| 2957 */ | 2928 */ |
| 2958 class V8_EXPORT External : public Value { | 2929 class V8EXPORT External : public Value { |
| 2959 public: | 2930 public: |
| 2960 static Local<External> New(void* value); | 2931 static Local<External> New(void* value); |
| 2961 V8_INLINE(static External* Cast(Value* obj)); | 2932 V8_INLINE(static External* Cast(Value* obj)); |
| 2962 void* Value() const; | 2933 void* Value() const; |
| 2963 private: | 2934 private: |
| 2964 static void CheckCast(v8::Value* obj); | 2935 static void CheckCast(v8::Value* obj); |
| 2965 }; | 2936 }; |
| 2966 | 2937 |
| 2967 | 2938 |
| 2968 // --- Templates --- | 2939 // --- Templates --- |
| 2969 | 2940 |
| 2970 | 2941 |
| 2971 /** | 2942 /** |
| 2972 * The superclass of object and function templates. | 2943 * The superclass of object and function templates. |
| 2973 */ | 2944 */ |
| 2974 class V8_EXPORT Template : public Data { | 2945 class V8EXPORT Template : public Data { |
| 2975 public: | 2946 public: |
| 2976 /** Adds a property to each instance created by this template.*/ | 2947 /** Adds a property to each instance created by this template.*/ |
| 2977 void Set(Handle<String> name, Handle<Data> value, | 2948 void Set(Handle<String> name, Handle<Data> value, |
| 2978 PropertyAttribute attributes = None); | 2949 PropertyAttribute attributes = None); |
| 2979 V8_INLINE(void Set(const char* name, Handle<Data> value)); | 2950 V8_INLINE(void Set(const char* name, Handle<Data> value)); |
| 2980 private: | 2951 private: |
| 2981 Template(); | 2952 Template(); |
| 2982 | 2953 |
| 2983 friend class ObjectTemplate; | 2954 friend class ObjectTemplate; |
| 2984 friend class FunctionTemplate; | 2955 friend class FunctionTemplate; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3052 internal::Object** values, | 3023 internal::Object** values, |
| 3053 int length, | 3024 int length, |
| 3054 bool is_construct_call)); | 3025 bool is_construct_call)); |
| 3055 internal::Object** implicit_args_; | 3026 internal::Object** implicit_args_; |
| 3056 internal::Object** values_; | 3027 internal::Object** values_; |
| 3057 int length_; | 3028 int length_; |
| 3058 bool is_construct_call_; | 3029 bool is_construct_call_; |
| 3059 }; | 3030 }; |
| 3060 | 3031 |
| 3061 | 3032 |
| 3062 class V8_EXPORT Arguments : public FunctionCallbackInfo<Value> { | 3033 class V8EXPORT Arguments : public FunctionCallbackInfo<Value> { |
| 3063 private: | 3034 private: |
| 3064 friend class internal::FunctionCallbackArguments; | 3035 friend class internal::FunctionCallbackArguments; |
| 3065 V8_INLINE(Arguments(internal::Object** implicit_args, | 3036 V8_INLINE(Arguments(internal::Object** implicit_args, |
| 3066 internal::Object** values, | 3037 internal::Object** values, |
| 3067 int length, | 3038 int length, |
| 3068 bool is_construct_call)); | 3039 bool is_construct_call)); |
| 3069 }; | 3040 }; |
| 3070 | 3041 |
| 3071 /** | 3042 /** |
| 3072 * The information passed to a property callback about the context | 3043 * The information passed to a property callback about the context |
| (...skipping 20 matching lines...) Expand all Loading... |
| 3093 static const int kReturnValueIndex = -3; | 3064 static const int kReturnValueIndex = -3; |
| 3094 static const int kReturnValueDefaultValueIndex = -4; | 3065 static const int kReturnValueDefaultValueIndex = -4; |
| 3095 static const int kIsolateIndex = -5; | 3066 static const int kIsolateIndex = -5; |
| 3096 | 3067 |
| 3097 V8_INLINE(PropertyCallbackInfo(internal::Object** args)) | 3068 V8_INLINE(PropertyCallbackInfo(internal::Object** args)) |
| 3098 : args_(args) { } | 3069 : args_(args) { } |
| 3099 internal::Object** args_; | 3070 internal::Object** args_; |
| 3100 }; | 3071 }; |
| 3101 | 3072 |
| 3102 | 3073 |
| 3103 class V8_EXPORT AccessorInfo : public PropertyCallbackInfo<Value> { | 3074 class V8EXPORT AccessorInfo : public PropertyCallbackInfo<Value> { |
| 3104 private: | 3075 private: |
| 3105 friend class internal::PropertyCallbackArguments; | 3076 friend class internal::PropertyCallbackArguments; |
| 3106 V8_INLINE(AccessorInfo(internal::Object** args)) | 3077 V8_INLINE(AccessorInfo(internal::Object** args)) |
| 3107 : PropertyCallbackInfo<Value>(args) { } | 3078 : PropertyCallbackInfo<Value>(args) { } |
| 3108 }; | 3079 }; |
| 3109 | 3080 |
| 3110 | 3081 |
| 3111 typedef Handle<Value> (*InvocationCallback)(const Arguments& args); | 3082 typedef Handle<Value> (*InvocationCallback)(const Arguments& args); |
| 3112 typedef void (*FunctionCallback)(const FunctionCallbackInfo<Value>& info); | 3083 typedef void (*FunctionCallback)(const FunctionCallbackInfo<Value>& info); |
| 3113 | 3084 |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3341 * | 3312 * |
| 3342 * The Child function and Child instance will have the following | 3313 * The Child function and Child instance will have the following |
| 3343 * properties: | 3314 * properties: |
| 3344 * | 3315 * |
| 3345 * \code | 3316 * \code |
| 3346 * child_func.prototype.__proto__ == function.prototype; | 3317 * child_func.prototype.__proto__ == function.prototype; |
| 3347 * child_instance.instance_accessor calls 'InstanceAccessorCallback' | 3318 * child_instance.instance_accessor calls 'InstanceAccessorCallback' |
| 3348 * child_instance.instance_property == 3; | 3319 * child_instance.instance_property == 3; |
| 3349 * \endcode | 3320 * \endcode |
| 3350 */ | 3321 */ |
| 3351 class V8_EXPORT FunctionTemplate : public Template { | 3322 class V8EXPORT FunctionTemplate : public Template { |
| 3352 public: | 3323 public: |
| 3353 /** Creates a function template.*/ | 3324 /** Creates a function template.*/ |
| 3354 V8_DEPRECATED(static Local<FunctionTemplate> New( | 3325 V8_DEPRECATED(static Local<FunctionTemplate> New( |
| 3355 InvocationCallback callback, | 3326 InvocationCallback callback, |
| 3356 Handle<Value> data = Handle<Value>(), | 3327 Handle<Value> data = Handle<Value>(), |
| 3357 Handle<Signature> signature = Handle<Signature>(), | 3328 Handle<Signature> signature = Handle<Signature>(), |
| 3358 int length = 0)); | 3329 int length = 0)); |
| 3359 static Local<FunctionTemplate> New( | 3330 static Local<FunctionTemplate> New( |
| 3360 FunctionCallback callback = 0, | 3331 FunctionCallback callback = 0, |
| 3361 Handle<Value> data = Handle<Value>(), | 3332 Handle<Value> data = Handle<Value>(), |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3432 friend class ObjectTemplate; | 3403 friend class ObjectTemplate; |
| 3433 }; | 3404 }; |
| 3434 | 3405 |
| 3435 | 3406 |
| 3436 /** | 3407 /** |
| 3437 * An ObjectTemplate is used to create objects at runtime. | 3408 * An ObjectTemplate is used to create objects at runtime. |
| 3438 * | 3409 * |
| 3439 * Properties added to an ObjectTemplate are added to each object | 3410 * Properties added to an ObjectTemplate are added to each object |
| 3440 * created from the ObjectTemplate. | 3411 * created from the ObjectTemplate. |
| 3441 */ | 3412 */ |
| 3442 class V8_EXPORT ObjectTemplate : public Template { | 3413 class V8EXPORT ObjectTemplate : public Template { |
| 3443 public: | 3414 public: |
| 3444 /** Creates an ObjectTemplate. */ | 3415 /** Creates an ObjectTemplate. */ |
| 3445 static Local<ObjectTemplate> New(); | 3416 static Local<ObjectTemplate> New(); |
| 3446 | 3417 |
| 3447 /** Creates a new instance of this template.*/ | 3418 /** Creates a new instance of this template.*/ |
| 3448 Local<Object> NewInstance(); | 3419 Local<Object> NewInstance(); |
| 3449 | 3420 |
| 3450 /** | 3421 /** |
| 3451 * Sets an accessor on the object template. | 3422 * Sets an accessor on the object template. |
| 3452 * | 3423 * |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3618 ObjectTemplate(); | 3589 ObjectTemplate(); |
| 3619 static Local<ObjectTemplate> New(Handle<FunctionTemplate> constructor); | 3590 static Local<ObjectTemplate> New(Handle<FunctionTemplate> constructor); |
| 3620 friend class FunctionTemplate; | 3591 friend class FunctionTemplate; |
| 3621 }; | 3592 }; |
| 3622 | 3593 |
| 3623 | 3594 |
| 3624 /** | 3595 /** |
| 3625 * A Signature specifies which receivers and arguments are valid | 3596 * A Signature specifies which receivers and arguments are valid |
| 3626 * parameters to a function. | 3597 * parameters to a function. |
| 3627 */ | 3598 */ |
| 3628 class V8_EXPORT Signature : public Data { | 3599 class V8EXPORT Signature : public Data { |
| 3629 public: | 3600 public: |
| 3630 static Local<Signature> New(Handle<FunctionTemplate> receiver = | 3601 static Local<Signature> New(Handle<FunctionTemplate> receiver = |
| 3631 Handle<FunctionTemplate>(), | 3602 Handle<FunctionTemplate>(), |
| 3632 int argc = 0, | 3603 int argc = 0, |
| 3633 Handle<FunctionTemplate> argv[] = 0); | 3604 Handle<FunctionTemplate> argv[] = 0); |
| 3634 private: | 3605 private: |
| 3635 Signature(); | 3606 Signature(); |
| 3636 }; | 3607 }; |
| 3637 | 3608 |
| 3638 | 3609 |
| 3639 /** | 3610 /** |
| 3640 * An AccessorSignature specifies which receivers are valid parameters | 3611 * An AccessorSignature specifies which receivers are valid parameters |
| 3641 * to an accessor callback. | 3612 * to an accessor callback. |
| 3642 */ | 3613 */ |
| 3643 class V8_EXPORT AccessorSignature : public Data { | 3614 class V8EXPORT AccessorSignature : public Data { |
| 3644 public: | 3615 public: |
| 3645 static Local<AccessorSignature> New(Handle<FunctionTemplate> receiver = | 3616 static Local<AccessorSignature> New(Handle<FunctionTemplate> receiver = |
| 3646 Handle<FunctionTemplate>()); | 3617 Handle<FunctionTemplate>()); |
| 3647 private: | 3618 private: |
| 3648 AccessorSignature(); | 3619 AccessorSignature(); |
| 3649 }; | 3620 }; |
| 3650 | 3621 |
| 3651 | 3622 |
| 3652 class V8_EXPORT DeclaredAccessorDescriptor : public Data { | 3623 class V8EXPORT DeclaredAccessorDescriptor : public Data { |
| 3653 private: | 3624 private: |
| 3654 DeclaredAccessorDescriptor(); | 3625 DeclaredAccessorDescriptor(); |
| 3655 }; | 3626 }; |
| 3656 | 3627 |
| 3657 | 3628 |
| 3658 class V8_EXPORT ObjectOperationDescriptor : public Data { | 3629 class V8EXPORT ObjectOperationDescriptor : public Data { |
| 3659 public: | 3630 public: |
| 3660 // This function is not yet stable and should not be used at this time. | 3631 // This function is not yet stable and should not be used at this time. |
| 3661 static Local<RawOperationDescriptor> NewInternalFieldDereference( | 3632 static Local<RawOperationDescriptor> NewInternalFieldDereference( |
| 3662 Isolate* isolate, | 3633 Isolate* isolate, |
| 3663 int internal_field); | 3634 int internal_field); |
| 3664 private: | 3635 private: |
| 3665 ObjectOperationDescriptor(); | 3636 ObjectOperationDescriptor(); |
| 3666 }; | 3637 }; |
| 3667 | 3638 |
| 3668 | 3639 |
| 3669 enum DeclaredAccessorDescriptorDataType { | 3640 enum DeclaredAccessorDescriptorDataType { |
| 3670 kDescriptorBoolType, | 3641 kDescriptorBoolType, |
| 3671 kDescriptorInt8Type, kDescriptorUint8Type, | 3642 kDescriptorInt8Type, kDescriptorUint8Type, |
| 3672 kDescriptorInt16Type, kDescriptorUint16Type, | 3643 kDescriptorInt16Type, kDescriptorUint16Type, |
| 3673 kDescriptorInt32Type, kDescriptorUint32Type, | 3644 kDescriptorInt32Type, kDescriptorUint32Type, |
| 3674 kDescriptorFloatType, kDescriptorDoubleType | 3645 kDescriptorFloatType, kDescriptorDoubleType |
| 3675 }; | 3646 }; |
| 3676 | 3647 |
| 3677 | 3648 |
| 3678 class V8_EXPORT RawOperationDescriptor : public Data { | 3649 class V8EXPORT RawOperationDescriptor : public Data { |
| 3679 public: | 3650 public: |
| 3680 Local<DeclaredAccessorDescriptor> NewHandleDereference(Isolate* isolate); | 3651 Local<DeclaredAccessorDescriptor> NewHandleDereference(Isolate* isolate); |
| 3681 Local<RawOperationDescriptor> NewRawDereference(Isolate* isolate); | 3652 Local<RawOperationDescriptor> NewRawDereference(Isolate* isolate); |
| 3682 Local<RawOperationDescriptor> NewRawShift(Isolate* isolate, | 3653 Local<RawOperationDescriptor> NewRawShift(Isolate* isolate, |
| 3683 int16_t byte_offset); | 3654 int16_t byte_offset); |
| 3684 Local<DeclaredAccessorDescriptor> NewPointerCompare(Isolate* isolate, | 3655 Local<DeclaredAccessorDescriptor> NewPointerCompare(Isolate* isolate, |
| 3685 void* compare_value); | 3656 void* compare_value); |
| 3686 Local<DeclaredAccessorDescriptor> NewPrimitiveValue( | 3657 Local<DeclaredAccessorDescriptor> NewPrimitiveValue( |
| 3687 Isolate* isolate, | 3658 Isolate* isolate, |
| 3688 DeclaredAccessorDescriptorDataType data_type, | 3659 DeclaredAccessorDescriptorDataType data_type, |
| (...skipping 12 matching lines...) Expand all Loading... |
| 3701 | 3672 |
| 3702 private: | 3673 private: |
| 3703 RawOperationDescriptor(); | 3674 RawOperationDescriptor(); |
| 3704 }; | 3675 }; |
| 3705 | 3676 |
| 3706 | 3677 |
| 3707 /** | 3678 /** |
| 3708 * A utility for determining the type of objects based on the template | 3679 * A utility for determining the type of objects based on the template |
| 3709 * they were constructed from. | 3680 * they were constructed from. |
| 3710 */ | 3681 */ |
| 3711 class V8_EXPORT TypeSwitch : public Data { | 3682 class V8EXPORT TypeSwitch : public Data { |
| 3712 public: | 3683 public: |
| 3713 static Local<TypeSwitch> New(Handle<FunctionTemplate> type); | 3684 static Local<TypeSwitch> New(Handle<FunctionTemplate> type); |
| 3714 static Local<TypeSwitch> New(int argc, Handle<FunctionTemplate> types[]); | 3685 static Local<TypeSwitch> New(int argc, Handle<FunctionTemplate> types[]); |
| 3715 int match(Handle<Value> value); | 3686 int match(Handle<Value> value); |
| 3716 private: | 3687 private: |
| 3717 TypeSwitch(); | 3688 TypeSwitch(); |
| 3718 }; | 3689 }; |
| 3719 | 3690 |
| 3720 | 3691 |
| 3721 // --- Extensions --- | 3692 // --- Extensions --- |
| 3722 | 3693 |
| 3723 class V8_EXPORT ExternalAsciiStringResourceImpl | 3694 class V8EXPORT ExternalAsciiStringResourceImpl |
| 3724 : public String::ExternalAsciiStringResource { | 3695 : public String::ExternalAsciiStringResource { |
| 3725 public: | 3696 public: |
| 3726 ExternalAsciiStringResourceImpl() : data_(0), length_(0) {} | 3697 ExternalAsciiStringResourceImpl() : data_(0), length_(0) {} |
| 3727 ExternalAsciiStringResourceImpl(const char* data, size_t length) | 3698 ExternalAsciiStringResourceImpl(const char* data, size_t length) |
| 3728 : data_(data), length_(length) {} | 3699 : data_(data), length_(length) {} |
| 3729 const char* data() const { return data_; } | 3700 const char* data() const { return data_; } |
| 3730 size_t length() const { return length_; } | 3701 size_t length() const { return length_; } |
| 3731 | 3702 |
| 3732 private: | 3703 private: |
| 3733 const char* data_; | 3704 const char* data_; |
| 3734 size_t length_; | 3705 size_t length_; |
| 3735 }; | 3706 }; |
| 3736 | 3707 |
| 3737 /** | 3708 /** |
| 3738 * Ignore | 3709 * Ignore |
| 3739 */ | 3710 */ |
| 3740 class V8_EXPORT Extension { // NOLINT | 3711 class V8EXPORT Extension { // NOLINT |
| 3741 public: | 3712 public: |
| 3742 // Note that the strings passed into this constructor must live as long | 3713 // Note that the strings passed into this constructor must live as long |
| 3743 // as the Extension itself. | 3714 // as the Extension itself. |
| 3744 Extension(const char* name, | 3715 Extension(const char* name, |
| 3745 const char* source = 0, | 3716 const char* source = 0, |
| 3746 int dep_count = 0, | 3717 int dep_count = 0, |
| 3747 const char** deps = 0, | 3718 const char** deps = 0, |
| 3748 int source_length = -1); | 3719 int source_length = -1); |
| 3749 virtual ~Extension() { } | 3720 virtual ~Extension() { } |
| 3750 virtual v8::Handle<v8::FunctionTemplate> | 3721 virtual v8::Handle<v8::FunctionTemplate> |
| (...skipping 17 matching lines...) Expand all Loading... |
| 3768 int dep_count_; | 3739 int dep_count_; |
| 3769 const char** deps_; | 3740 const char** deps_; |
| 3770 bool auto_enable_; | 3741 bool auto_enable_; |
| 3771 | 3742 |
| 3772 // Disallow copying and assigning. | 3743 // Disallow copying and assigning. |
| 3773 Extension(const Extension&); | 3744 Extension(const Extension&); |
| 3774 void operator=(const Extension&); | 3745 void operator=(const Extension&); |
| 3775 }; | 3746 }; |
| 3776 | 3747 |
| 3777 | 3748 |
| 3778 void V8_EXPORT RegisterExtension(Extension* extension); | 3749 void V8EXPORT RegisterExtension(Extension* extension); |
| 3779 | 3750 |
| 3780 | 3751 |
| 3781 /** | 3752 /** |
| 3782 * Ignore | 3753 * Ignore |
| 3783 */ | 3754 */ |
| 3784 class V8_EXPORT DeclareExtension { | 3755 class V8EXPORT DeclareExtension { |
| 3785 public: | 3756 public: |
| 3786 V8_INLINE(DeclareExtension(Extension* extension)) { | 3757 V8_INLINE(DeclareExtension(Extension* extension)) { |
| 3787 RegisterExtension(extension); | 3758 RegisterExtension(extension); |
| 3788 } | 3759 } |
| 3789 }; | 3760 }; |
| 3790 | 3761 |
| 3791 | 3762 |
| 3792 // --- Statics --- | 3763 // --- Statics --- |
| 3793 | 3764 |
| 3794 | 3765 |
| 3795 Handle<Primitive> V8_EXPORT Undefined(); | 3766 Handle<Primitive> V8EXPORT Undefined(); |
| 3796 Handle<Primitive> V8_EXPORT Null(); | 3767 Handle<Primitive> V8EXPORT Null(); |
| 3797 Handle<Boolean> V8_EXPORT True(); | 3768 Handle<Boolean> V8EXPORT True(); |
| 3798 Handle<Boolean> V8_EXPORT False(); | 3769 Handle<Boolean> V8EXPORT False(); |
| 3799 | 3770 |
| 3800 V8_INLINE(Handle<Primitive> Undefined(Isolate* isolate)); | 3771 V8_INLINE(Handle<Primitive> Undefined(Isolate* isolate)); |
| 3801 V8_INLINE(Handle<Primitive> Null(Isolate* isolate)); | 3772 V8_INLINE(Handle<Primitive> Null(Isolate* isolate)); |
| 3802 V8_INLINE(Handle<Boolean> True(Isolate* isolate)); | 3773 V8_INLINE(Handle<Boolean> True(Isolate* isolate)); |
| 3803 V8_INLINE(Handle<Boolean> False(Isolate* isolate)); | 3774 V8_INLINE(Handle<Boolean> False(Isolate* isolate)); |
| 3804 | 3775 |
| 3805 | 3776 |
| 3806 /** | 3777 /** |
| 3807 * A set of constraints that specifies the limits of the runtime's memory use. | 3778 * A set of constraints that specifies the limits of the runtime's memory use. |
| 3808 * You must set the heap size before initializing the VM - the size cannot be | 3779 * You must set the heap size before initializing the VM - the size cannot be |
| 3809 * adjusted after the VM is initialized. | 3780 * adjusted after the VM is initialized. |
| 3810 * | 3781 * |
| 3811 * If you are using threads then you should hold the V8::Locker lock while | 3782 * If you are using threads then you should hold the V8::Locker lock while |
| 3812 * setting the stack limit and you must set a non-default stack limit separately | 3783 * setting the stack limit and you must set a non-default stack limit separately |
| 3813 * for each thread. | 3784 * for each thread. |
| 3814 */ | 3785 */ |
| 3815 class V8_EXPORT ResourceConstraints { | 3786 class V8EXPORT ResourceConstraints { |
| 3816 public: | 3787 public: |
| 3817 ResourceConstraints(); | 3788 ResourceConstraints(); |
| 3818 int max_young_space_size() const { return max_young_space_size_; } | 3789 int max_young_space_size() const { return max_young_space_size_; } |
| 3819 void set_max_young_space_size(int value) { max_young_space_size_ = value; } | 3790 void set_max_young_space_size(int value) { max_young_space_size_ = value; } |
| 3820 int max_old_space_size() const { return max_old_space_size_; } | 3791 int max_old_space_size() const { return max_old_space_size_; } |
| 3821 void set_max_old_space_size(int value) { max_old_space_size_ = value; } | 3792 void set_max_old_space_size(int value) { max_old_space_size_ = value; } |
| 3822 int max_executable_size() { return max_executable_size_; } | 3793 int max_executable_size() { return max_executable_size_; } |
| 3823 void set_max_executable_size(int value) { max_executable_size_ = value; } | 3794 void set_max_executable_size(int value) { max_executable_size_ = value; } |
| 3824 uint32_t* stack_limit() const { return stack_limit_; } | 3795 uint32_t* stack_limit() const { return stack_limit_; } |
| 3825 // Sets an address beyond which the VM's stack may not grow. | 3796 // Sets an address beyond which the VM's stack may not grow. |
| 3826 void set_stack_limit(uint32_t* value) { stack_limit_ = value; } | 3797 void set_stack_limit(uint32_t* value) { stack_limit_ = value; } |
| 3827 private: | 3798 private: |
| 3828 int max_young_space_size_; | 3799 int max_young_space_size_; |
| 3829 int max_old_space_size_; | 3800 int max_old_space_size_; |
| 3830 int max_executable_size_; | 3801 int max_executable_size_; |
| 3831 uint32_t* stack_limit_; | 3802 uint32_t* stack_limit_; |
| 3832 }; | 3803 }; |
| 3833 | 3804 |
| 3834 | 3805 |
| 3835 bool V8_EXPORT SetResourceConstraints(ResourceConstraints* constraints); | 3806 bool V8EXPORT SetResourceConstraints(ResourceConstraints* constraints); |
| 3836 | 3807 |
| 3837 | 3808 |
| 3838 // --- Exceptions --- | 3809 // --- Exceptions --- |
| 3839 | 3810 |
| 3840 | 3811 |
| 3841 typedef void (*FatalErrorCallback)(const char* location, const char* message); | 3812 typedef void (*FatalErrorCallback)(const char* location, const char* message); |
| 3842 | 3813 |
| 3843 | 3814 |
| 3844 typedef void (*MessageCallback)(Handle<Message> message, Handle<Value> error); | 3815 typedef void (*MessageCallback)(Handle<Message> message, Handle<Value> error); |
| 3845 | 3816 |
| 3846 | 3817 |
| 3847 /** | 3818 /** |
| 3848 * Schedules an exception to be thrown when returning to JavaScript. When an | 3819 * Schedules an exception to be thrown when returning to JavaScript. When an |
| 3849 * exception has been scheduled it is illegal to invoke any JavaScript | 3820 * exception has been scheduled it is illegal to invoke any JavaScript |
| 3850 * operation; the caller must return immediately and only after the exception | 3821 * operation; the caller must return immediately and only after the exception |
| 3851 * has been handled does it become legal to invoke JavaScript operations. | 3822 * has been handled does it become legal to invoke JavaScript operations. |
| 3852 */ | 3823 */ |
| 3853 Handle<Value> V8_EXPORT ThrowException(Handle<Value> exception); | 3824 Handle<Value> V8EXPORT ThrowException(Handle<Value> exception); |
| 3854 | 3825 |
| 3855 /** | 3826 /** |
| 3856 * Create new error objects by calling the corresponding error object | 3827 * Create new error objects by calling the corresponding error object |
| 3857 * constructor with the message. | 3828 * constructor with the message. |
| 3858 */ | 3829 */ |
| 3859 class V8_EXPORT Exception { | 3830 class V8EXPORT Exception { |
| 3860 public: | 3831 public: |
| 3861 static Local<Value> RangeError(Handle<String> message); | 3832 static Local<Value> RangeError(Handle<String> message); |
| 3862 static Local<Value> ReferenceError(Handle<String> message); | 3833 static Local<Value> ReferenceError(Handle<String> message); |
| 3863 static Local<Value> SyntaxError(Handle<String> message); | 3834 static Local<Value> SyntaxError(Handle<String> message); |
| 3864 static Local<Value> TypeError(Handle<String> message); | 3835 static Local<Value> TypeError(Handle<String> message); |
| 3865 static Local<Value> Error(Handle<String> message); | 3836 static Local<Value> Error(Handle<String> message); |
| 3866 }; | 3837 }; |
| 3867 | 3838 |
| 3868 | 3839 |
| 3869 // --- Counters Callbacks --- | 3840 // --- Counters Callbacks --- |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3943 | 3914 |
| 3944 typedef void (*GCCallback)(); | 3915 typedef void (*GCCallback)(); |
| 3945 | 3916 |
| 3946 | 3917 |
| 3947 /** | 3918 /** |
| 3948 * Collection of V8 heap information. | 3919 * Collection of V8 heap information. |
| 3949 * | 3920 * |
| 3950 * Instances of this class can be passed to v8::V8::HeapStatistics to | 3921 * Instances of this class can be passed to v8::V8::HeapStatistics to |
| 3951 * get heap statistics from V8. | 3922 * get heap statistics from V8. |
| 3952 */ | 3923 */ |
| 3953 class V8_EXPORT HeapStatistics { | 3924 class V8EXPORT HeapStatistics { |
| 3954 public: | 3925 public: |
| 3955 HeapStatistics(); | 3926 HeapStatistics(); |
| 3956 size_t total_heap_size() { return total_heap_size_; } | 3927 size_t total_heap_size() { return total_heap_size_; } |
| 3957 size_t total_heap_size_executable() { return total_heap_size_executable_; } | 3928 size_t total_heap_size_executable() { return total_heap_size_executable_; } |
| 3958 size_t total_physical_size() { return total_physical_size_; } | 3929 size_t total_physical_size() { return total_physical_size_; } |
| 3959 size_t used_heap_size() { return used_heap_size_; } | 3930 size_t used_heap_size() { return used_heap_size_; } |
| 3960 size_t heap_size_limit() { return heap_size_limit_; } | 3931 size_t heap_size_limit() { return heap_size_limit_; } |
| 3961 | 3932 |
| 3962 private: | 3933 private: |
| 3963 size_t total_heap_size_; | 3934 size_t total_heap_size_; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 3975 | 3946 |
| 3976 /** | 3947 /** |
| 3977 * Isolate represents an isolated instance of the V8 engine. V8 | 3948 * Isolate represents an isolated instance of the V8 engine. V8 |
| 3978 * isolates have completely separate states. Objects from one isolate | 3949 * isolates have completely separate states. Objects from one isolate |
| 3979 * must not be used in other isolates. When V8 is initialized a | 3950 * must not be used in other isolates. When V8 is initialized a |
| 3980 * default isolate is implicitly created and entered. The embedder | 3951 * default isolate is implicitly created and entered. The embedder |
| 3981 * can create additional isolates and use them in parallel in multiple | 3952 * can create additional isolates and use them in parallel in multiple |
| 3982 * threads. An isolate can be entered by at most one thread at any | 3953 * threads. An isolate can be entered by at most one thread at any |
| 3983 * given time. The Locker/Unlocker API must be used to synchronize. | 3954 * given time. The Locker/Unlocker API must be used to synchronize. |
| 3984 */ | 3955 */ |
| 3985 class V8_EXPORT Isolate { | 3956 class V8EXPORT Isolate { |
| 3986 public: | 3957 public: |
| 3987 /** | 3958 /** |
| 3988 * Stack-allocated class which sets the isolate for all operations | 3959 * Stack-allocated class which sets the isolate for all operations |
| 3989 * executed within a local scope. | 3960 * executed within a local scope. |
| 3990 */ | 3961 */ |
| 3991 class V8_EXPORT Scope { | 3962 class V8EXPORT Scope { |
| 3992 public: | 3963 public: |
| 3993 explicit Scope(Isolate* isolate) : isolate_(isolate) { | 3964 explicit Scope(Isolate* isolate) : isolate_(isolate) { |
| 3994 isolate->Enter(); | 3965 isolate->Enter(); |
| 3995 } | 3966 } |
| 3996 | 3967 |
| 3997 ~Scope() { isolate_->Exit(); } | 3968 ~Scope() { isolate_->Exit(); } |
| 3998 | 3969 |
| 3999 private: | 3970 private: |
| 4000 Isolate* const isolate_; | 3971 Isolate* const isolate_; |
| 4001 | 3972 |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4129 private: | 4100 private: |
| 4130 Isolate(); | 4101 Isolate(); |
| 4131 Isolate(const Isolate&); | 4102 Isolate(const Isolate&); |
| 4132 ~Isolate(); | 4103 ~Isolate(); |
| 4133 Isolate& operator=(const Isolate&); | 4104 Isolate& operator=(const Isolate&); |
| 4134 void* operator new(size_t size); | 4105 void* operator new(size_t size); |
| 4135 void operator delete(void*, size_t); | 4106 void operator delete(void*, size_t); |
| 4136 }; | 4107 }; |
| 4137 | 4108 |
| 4138 | 4109 |
| 4139 class V8_EXPORT StartupData { | 4110 class V8EXPORT StartupData { |
| 4140 public: | 4111 public: |
| 4141 enum CompressionAlgorithm { | 4112 enum CompressionAlgorithm { |
| 4142 kUncompressed, | 4113 kUncompressed, |
| 4143 kBZip2 | 4114 kBZip2 |
| 4144 }; | 4115 }; |
| 4145 | 4116 |
| 4146 const char* data; | 4117 const char* data; |
| 4147 int compressed_size; | 4118 int compressed_size; |
| 4148 int raw_size; | 4119 int raw_size; |
| 4149 }; | 4120 }; |
| 4150 | 4121 |
| 4151 | 4122 |
| 4152 /** | 4123 /** |
| 4153 * A helper class for driving V8 startup data decompression. It is based on | 4124 * A helper class for driving V8 startup data decompression. It is based on |
| 4154 * "CompressedStartupData" API functions from the V8 class. It isn't mandatory | 4125 * "CompressedStartupData" API functions from the V8 class. It isn't mandatory |
| 4155 * for an embedder to use this class, instead, API functions can be used | 4126 * for an embedder to use this class, instead, API functions can be used |
| 4156 * directly. | 4127 * directly. |
| 4157 * | 4128 * |
| 4158 * For an example of the class usage, see the "shell.cc" sample application. | 4129 * For an example of the class usage, see the "shell.cc" sample application. |
| 4159 */ | 4130 */ |
| 4160 class V8_EXPORT StartupDataDecompressor { // NOLINT | 4131 class V8EXPORT StartupDataDecompressor { // NOLINT |
| 4161 public: | 4132 public: |
| 4162 StartupDataDecompressor(); | 4133 StartupDataDecompressor(); |
| 4163 virtual ~StartupDataDecompressor(); | 4134 virtual ~StartupDataDecompressor(); |
| 4164 int Decompress(); | 4135 int Decompress(); |
| 4165 | 4136 |
| 4166 protected: | 4137 protected: |
| 4167 virtual int DecompressData(char* raw_data, | 4138 virtual int DecompressData(char* raw_data, |
| 4168 int* raw_data_size, | 4139 int* raw_data_size, |
| 4169 const char* compressed_data, | 4140 const char* compressed_data, |
| 4170 int compressed_data_size) = 0; | 4141 int compressed_data_size) = 0; |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4294 * Callback function passed to SetJitCodeEventHandler. | 4265 * Callback function passed to SetJitCodeEventHandler. |
| 4295 * | 4266 * |
| 4296 * \param event code add, move or removal event. | 4267 * \param event code add, move or removal event. |
| 4297 */ | 4268 */ |
| 4298 typedef void (*JitCodeEventHandler)(const JitCodeEvent* event); | 4269 typedef void (*JitCodeEventHandler)(const JitCodeEvent* event); |
| 4299 | 4270 |
| 4300 | 4271 |
| 4301 /** | 4272 /** |
| 4302 * Interface for iterating through all external resources in the heap. | 4273 * Interface for iterating through all external resources in the heap. |
| 4303 */ | 4274 */ |
| 4304 class V8_EXPORT ExternalResourceVisitor { // NOLINT | 4275 class V8EXPORT ExternalResourceVisitor { // NOLINT |
| 4305 public: | 4276 public: |
| 4306 virtual ~ExternalResourceVisitor() {} | 4277 virtual ~ExternalResourceVisitor() {} |
| 4307 virtual void VisitExternalString(Handle<String> string) {} | 4278 virtual void VisitExternalString(Handle<String> string) {} |
| 4308 }; | 4279 }; |
| 4309 | 4280 |
| 4310 | 4281 |
| 4311 /** | 4282 /** |
| 4312 * Interface for iterating through all the persistent handles in the heap. | 4283 * Interface for iterating through all the persistent handles in the heap. |
| 4313 */ | 4284 */ |
| 4314 class V8_EXPORT PersistentHandleVisitor { // NOLINT | 4285 class V8EXPORT PersistentHandleVisitor { // NOLINT |
| 4315 public: | 4286 public: |
| 4316 virtual ~PersistentHandleVisitor() {} | 4287 virtual ~PersistentHandleVisitor() {} |
| 4317 virtual void VisitPersistentHandle(Persistent<Value>* value, | 4288 virtual void VisitPersistentHandle(Persistent<Value>* value, |
| 4318 uint16_t class_id) {} | 4289 uint16_t class_id) {} |
| 4319 }; | 4290 }; |
| 4320 | 4291 |
| 4321 | 4292 |
| 4322 /** | 4293 /** |
| 4323 * Asserts that no action is performed that could cause a handle's value | 4294 * Asserts that no action is performed that could cause a handle's value |
| 4324 * to be modified. Useful when otherwise unsafe handle operations need to | 4295 * to be modified. Useful when otherwise unsafe handle operations need to |
| 4325 * be performed. | 4296 * be performed. |
| 4326 */ | 4297 */ |
| 4327 class V8_EXPORT AssertNoGCScope { | 4298 class V8EXPORT AssertNoGCScope { |
| 4328 #ifndef DEBUG | 4299 #ifndef DEBUG |
| 4329 // TODO(yangguo): remove isolate argument. | 4300 // TODO(yangguo): remove isolate argument. |
| 4330 V8_INLINE(AssertNoGCScope(Isolate* isolate)) { } | 4301 V8_INLINE(AssertNoGCScope(Isolate* isolate)) { } |
| 4331 #else | 4302 #else |
| 4332 AssertNoGCScope(Isolate* isolate); | 4303 AssertNoGCScope(Isolate* isolate); |
| 4333 ~AssertNoGCScope(); | 4304 ~AssertNoGCScope(); |
| 4334 private: | 4305 private: |
| 4335 void* disallow_heap_allocation_; | 4306 void* disallow_heap_allocation_; |
| 4336 #endif | 4307 #endif |
| 4337 }; | 4308 }; |
| 4338 | 4309 |
| 4339 | 4310 |
| 4340 /** | 4311 /** |
| 4341 * Container class for static utility functions. | 4312 * Container class for static utility functions. |
| 4342 */ | 4313 */ |
| 4343 class V8_EXPORT V8 { | 4314 class V8EXPORT V8 { |
| 4344 public: | 4315 public: |
| 4345 /** Set the callback to invoke in case of fatal errors. */ | 4316 /** Set the callback to invoke in case of fatal errors. */ |
| 4346 static void SetFatalErrorHandler(FatalErrorCallback that); | 4317 static void SetFatalErrorHandler(FatalErrorCallback that); |
| 4347 | 4318 |
| 4348 /** | 4319 /** |
| 4349 * Set the callback to invoke to check if code generation from | 4320 * Set the callback to invoke to check if code generation from |
| 4350 * strings should be allowed. | 4321 * strings should be allowed. |
| 4351 */ | 4322 */ |
| 4352 static void SetAllowCodeGenerationFromStringsCallback( | 4323 static void SetAllowCodeGenerationFromStringsCallback( |
| 4353 AllowCodeGenerationFromStringsCallback that); | 4324 AllowCodeGenerationFromStringsCallback that); |
| (...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4790 V8(); | 4761 V8(); |
| 4791 | 4762 |
| 4792 static internal::Object** GlobalizeReference(internal::Isolate* isolate, | 4763 static internal::Object** GlobalizeReference(internal::Isolate* isolate, |
| 4793 internal::Object** handle); | 4764 internal::Object** handle); |
| 4794 static void DisposeGlobal(internal::Object** global_handle); | 4765 static void DisposeGlobal(internal::Object** global_handle); |
| 4795 typedef WeakReferenceCallbacks<Value, void>::Revivable RevivableCallback; | 4766 typedef WeakReferenceCallbacks<Value, void>::Revivable RevivableCallback; |
| 4796 static void MakeWeak(internal::Object** global_handle, | 4767 static void MakeWeak(internal::Object** global_handle, |
| 4797 void* data, | 4768 void* data, |
| 4798 RevivableCallback weak_reference_callback); | 4769 RevivableCallback weak_reference_callback); |
| 4799 static void ClearWeak(internal::Object** global_handle); | 4770 static void ClearWeak(internal::Object** global_handle); |
| 4800 static int Eternalize(internal::Isolate* isolate, | |
| 4801 internal::Object** handle); | |
| 4802 static internal::Object** GetEternal(internal::Isolate* isolate, int index); | |
| 4803 | 4771 |
| 4804 template <class T> friend class Handle; | 4772 template <class T> friend class Handle; |
| 4805 template <class T> friend class Local; | 4773 template <class T> friend class Local; |
| 4806 template <class T> friend class Persistent; | 4774 template <class T> friend class Persistent; |
| 4807 friend class Context; | 4775 friend class Context; |
| 4808 }; | 4776 }; |
| 4809 | 4777 |
| 4810 | 4778 |
| 4811 /** | 4779 /** |
| 4812 * An external exception handler. | 4780 * An external exception handler. |
| 4813 */ | 4781 */ |
| 4814 class V8_EXPORT TryCatch { | 4782 class V8EXPORT TryCatch { |
| 4815 public: | 4783 public: |
| 4816 /** | 4784 /** |
| 4817 * Creates a new try/catch block and registers it with v8. Note that | 4785 * Creates a new try/catch block and registers it with v8. Note that |
| 4818 * all TryCatch blocks should be stack allocated because the memory | 4786 * all TryCatch blocks should be stack allocated because the memory |
| 4819 * location itself is compared against JavaScript try/catch blocks. | 4787 * location itself is compared against JavaScript try/catch blocks. |
| 4820 */ | 4788 */ |
| 4821 TryCatch(); | 4789 TryCatch(); |
| 4822 | 4790 |
| 4823 /** | 4791 /** |
| 4824 * Unregisters and deletes this try/catch block. | 4792 * Unregisters and deletes this try/catch block. |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4937 friend class v8::internal::Isolate; | 4905 friend class v8::internal::Isolate; |
| 4938 }; | 4906 }; |
| 4939 | 4907 |
| 4940 | 4908 |
| 4941 // --- Context --- | 4909 // --- Context --- |
| 4942 | 4910 |
| 4943 | 4911 |
| 4944 /** | 4912 /** |
| 4945 * Ignore | 4913 * Ignore |
| 4946 */ | 4914 */ |
| 4947 class V8_EXPORT ExtensionConfiguration { | 4915 class V8EXPORT ExtensionConfiguration { |
| 4948 public: | 4916 public: |
| 4949 ExtensionConfiguration(int name_count, const char* names[]) | 4917 ExtensionConfiguration(int name_count, const char* names[]) |
| 4950 : name_count_(name_count), names_(names) { } | 4918 : name_count_(name_count), names_(names) { } |
| 4951 private: | 4919 private: |
| 4952 friend class ImplementationUtilities; | 4920 friend class ImplementationUtilities; |
| 4953 int name_count_; | 4921 int name_count_; |
| 4954 const char** names_; | 4922 const char** names_; |
| 4955 }; | 4923 }; |
| 4956 | 4924 |
| 4957 | 4925 |
| 4958 /** | 4926 /** |
| 4959 * A sandboxed execution context with its own set of built-in objects | 4927 * A sandboxed execution context with its own set of built-in objects |
| 4960 * and functions. | 4928 * and functions. |
| 4961 */ | 4929 */ |
| 4962 class V8_EXPORT Context { | 4930 class V8EXPORT Context { |
| 4963 public: | 4931 public: |
| 4964 /** | 4932 /** |
| 4965 * Returns the global proxy object or global object itself for | 4933 * Returns the global proxy object or global object itself for |
| 4966 * detached contexts. | 4934 * detached contexts. |
| 4967 * | 4935 * |
| 4968 * Global proxy object is a thin wrapper whose prototype points to | 4936 * Global proxy object is a thin wrapper whose prototype points to |
| 4969 * actual context's global object with the properties like Object, etc. | 4937 * actual context's global object with the properties like Object, etc. |
| 4970 * This is done that way for security reasons (for more details see | 4938 * This is done that way for security reasons (for more details see |
| 4971 * https://wiki.mozilla.org/Gecko:SplitWindow). | 4939 * https://wiki.mozilla.org/Gecko:SplitWindow). |
| 4972 * | 4940 * |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5237 * // V8 not locked. | 5205 * // V8 not locked. |
| 5238 * } | 5206 * } |
| 5239 * isolate->Enter(); | 5207 * isolate->Enter(); |
| 5240 * // V8 locked again (2 levels). | 5208 * // V8 locked again (2 levels). |
| 5241 * } | 5209 * } |
| 5242 * // V8 still locked (1 level). | 5210 * // V8 still locked (1 level). |
| 5243 * } | 5211 * } |
| 5244 * // V8 Now no longer locked. | 5212 * // V8 Now no longer locked. |
| 5245 * \endcode | 5213 * \endcode |
| 5246 */ | 5214 */ |
| 5247 class V8_EXPORT Unlocker { | 5215 class V8EXPORT Unlocker { |
| 5248 public: | 5216 public: |
| 5249 /** | 5217 /** |
| 5250 * Initialize Unlocker for a given Isolate. | 5218 * Initialize Unlocker for a given Isolate. |
| 5251 */ | 5219 */ |
| 5252 V8_INLINE(explicit Unlocker(Isolate* isolate)) { Initialize(isolate); } | 5220 V8_INLINE(explicit Unlocker(Isolate* isolate)) { Initialize(isolate); } |
| 5253 | 5221 |
| 5254 /** Deprecated. Use Isolate version instead. */ | 5222 /** Deprecated. Use Isolate version instead. */ |
| 5255 V8_DEPRECATED(Unlocker()); | 5223 V8_DEPRECATED(Unlocker()); |
| 5256 | 5224 |
| 5257 ~Unlocker(); | 5225 ~Unlocker(); |
| 5258 private: | 5226 private: |
| 5259 void Initialize(Isolate* isolate); | 5227 void Initialize(Isolate* isolate); |
| 5260 | 5228 |
| 5261 internal::Isolate* isolate_; | 5229 internal::Isolate* isolate_; |
| 5262 }; | 5230 }; |
| 5263 | 5231 |
| 5264 | 5232 |
| 5265 class V8_EXPORT Locker { | 5233 class V8EXPORT Locker { |
| 5266 public: | 5234 public: |
| 5267 /** | 5235 /** |
| 5268 * Initialize Locker for a given Isolate. | 5236 * Initialize Locker for a given Isolate. |
| 5269 */ | 5237 */ |
| 5270 V8_INLINE(explicit Locker(Isolate* isolate)) { Initialize(isolate); } | 5238 V8_INLINE(explicit Locker(Isolate* isolate)) { Initialize(isolate); } |
| 5271 | 5239 |
| 5272 /** Deprecated. Use Isolate version instead. */ | 5240 /** Deprecated. Use Isolate version instead. */ |
| 5273 V8_DEPRECATED(Locker()); | 5241 V8_DEPRECATED(Locker()); |
| 5274 | 5242 |
| 5275 ~Locker(); | 5243 ~Locker(); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5316 | 5284 |
| 5317 /** | 5285 /** |
| 5318 * A struct for exporting HeapStats data from V8, using "push" model. | 5286 * A struct for exporting HeapStats data from V8, using "push" model. |
| 5319 */ | 5287 */ |
| 5320 struct HeapStatsUpdate; | 5288 struct HeapStatsUpdate; |
| 5321 | 5289 |
| 5322 | 5290 |
| 5323 /** | 5291 /** |
| 5324 * An interface for exporting data from V8, using "push" model. | 5292 * An interface for exporting data from V8, using "push" model. |
| 5325 */ | 5293 */ |
| 5326 class V8_EXPORT OutputStream { // NOLINT | 5294 class V8EXPORT OutputStream { // NOLINT |
| 5327 public: | 5295 public: |
| 5328 enum OutputEncoding { | 5296 enum OutputEncoding { |
| 5329 kAscii = 0 // 7-bit ASCII. | 5297 kAscii = 0 // 7-bit ASCII. |
| 5330 }; | 5298 }; |
| 5331 enum WriteResult { | 5299 enum WriteResult { |
| 5332 kContinue = 0, | 5300 kContinue = 0, |
| 5333 kAbort = 1 | 5301 kAbort = 1 |
| 5334 }; | 5302 }; |
| 5335 virtual ~OutputStream() {} | 5303 virtual ~OutputStream() {} |
| 5336 /** Notify about the end of stream. */ | 5304 /** Notify about the end of stream. */ |
| (...skipping 16 matching lines...) Expand all Loading... |
| 5353 virtual WriteResult WriteHeapStatsChunk(HeapStatsUpdate* data, int count) { | 5321 virtual WriteResult WriteHeapStatsChunk(HeapStatsUpdate* data, int count) { |
| 5354 return kAbort; | 5322 return kAbort; |
| 5355 }; | 5323 }; |
| 5356 }; | 5324 }; |
| 5357 | 5325 |
| 5358 | 5326 |
| 5359 /** | 5327 /** |
| 5360 * An interface for reporting progress and controlling long-running | 5328 * An interface for reporting progress and controlling long-running |
| 5361 * activities. | 5329 * activities. |
| 5362 */ | 5330 */ |
| 5363 class V8_EXPORT ActivityControl { // NOLINT | 5331 class V8EXPORT ActivityControl { // NOLINT |
| 5364 public: | 5332 public: |
| 5365 enum ControlOption { | 5333 enum ControlOption { |
| 5366 kContinue = 0, | 5334 kContinue = 0, |
| 5367 kAbort = 1 | 5335 kAbort = 1 |
| 5368 }; | 5336 }; |
| 5369 virtual ~ActivityControl() {} | 5337 virtual ~ActivityControl() {} |
| 5370 /** | 5338 /** |
| 5371 * Notify about current progress. The activity can be stopped by | 5339 * Notify about current progress. The activity can be stopped by |
| 5372 * returning kAbort as the callback result. | 5340 * returning kAbort as the callback result. |
| 5373 */ | 5341 */ |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5476 static const int kStringEncodingMask = 0x4; | 5444 static const int kStringEncodingMask = 0x4; |
| 5477 static const int kExternalTwoByteRepresentationTag = 0x02; | 5445 static const int kExternalTwoByteRepresentationTag = 0x02; |
| 5478 static const int kExternalAsciiRepresentationTag = 0x06; | 5446 static const int kExternalAsciiRepresentationTag = 0x06; |
| 5479 | 5447 |
| 5480 static const int kIsolateEmbedderDataOffset = 1 * kApiPointerSize; | 5448 static const int kIsolateEmbedderDataOffset = 1 * kApiPointerSize; |
| 5481 static const int kIsolateRootsOffset = 3 * kApiPointerSize; | 5449 static const int kIsolateRootsOffset = 3 * kApiPointerSize; |
| 5482 static const int kUndefinedValueRootIndex = 5; | 5450 static const int kUndefinedValueRootIndex = 5; |
| 5483 static const int kNullValueRootIndex = 7; | 5451 static const int kNullValueRootIndex = 7; |
| 5484 static const int kTrueValueRootIndex = 8; | 5452 static const int kTrueValueRootIndex = 8; |
| 5485 static const int kFalseValueRootIndex = 9; | 5453 static const int kFalseValueRootIndex = 9; |
| 5486 static const int kEmptyStringRootIndex = 133; | 5454 static const int kEmptyStringRootIndex = 135; |
| 5487 | 5455 |
| 5488 static const int kNodeClassIdOffset = 1 * kApiPointerSize; | 5456 static const int kNodeClassIdOffset = 1 * kApiPointerSize; |
| 5489 static const int kNodeFlagsOffset = 1 * kApiPointerSize + 3; | 5457 static const int kNodeFlagsOffset = 1 * kApiPointerSize + 3; |
| 5490 static const int kNodeStateMask = 0xf; | 5458 static const int kNodeStateMask = 0xf; |
| 5491 static const int kNodeStateIsWeakValue = 2; | 5459 static const int kNodeStateIsWeakValue = 2; |
| 5492 static const int kNodeStateIsPendingValue = 3; | |
| 5493 static const int kNodeStateIsNearDeathValue = 4; | 5460 static const int kNodeStateIsNearDeathValue = 4; |
| 5494 static const int kNodeIsIndependentShift = 4; | 5461 static const int kNodeIsIndependentShift = 4; |
| 5495 static const int kNodeIsPartiallyDependentShift = 5; | 5462 static const int kNodeIsPartiallyDependentShift = 5; |
| 5496 | 5463 |
| 5497 static const int kJSObjectType = 0xb1; | 5464 static const int kJSObjectType = 0xb1; |
| 5498 static const int kFirstNonstringType = 0x80; | 5465 static const int kFirstNonstringType = 0x80; |
| 5499 static const int kOddballType = 0x83; | 5466 static const int kOddballType = 0x83; |
| 5500 static const int kForeignType = 0x87; | 5467 static const int kForeignType = 0x87; |
| 5501 | 5468 |
| 5502 static const int kUndefinedOddballKind = 5; | 5469 static const int kUndefinedOddballKind = 5; |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5656 template <class T> | 5623 template <class T> |
| 5657 Local<T> Local<T>::New(Isolate* isolate, T* that) { | 5624 Local<T> Local<T>::New(Isolate* isolate, T* that) { |
| 5658 if (that == NULL) return Local<T>(); | 5625 if (that == NULL) return Local<T>(); |
| 5659 T* that_ptr = that; | 5626 T* that_ptr = that; |
| 5660 internal::Object** p = reinterpret_cast<internal::Object**>(that_ptr); | 5627 internal::Object** p = reinterpret_cast<internal::Object**>(that_ptr); |
| 5661 return Local<T>(reinterpret_cast<T*>(HandleScope::CreateHandle( | 5628 return Local<T>(reinterpret_cast<T*>(HandleScope::CreateHandle( |
| 5662 reinterpret_cast<internal::Isolate*>(isolate), *p))); | 5629 reinterpret_cast<internal::Isolate*>(isolate), *p))); |
| 5663 } | 5630 } |
| 5664 | 5631 |
| 5665 | 5632 |
| 5666 template<class T> | |
| 5667 int Local<T>::Eternalize(Isolate* isolate) { | |
| 5668 return V8::Eternalize(reinterpret_cast<internal::Isolate*>(isolate), | |
| 5669 reinterpret_cast<internal::Object**>(this->val_)); | |
| 5670 } | |
| 5671 | |
| 5672 | |
| 5673 template<class T> | |
| 5674 Local<T> Local<T>::GetEternal(Isolate* isolate, int index) { | |
| 5675 internal::Object** handle = | |
| 5676 V8::GetEternal(reinterpret_cast<internal::Isolate*>(isolate), index); | |
| 5677 return Local<T>(T::Cast(reinterpret_cast<Value*>(handle))); | |
| 5678 } | |
| 5679 | |
| 5680 | |
| 5681 #ifdef V8_USE_UNSAFE_HANDLES | 5633 #ifdef V8_USE_UNSAFE_HANDLES |
| 5682 template <class T> | 5634 template <class T> |
| 5683 Persistent<T> Persistent<T>::New(Handle<T> that) { | 5635 Persistent<T> Persistent<T>::New(Handle<T> that) { |
| 5684 return New(Isolate::GetCurrent(), that.val_); | 5636 return New(Isolate::GetCurrent(), that.val_); |
| 5685 } | 5637 } |
| 5686 | 5638 |
| 5687 | 5639 |
| 5688 template <class T> | 5640 template <class T> |
| 5689 Persistent<T> Persistent<T>::New(Isolate* isolate, Handle<T> that) { | 5641 Persistent<T> Persistent<T>::New(Isolate* isolate, Handle<T> that) { |
| 5690 return New(Isolate::GetCurrent(), that.val_); | 5642 return New(Isolate::GetCurrent(), that.val_); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 5713 if (this->IsEmpty()) return false; | 5665 if (this->IsEmpty()) return false; |
| 5714 return I::GetNodeFlag(reinterpret_cast<internal::Object**>(this->val_), | 5666 return I::GetNodeFlag(reinterpret_cast<internal::Object**>(this->val_), |
| 5715 I::kNodeIsIndependentShift); | 5667 I::kNodeIsIndependentShift); |
| 5716 } | 5668 } |
| 5717 | 5669 |
| 5718 | 5670 |
| 5719 template <class T> | 5671 template <class T> |
| 5720 bool Persistent<T>::IsNearDeath() const { | 5672 bool Persistent<T>::IsNearDeath() const { |
| 5721 typedef internal::Internals I; | 5673 typedef internal::Internals I; |
| 5722 if (this->IsEmpty()) return false; | 5674 if (this->IsEmpty()) return false; |
| 5723 uint8_t node_state = | 5675 return I::GetNodeState(reinterpret_cast<internal::Object**>(this->val_)) == |
| 5724 I::GetNodeState(reinterpret_cast<internal::Object**>(this->val_)); | 5676 I::kNodeStateIsNearDeathValue; |
| 5725 return node_state == I::kNodeStateIsNearDeathValue || | |
| 5726 node_state == I::kNodeStateIsPendingValue; | |
| 5727 } | 5677 } |
| 5728 | 5678 |
| 5729 | 5679 |
| 5730 template <class T> | 5680 template <class T> |
| 5731 bool Persistent<T>::IsWeak() const { | 5681 bool Persistent<T>::IsWeak() const { |
| 5732 typedef internal::Internals I; | 5682 typedef internal::Internals I; |
| 5733 if (this->IsEmpty()) return false; | 5683 if (this->IsEmpty()) return false; |
| 5734 return I::GetNodeState(reinterpret_cast<internal::Object**>(this->val_)) == | 5684 return I::GetNodeState(reinterpret_cast<internal::Object**>(this->val_)) == |
| 5735 I::kNodeStateIsWeakValue; | 5685 I::kNodeStateIsWeakValue; |
| 5736 } | 5686 } |
| (...skipping 845 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6582 | 6532 |
| 6583 | 6533 |
| 6584 /** | 6534 /** |
| 6585 * \example process.cc | 6535 * \example process.cc |
| 6586 */ | 6536 */ |
| 6587 | 6537 |
| 6588 | 6538 |
| 6589 } // namespace v8 | 6539 } // namespace v8 |
| 6590 | 6540 |
| 6591 | 6541 |
| 6542 #undef V8EXPORT |
| 6592 #undef TYPE_CHECK | 6543 #undef TYPE_CHECK |
| 6593 | 6544 |
| 6594 | 6545 |
| 6595 #endif // V8_H_ | 6546 #endif // V8_H_ |
| OLD | NEW |