OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** \mainpage V8 API Reference Guide | 5 /** \mainpage V8 API Reference Guide |
6 * | 6 * |
7 * V8 is Google's open source JavaScript engine. | 7 * V8 is Google's open source JavaScript engine. |
8 * | 8 * |
9 * This set of documents provides reference material generated from the | 9 * This set of documents provides reference material generated from the |
10 * V8 header file, include/v8.h. | 10 * V8 header file, include/v8.h. |
(...skipping 862 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
873 | 873 |
874 /** | 874 /** |
875 * Counts the number of allocated handles. | 875 * Counts the number of allocated handles. |
876 */ | 876 */ |
877 static int NumberOfHandles(Isolate* isolate); | 877 static int NumberOfHandles(Isolate* isolate); |
878 | 878 |
879 V8_INLINE Isolate* GetIsolate() const { | 879 V8_INLINE Isolate* GetIsolate() const { |
880 return reinterpret_cast<Isolate*>(isolate_); | 880 return reinterpret_cast<Isolate*>(isolate_); |
881 } | 881 } |
882 | 882 |
| 883 HandleScope(const HandleScope&) = delete; |
| 884 void operator=(const HandleScope&) = delete; |
| 885 |
883 protected: | 886 protected: |
884 V8_INLINE HandleScope() {} | 887 V8_INLINE HandleScope() {} |
885 | 888 |
886 void Initialize(Isolate* isolate); | 889 void Initialize(Isolate* isolate); |
887 | 890 |
888 static internal::Object** CreateHandle(internal::Isolate* isolate, | 891 static internal::Object** CreateHandle(internal::Isolate* isolate, |
889 internal::Object* value); | 892 internal::Object* value); |
890 | 893 |
891 private: | 894 private: |
892 // Uses heap_object to obtain the current Isolate. | 895 // Uses heap_object to obtain the current Isolate. |
893 static internal::Object** CreateHandle(internal::HeapObject* heap_object, | 896 static internal::Object** CreateHandle(internal::HeapObject* heap_object, |
894 internal::Object* value); | 897 internal::Object* value); |
895 | 898 |
896 // Make it hard to create heap-allocated or illegal handle scopes by | 899 // Make it hard to create heap-allocated or illegal handle scopes by |
897 // disallowing certain operations. | 900 // disallowing certain operations. |
898 HandleScope(const HandleScope&); | |
899 void operator=(const HandleScope&); | |
900 void* operator new(size_t size); | 901 void* operator new(size_t size); |
901 void operator delete(void*, size_t); | 902 void operator delete(void*, size_t); |
902 | 903 |
903 internal::Isolate* isolate_; | 904 internal::Isolate* isolate_; |
904 internal::Object** prev_next_; | 905 internal::Object** prev_next_; |
905 internal::Object** prev_limit_; | 906 internal::Object** prev_limit_; |
906 | 907 |
907 // Local::New uses CreateHandle with an Isolate* parameter. | 908 // Local::New uses CreateHandle with an Isolate* parameter. |
908 template<class F> friend class Local; | 909 template<class F> friend class Local; |
909 | 910 |
(...skipping 17 matching lines...) Expand all Loading... |
927 * Pushes the value into the previous scope and returns a handle to it. | 928 * Pushes the value into the previous scope and returns a handle to it. |
928 * Cannot be called twice. | 929 * Cannot be called twice. |
929 */ | 930 */ |
930 template <class T> | 931 template <class T> |
931 V8_INLINE Local<T> Escape(Local<T> value) { | 932 V8_INLINE Local<T> Escape(Local<T> value) { |
932 internal::Object** slot = | 933 internal::Object** slot = |
933 Escape(reinterpret_cast<internal::Object**>(*value)); | 934 Escape(reinterpret_cast<internal::Object**>(*value)); |
934 return Local<T>(reinterpret_cast<T*>(slot)); | 935 return Local<T>(reinterpret_cast<T*>(slot)); |
935 } | 936 } |
936 | 937 |
| 938 EscapableHandleScope(const EscapableHandleScope&) = delete; |
| 939 void operator=(const EscapableHandleScope&) = delete; |
| 940 |
937 private: | 941 private: |
938 internal::Object** Escape(internal::Object** escape_value); | 942 internal::Object** Escape(internal::Object** escape_value); |
939 | 943 |
940 // Make it hard to create heap-allocated or illegal handle scopes by | 944 // Make it hard to create heap-allocated or illegal handle scopes by |
941 // disallowing certain operations. | 945 // disallowing certain operations. |
942 EscapableHandleScope(const EscapableHandleScope&); | |
943 void operator=(const EscapableHandleScope&); | |
944 void* operator new(size_t size); | 946 void* operator new(size_t size); |
945 void operator delete(void*, size_t); | 947 void operator delete(void*, size_t); |
946 | 948 |
947 internal::Object** escape_slot_; | 949 internal::Object** escape_slot_; |
948 }; | 950 }; |
949 | 951 |
950 class V8_EXPORT SealHandleScope { | 952 class V8_EXPORT SealHandleScope { |
951 public: | 953 public: |
952 SealHandleScope(Isolate* isolate); | 954 SealHandleScope(Isolate* isolate); |
953 ~SealHandleScope(); | 955 ~SealHandleScope(); |
954 | 956 |
| 957 SealHandleScope(const SealHandleScope&) = delete; |
| 958 void operator=(const SealHandleScope&) = delete; |
| 959 |
955 private: | 960 private: |
956 // Make it hard to create heap-allocated or illegal handle scopes by | 961 // Make it hard to create heap-allocated or illegal handle scopes by |
957 // disallowing certain operations. | 962 // disallowing certain operations. |
958 SealHandleScope(const SealHandleScope&); | |
959 void operator=(const SealHandleScope&); | |
960 void* operator new(size_t size); | 963 void* operator new(size_t size); |
961 void operator delete(void*, size_t); | 964 void operator delete(void*, size_t); |
962 | 965 |
963 internal::Isolate* const isolate_; | 966 internal::Isolate* const isolate_; |
964 internal::Object** prev_limit_; | 967 internal::Object** prev_limit_; |
965 int prev_sealed_level_; | 968 int prev_sealed_level_; |
966 }; | 969 }; |
967 | 970 |
968 | 971 |
969 // --- Special objects --- | 972 // --- Special objects --- |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1143 CachedData(const uint8_t* data, int length, | 1146 CachedData(const uint8_t* data, int length, |
1144 BufferPolicy buffer_policy = BufferNotOwned); | 1147 BufferPolicy buffer_policy = BufferNotOwned); |
1145 ~CachedData(); | 1148 ~CachedData(); |
1146 // TODO(marja): Async compilation; add constructors which take a callback | 1149 // TODO(marja): Async compilation; add constructors which take a callback |
1147 // which will be called when V8 no longer needs the data. | 1150 // which will be called when V8 no longer needs the data. |
1148 const uint8_t* data; | 1151 const uint8_t* data; |
1149 int length; | 1152 int length; |
1150 bool rejected; | 1153 bool rejected; |
1151 BufferPolicy buffer_policy; | 1154 BufferPolicy buffer_policy; |
1152 | 1155 |
1153 private: | 1156 // Prevent copying. |
1154 // Prevent copying. Not implemented. | 1157 CachedData(const CachedData&) = delete; |
1155 CachedData(const CachedData&); | 1158 CachedData& operator=(const CachedData&) = delete; |
1156 CachedData& operator=(const CachedData&); | |
1157 }; | 1159 }; |
1158 | 1160 |
1159 /** | 1161 /** |
1160 * Source code which can be then compiled to a UnboundScript or Script. | 1162 * Source code which can be then compiled to a UnboundScript or Script. |
1161 */ | 1163 */ |
1162 class Source { | 1164 class Source { |
1163 public: | 1165 public: |
1164 // Source takes ownership of CachedData. | 1166 // Source takes ownership of CachedData. |
1165 V8_INLINE Source(Local<String> source_string, const ScriptOrigin& origin, | 1167 V8_INLINE Source(Local<String> source_string, const ScriptOrigin& origin, |
1166 CachedData* cached_data = NULL); | 1168 CachedData* cached_data = NULL); |
1167 V8_INLINE Source(Local<String> source_string, | 1169 V8_INLINE Source(Local<String> source_string, |
1168 CachedData* cached_data = NULL); | 1170 CachedData* cached_data = NULL); |
1169 V8_INLINE ~Source(); | 1171 V8_INLINE ~Source(); |
1170 | 1172 |
1171 // Ownership of the CachedData or its buffers is *not* transferred to the | 1173 // Ownership of the CachedData or its buffers is *not* transferred to the |
1172 // caller. The CachedData object is alive as long as the Source object is | 1174 // caller. The CachedData object is alive as long as the Source object is |
1173 // alive. | 1175 // alive. |
1174 V8_INLINE const CachedData* GetCachedData() const; | 1176 V8_INLINE const CachedData* GetCachedData() const; |
1175 | 1177 |
| 1178 // Prevent copying. |
| 1179 Source(const Source&) = delete; |
| 1180 Source& operator=(const Source&) = delete; |
| 1181 |
1176 private: | 1182 private: |
1177 friend class ScriptCompiler; | 1183 friend class ScriptCompiler; |
1178 // Prevent copying. Not implemented. | |
1179 Source(const Source&); | |
1180 Source& operator=(const Source&); | |
1181 | 1184 |
1182 Local<String> source_string; | 1185 Local<String> source_string; |
1183 | 1186 |
1184 // Origin information | 1187 // Origin information |
1185 Local<Value> resource_name; | 1188 Local<Value> resource_name; |
1186 Local<Integer> resource_line_offset; | 1189 Local<Integer> resource_line_offset; |
1187 Local<Integer> resource_column_offset; | 1190 Local<Integer> resource_column_offset; |
1188 ScriptOriginOptions resource_options; | 1191 ScriptOriginOptions resource_options; |
1189 Local<Value> source_map_url; | 1192 Local<Value> source_map_url; |
1190 | 1193 |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1253 StreamedSource(ExternalSourceStream* source_stream, Encoding encoding); | 1256 StreamedSource(ExternalSourceStream* source_stream, Encoding encoding); |
1254 ~StreamedSource(); | 1257 ~StreamedSource(); |
1255 | 1258 |
1256 // Ownership of the CachedData or its buffers is *not* transferred to the | 1259 // Ownership of the CachedData or its buffers is *not* transferred to the |
1257 // caller. The CachedData object is alive as long as the StreamedSource | 1260 // caller. The CachedData object is alive as long as the StreamedSource |
1258 // object is alive. | 1261 // object is alive. |
1259 const CachedData* GetCachedData() const; | 1262 const CachedData* GetCachedData() const; |
1260 | 1263 |
1261 internal::StreamedSource* impl() const { return impl_; } | 1264 internal::StreamedSource* impl() const { return impl_; } |
1262 | 1265 |
| 1266 // Prevent copying. |
| 1267 StreamedSource(const StreamedSource&) = delete; |
| 1268 StreamedSource& operator=(const StreamedSource&) = delete; |
| 1269 |
1263 private: | 1270 private: |
1264 // Prevent copying. Not implemented. | |
1265 StreamedSource(const StreamedSource&); | |
1266 StreamedSource& operator=(const StreamedSource&); | |
1267 | |
1268 internal::StreamedSource* impl_; | 1271 internal::StreamedSource* impl_; |
1269 }; | 1272 }; |
1270 | 1273 |
1271 /** | 1274 /** |
1272 * A streaming task which the embedder must run on a background thread to | 1275 * A streaming task which the embedder must run on a background thread to |
1273 * stream scripts into V8. Returned by ScriptCompiler::StartStreamingScript. | 1276 * stream scripts into V8. Returned by ScriptCompiler::StartStreamingScript. |
1274 */ | 1277 */ |
1275 class ScriptStreamingTask { | 1278 class ScriptStreamingTask { |
1276 public: | 1279 public: |
1277 virtual ~ScriptStreamingTask() {} | 1280 virtual ~ScriptStreamingTask() {} |
(...skipping 924 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2202 ExternalStringResourceBase() {} | 2205 ExternalStringResourceBase() {} |
2203 | 2206 |
2204 /** | 2207 /** |
2205 * Internally V8 will call this Dispose method when the external string | 2208 * Internally V8 will call this Dispose method when the external string |
2206 * resource is no longer needed. The default implementation will use the | 2209 * resource is no longer needed. The default implementation will use the |
2207 * delete operator. This method can be overridden in subclasses to | 2210 * delete operator. This method can be overridden in subclasses to |
2208 * control how allocated external string resources are disposed. | 2211 * control how allocated external string resources are disposed. |
2209 */ | 2212 */ |
2210 virtual void Dispose() { delete this; } | 2213 virtual void Dispose() { delete this; } |
2211 | 2214 |
| 2215 // Disallow copying and assigning. |
| 2216 ExternalStringResourceBase(const ExternalStringResourceBase&) = delete; |
| 2217 void operator=(const ExternalStringResourceBase&) = delete; |
| 2218 |
2212 private: | 2219 private: |
2213 // Disallow copying and assigning. | |
2214 ExternalStringResourceBase(const ExternalStringResourceBase&); | |
2215 void operator=(const ExternalStringResourceBase&); | |
2216 | |
2217 friend class v8::internal::Heap; | 2220 friend class v8::internal::Heap; |
2218 }; | 2221 }; |
2219 | 2222 |
2220 /** | 2223 /** |
2221 * An ExternalStringResource is a wrapper around a two-byte string | 2224 * An ExternalStringResource is a wrapper around a two-byte string |
2222 * buffer that resides outside V8's heap. Implement an | 2225 * buffer that resides outside V8's heap. Implement an |
2223 * ExternalStringResource to manage the life cycle of the underlying | 2226 * ExternalStringResource to manage the life cycle of the underlying |
2224 * buffer. Note that the string data must be immutable. | 2227 * buffer. Note that the string data must be immutable. |
2225 */ | 2228 */ |
2226 class V8_EXPORT ExternalStringResource | 2229 class V8_EXPORT ExternalStringResource |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2408 * then the length() method returns 0 and the * operator returns | 2411 * then the length() method returns 0 and the * operator returns |
2409 * NULL. | 2412 * NULL. |
2410 */ | 2413 */ |
2411 class V8_EXPORT Utf8Value { | 2414 class V8_EXPORT Utf8Value { |
2412 public: | 2415 public: |
2413 explicit Utf8Value(Local<v8::Value> obj); | 2416 explicit Utf8Value(Local<v8::Value> obj); |
2414 ~Utf8Value(); | 2417 ~Utf8Value(); |
2415 char* operator*() { return str_; } | 2418 char* operator*() { return str_; } |
2416 const char* operator*() const { return str_; } | 2419 const char* operator*() const { return str_; } |
2417 int length() const { return length_; } | 2420 int length() const { return length_; } |
| 2421 |
| 2422 // Disallow copying and assigning. |
| 2423 Utf8Value(const Utf8Value&) = delete; |
| 2424 void operator=(const Utf8Value&) = delete; |
| 2425 |
2418 private: | 2426 private: |
2419 char* str_; | 2427 char* str_; |
2420 int length_; | 2428 int length_; |
2421 | |
2422 // Disallow copying and assigning. | |
2423 Utf8Value(const Utf8Value&); | |
2424 void operator=(const Utf8Value&); | |
2425 }; | 2429 }; |
2426 | 2430 |
2427 /** | 2431 /** |
2428 * Converts an object to a two-byte string. | 2432 * Converts an object to a two-byte string. |
2429 * If conversion to a string fails (eg. due to an exception in the toString() | 2433 * If conversion to a string fails (eg. due to an exception in the toString() |
2430 * method of the object) then the length() method returns 0 and the * operator | 2434 * method of the object) then the length() method returns 0 and the * operator |
2431 * returns NULL. | 2435 * returns NULL. |
2432 */ | 2436 */ |
2433 class V8_EXPORT Value { | 2437 class V8_EXPORT Value { |
2434 public: | 2438 public: |
2435 explicit Value(Local<v8::Value> obj); | 2439 explicit Value(Local<v8::Value> obj); |
2436 ~Value(); | 2440 ~Value(); |
2437 uint16_t* operator*() { return str_; } | 2441 uint16_t* operator*() { return str_; } |
2438 const uint16_t* operator*() const { return str_; } | 2442 const uint16_t* operator*() const { return str_; } |
2439 int length() const { return length_; } | 2443 int length() const { return length_; } |
| 2444 |
| 2445 // Disallow copying and assigning. |
| 2446 Value(const Value&) = delete; |
| 2447 void operator=(const Value&) = delete; |
| 2448 |
2440 private: | 2449 private: |
2441 uint16_t* str_; | 2450 uint16_t* str_; |
2442 int length_; | 2451 int length_; |
2443 | |
2444 // Disallow copying and assigning. | |
2445 Value(const Value&); | |
2446 void operator=(const Value&); | |
2447 }; | 2452 }; |
2448 | 2453 |
2449 private: | 2454 private: |
2450 void VerifyExternalStringResourceBase(ExternalStringResourceBase* v, | 2455 void VerifyExternalStringResourceBase(ExternalStringResourceBase* v, |
2451 Encoding encoding) const; | 2456 Encoding encoding) const; |
2452 void VerifyExternalStringResource(ExternalStringResource* val) const; | 2457 void VerifyExternalStringResource(ExternalStringResource* val) const; |
2453 static void CheckCast(v8::Value* obj); | 2458 static void CheckCast(v8::Value* obj); |
2454 }; | 2459 }; |
2455 | 2460 |
2456 | 2461 |
(...skipping 2515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4972 | 4977 |
4973 const char* name() const { return name_; } | 4978 const char* name() const { return name_; } |
4974 size_t source_length() const { return source_length_; } | 4979 size_t source_length() const { return source_length_; } |
4975 const String::ExternalOneByteStringResource* source() const { | 4980 const String::ExternalOneByteStringResource* source() const { |
4976 return &source_; } | 4981 return &source_; } |
4977 int dependency_count() { return dep_count_; } | 4982 int dependency_count() { return dep_count_; } |
4978 const char** dependencies() { return deps_; } | 4983 const char** dependencies() { return deps_; } |
4979 void set_auto_enable(bool value) { auto_enable_ = value; } | 4984 void set_auto_enable(bool value) { auto_enable_ = value; } |
4980 bool auto_enable() { return auto_enable_; } | 4985 bool auto_enable() { return auto_enable_; } |
4981 | 4986 |
| 4987 // Disallow copying and assigning. |
| 4988 Extension(const Extension&) = delete; |
| 4989 void operator=(const Extension&) = delete; |
| 4990 |
4982 private: | 4991 private: |
4983 const char* name_; | 4992 const char* name_; |
4984 size_t source_length_; // expected to initialize before source_ | 4993 size_t source_length_; // expected to initialize before source_ |
4985 ExternalOneByteStringResourceImpl source_; | 4994 ExternalOneByteStringResourceImpl source_; |
4986 int dep_count_; | 4995 int dep_count_; |
4987 const char** deps_; | 4996 const char** deps_; |
4988 bool auto_enable_; | 4997 bool auto_enable_; |
4989 | |
4990 // Disallow copying and assigning. | |
4991 Extension(const Extension&); | |
4992 void operator=(const Extension&); | |
4993 }; | 4998 }; |
4994 | 4999 |
4995 | 5000 |
4996 void V8_EXPORT RegisterExtension(Extension* extension); | 5001 void V8_EXPORT RegisterExtension(Extension* extension); |
4997 | 5002 |
4998 | 5003 |
4999 // --- Statics --- | 5004 // --- Statics --- |
5000 | 5005 |
5001 V8_INLINE Local<Primitive> Undefined(Isolate* isolate); | 5006 V8_INLINE Local<Primitive> Undefined(Isolate* isolate); |
5002 V8_INLINE Local<Primitive> Null(Isolate* isolate); | 5007 V8_INLINE Local<Primitive> Null(Isolate* isolate); |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5208 /** | 5213 /** |
5209 * Returns current depth of nested kRunMicrotasks scopes. | 5214 * Returns current depth of nested kRunMicrotasks scopes. |
5210 */ | 5215 */ |
5211 static int GetCurrentDepth(Isolate* isolate); | 5216 static int GetCurrentDepth(Isolate* isolate); |
5212 | 5217 |
5213 /** | 5218 /** |
5214 * Returns true while microtasks are being executed. | 5219 * Returns true while microtasks are being executed. |
5215 */ | 5220 */ |
5216 static bool IsRunningMicrotasks(Isolate* isolate); | 5221 static bool IsRunningMicrotasks(Isolate* isolate); |
5217 | 5222 |
| 5223 // Prevent copying. |
| 5224 MicrotasksScope(const MicrotasksScope&) = delete; |
| 5225 MicrotasksScope& operator=(const MicrotasksScope&) = delete; |
| 5226 |
5218 private: | 5227 private: |
5219 internal::Isolate* const isolate_; | 5228 internal::Isolate* const isolate_; |
5220 bool run_; | 5229 bool run_; |
5221 | |
5222 // Prevent copying. | |
5223 MicrotasksScope(const MicrotasksScope&); | |
5224 MicrotasksScope& operator=(const MicrotasksScope&); | |
5225 }; | 5230 }; |
5226 | 5231 |
5227 | 5232 |
5228 // --- Failed Access Check Callback --- | 5233 // --- Failed Access Check Callback --- |
5229 typedef void (*FailedAccessCheckCallback)(Local<Object> target, | 5234 typedef void (*FailedAccessCheckCallback)(Local<Object> target, |
5230 AccessType type, | 5235 AccessType type, |
5231 Local<Value> data); | 5236 Local<Value> data); |
5232 | 5237 |
5233 // --- AllowCodeGenerationFromStrings callbacks --- | 5238 // --- AllowCodeGenerationFromStrings callbacks --- |
5234 | 5239 |
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5666 * executed within a local scope. | 5671 * executed within a local scope. |
5667 */ | 5672 */ |
5668 class V8_EXPORT Scope { | 5673 class V8_EXPORT Scope { |
5669 public: | 5674 public: |
5670 explicit Scope(Isolate* isolate) : isolate_(isolate) { | 5675 explicit Scope(Isolate* isolate) : isolate_(isolate) { |
5671 isolate->Enter(); | 5676 isolate->Enter(); |
5672 } | 5677 } |
5673 | 5678 |
5674 ~Scope() { isolate_->Exit(); } | 5679 ~Scope() { isolate_->Exit(); } |
5675 | 5680 |
| 5681 // Prevent copying of Scope objects. |
| 5682 Scope(const Scope&) = delete; |
| 5683 Scope& operator=(const Scope&) = delete; |
| 5684 |
5676 private: | 5685 private: |
5677 Isolate* const isolate_; | 5686 Isolate* const isolate_; |
5678 | |
5679 // Prevent copying of Scope objects. | |
5680 Scope(const Scope&); | |
5681 Scope& operator=(const Scope&); | |
5682 }; | 5687 }; |
5683 | 5688 |
5684 | 5689 |
5685 /** | 5690 /** |
5686 * Assert that no Javascript code is invoked. | 5691 * Assert that no Javascript code is invoked. |
5687 */ | 5692 */ |
5688 class V8_EXPORT DisallowJavascriptExecutionScope { | 5693 class V8_EXPORT DisallowJavascriptExecutionScope { |
5689 public: | 5694 public: |
5690 enum OnFailure { CRASH_ON_FAILURE, THROW_ON_FAILURE }; | 5695 enum OnFailure { CRASH_ON_FAILURE, THROW_ON_FAILURE }; |
5691 | 5696 |
5692 DisallowJavascriptExecutionScope(Isolate* isolate, OnFailure on_failure); | 5697 DisallowJavascriptExecutionScope(Isolate* isolate, OnFailure on_failure); |
5693 ~DisallowJavascriptExecutionScope(); | 5698 ~DisallowJavascriptExecutionScope(); |
5694 | 5699 |
| 5700 // Prevent copying of Scope objects. |
| 5701 DisallowJavascriptExecutionScope(const DisallowJavascriptExecutionScope&) = |
| 5702 delete; |
| 5703 DisallowJavascriptExecutionScope& operator=( |
| 5704 const DisallowJavascriptExecutionScope&) = delete; |
| 5705 |
5695 private: | 5706 private: |
5696 bool on_failure_; | 5707 bool on_failure_; |
5697 void* internal_; | 5708 void* internal_; |
5698 | |
5699 // Prevent copying of Scope objects. | |
5700 DisallowJavascriptExecutionScope(const DisallowJavascriptExecutionScope&); | |
5701 DisallowJavascriptExecutionScope& operator=( | |
5702 const DisallowJavascriptExecutionScope&); | |
5703 }; | 5709 }; |
5704 | 5710 |
5705 | 5711 |
5706 /** | 5712 /** |
5707 * Introduce exception to DisallowJavascriptExecutionScope. | 5713 * Introduce exception to DisallowJavascriptExecutionScope. |
5708 */ | 5714 */ |
5709 class V8_EXPORT AllowJavascriptExecutionScope { | 5715 class V8_EXPORT AllowJavascriptExecutionScope { |
5710 public: | 5716 public: |
5711 explicit AllowJavascriptExecutionScope(Isolate* isolate); | 5717 explicit AllowJavascriptExecutionScope(Isolate* isolate); |
5712 ~AllowJavascriptExecutionScope(); | 5718 ~AllowJavascriptExecutionScope(); |
5713 | 5719 |
| 5720 // Prevent copying of Scope objects. |
| 5721 AllowJavascriptExecutionScope(const AllowJavascriptExecutionScope&) = |
| 5722 delete; |
| 5723 AllowJavascriptExecutionScope& operator=( |
| 5724 const AllowJavascriptExecutionScope&) = delete; |
| 5725 |
5714 private: | 5726 private: |
5715 void* internal_throws_; | 5727 void* internal_throws_; |
5716 void* internal_assert_; | 5728 void* internal_assert_; |
5717 | |
5718 // Prevent copying of Scope objects. | |
5719 AllowJavascriptExecutionScope(const AllowJavascriptExecutionScope&); | |
5720 AllowJavascriptExecutionScope& operator=( | |
5721 const AllowJavascriptExecutionScope&); | |
5722 }; | 5729 }; |
5723 | 5730 |
5724 /** | 5731 /** |
5725 * Do not run microtasks while this scope is active, even if microtasks are | 5732 * Do not run microtasks while this scope is active, even if microtasks are |
5726 * automatically executed otherwise. | 5733 * automatically executed otherwise. |
5727 */ | 5734 */ |
5728 class V8_EXPORT SuppressMicrotaskExecutionScope { | 5735 class V8_EXPORT SuppressMicrotaskExecutionScope { |
5729 public: | 5736 public: |
5730 explicit SuppressMicrotaskExecutionScope(Isolate* isolate); | 5737 explicit SuppressMicrotaskExecutionScope(Isolate* isolate); |
5731 ~SuppressMicrotaskExecutionScope(); | 5738 ~SuppressMicrotaskExecutionScope(); |
5732 | 5739 |
| 5740 // Prevent copying of Scope objects. |
| 5741 SuppressMicrotaskExecutionScope(const SuppressMicrotaskExecutionScope&) = |
| 5742 delete; |
| 5743 SuppressMicrotaskExecutionScope& operator=( |
| 5744 const SuppressMicrotaskExecutionScope&) = delete; |
| 5745 |
5733 private: | 5746 private: |
5734 internal::Isolate* const isolate_; | 5747 internal::Isolate* const isolate_; |
5735 | |
5736 // Prevent copying of Scope objects. | |
5737 SuppressMicrotaskExecutionScope(const SuppressMicrotaskExecutionScope&); | |
5738 SuppressMicrotaskExecutionScope& operator=( | |
5739 const SuppressMicrotaskExecutionScope&); | |
5740 }; | 5748 }; |
5741 | 5749 |
5742 /** | 5750 /** |
5743 * Types of garbage collections that can be requested via | 5751 * Types of garbage collections that can be requested via |
5744 * RequestGarbageCollectionForTesting. | 5752 * RequestGarbageCollectionForTesting. |
5745 */ | 5753 */ |
5746 enum GarbageCollectionType { | 5754 enum GarbageCollectionType { |
5747 kFullGarbageCollection, | 5755 kFullGarbageCollection, |
5748 kMinorGarbageCollection | 5756 kMinorGarbageCollection |
5749 }; | 5757 }; |
(...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6455 * pending activity for the handle. | 6463 * pending activity for the handle. |
6456 */ | 6464 */ |
6457 void VisitWeakHandles(PersistentHandleVisitor* visitor); | 6465 void VisitWeakHandles(PersistentHandleVisitor* visitor); |
6458 | 6466 |
6459 /** | 6467 /** |
6460 * Check if this isolate is in use. | 6468 * Check if this isolate is in use. |
6461 * True if at least one thread Enter'ed this isolate. | 6469 * True if at least one thread Enter'ed this isolate. |
6462 */ | 6470 */ |
6463 bool IsInUse(); | 6471 bool IsInUse(); |
6464 | 6472 |
| 6473 Isolate(const Isolate&) = delete; |
| 6474 Isolate& operator=(const Isolate&) = delete; |
| 6475 |
6465 private: | 6476 private: |
6466 template <class K, class V, class Traits> | 6477 template <class K, class V, class Traits> |
6467 friend class PersistentValueMapBase; | 6478 friend class PersistentValueMapBase; |
6468 | 6479 |
6469 Isolate(); | 6480 Isolate(); |
6470 Isolate(const Isolate&); | |
6471 ~Isolate(); | 6481 ~Isolate(); |
6472 Isolate& operator=(const Isolate&); | |
6473 void* operator new(size_t size); | 6482 void* operator new(size_t size); |
6474 void operator delete(void*, size_t); | 6483 void operator delete(void*, size_t); |
6475 | 6484 |
6476 void SetObjectGroupId(internal::Object** object, UniqueId id); | 6485 void SetObjectGroupId(internal::Object** object, UniqueId id); |
6477 void SetReferenceFromGroup(UniqueId id, internal::Object** object); | 6486 void SetReferenceFromGroup(UniqueId id, internal::Object** object); |
6478 void SetReference(internal::Object** parent, internal::Object** child); | 6487 void SetReference(internal::Object** parent, internal::Object** child); |
6479 void ReportExternalAllocationLimitReached(); | 6488 void ReportExternalAllocationLimitReached(); |
6480 }; | 6489 }; |
6481 | 6490 |
6482 class V8_EXPORT StartupData { | 6491 class V8_EXPORT StartupData { |
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6920 /** | 6929 /** |
6921 * Created a snapshot data blob. | 6930 * Created a snapshot data blob. |
6922 * This must not be called from within a handle scope. | 6931 * This must not be called from within a handle scope. |
6923 * \param function_code_handling whether to include compiled function code | 6932 * \param function_code_handling whether to include compiled function code |
6924 * in the snapshot. | 6933 * in the snapshot. |
6925 * \returns { nullptr, 0 } on failure, and a startup snapshot on success. The | 6934 * \returns { nullptr, 0 } on failure, and a startup snapshot on success. The |
6926 * caller acquires ownership of the data array in the return value. | 6935 * caller acquires ownership of the data array in the return value. |
6927 */ | 6936 */ |
6928 StartupData CreateBlob(FunctionCodeHandling function_code_handling); | 6937 StartupData CreateBlob(FunctionCodeHandling function_code_handling); |
6929 | 6938 |
| 6939 // Disallow copying and assigning. |
| 6940 SnapshotCreator(const SnapshotCreator&) = delete; |
| 6941 void operator=(const SnapshotCreator&) = delete; |
| 6942 |
6930 private: | 6943 private: |
6931 void* data_; | 6944 void* data_; |
6932 | |
6933 // Disallow copying and assigning. | |
6934 SnapshotCreator(const SnapshotCreator&); | |
6935 void operator=(const SnapshotCreator&); | |
6936 }; | 6945 }; |
6937 | 6946 |
6938 /** | 6947 /** |
6939 * A simple Maybe type, representing an object which may or may not have a | 6948 * A simple Maybe type, representing an object which may or may not have a |
6940 * value, see https://hackage.haskell.org/package/base/docs/Data-Maybe.html. | 6949 * value, see https://hackage.haskell.org/package/base/docs/Data-Maybe.html. |
6941 * | 6950 * |
6942 * If an API method returns a Maybe<>, the API method can potentially fail | 6951 * If an API method returns a Maybe<>, the API method can potentially fail |
6943 * either because an exception is thrown, or because an exception is pending, | 6952 * either because an exception is thrown, or because an exception is pending, |
6944 * e.g. because a previous API call threw an exception that hasn't been caught | 6953 * e.g. because a previous API call threw an exception that hasn't been caught |
6945 * yet, or because a TerminateExecution exception was thrown. In that case, a | 6954 * yet, or because a TerminateExecution exception was thrown. In that case, a |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7129 * This method returns address that can be used for comparisons with | 7138 * This method returns address that can be used for comparisons with |
7130 * addresses into the JS stack. When neither simulator nor ASAN's | 7139 * addresses into the JS stack. When neither simulator nor ASAN's |
7131 * UseAfterReturn is enabled, then the address returned will be the address | 7140 * UseAfterReturn is enabled, then the address returned will be the address |
7132 * of the C++ try catch handler itself. | 7141 * of the C++ try catch handler itself. |
7133 */ | 7142 */ |
7134 static void* JSStackComparableAddress(v8::TryCatch* handler) { | 7143 static void* JSStackComparableAddress(v8::TryCatch* handler) { |
7135 if (handler == NULL) return NULL; | 7144 if (handler == NULL) return NULL; |
7136 return handler->js_stack_comparable_address_; | 7145 return handler->js_stack_comparable_address_; |
7137 } | 7146 } |
7138 | 7147 |
| 7148 TryCatch(const TryCatch&) = delete; |
| 7149 void operator=(const TryCatch&) = delete; |
| 7150 |
7139 private: | 7151 private: |
7140 void ResetInternal(); | 7152 void ResetInternal(); |
7141 | 7153 |
7142 // Make it hard to create heap-allocated TryCatch blocks. | 7154 // Make it hard to create heap-allocated TryCatch blocks. |
7143 TryCatch(const TryCatch&); | |
7144 void operator=(const TryCatch&); | |
7145 void* operator new(size_t size); | 7155 void* operator new(size_t size); |
7146 void operator delete(void*, size_t); | 7156 void operator delete(void*, size_t); |
7147 | 7157 |
7148 v8::internal::Isolate* isolate_; | 7158 v8::internal::Isolate* isolate_; |
7149 v8::TryCatch* next_; | 7159 v8::TryCatch* next_; |
7150 void* exception_; | 7160 void* exception_; |
7151 void* message_obj_; | 7161 void* message_obj_; |
7152 void* js_stack_comparable_address_; | 7162 void* js_stack_comparable_address_; |
7153 bool is_verbose_ : 1; | 7163 bool is_verbose_ : 1; |
7154 bool can_continue_ : 1; | 7164 bool can_continue_ : 1; |
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7493 * Returns whether or not the locker for a given isolate, is locked by the | 7503 * Returns whether or not the locker for a given isolate, is locked by the |
7494 * current thread. | 7504 * current thread. |
7495 */ | 7505 */ |
7496 static bool IsLocked(Isolate* isolate); | 7506 static bool IsLocked(Isolate* isolate); |
7497 | 7507 |
7498 /** | 7508 /** |
7499 * Returns whether v8::Locker is being used by this V8 instance. | 7509 * Returns whether v8::Locker is being used by this V8 instance. |
7500 */ | 7510 */ |
7501 static bool IsActive(); | 7511 static bool IsActive(); |
7502 | 7512 |
| 7513 // Disallow copying and assigning. |
| 7514 Locker(const Locker&) = delete; |
| 7515 void operator=(const Locker&) = delete; |
| 7516 |
7503 private: | 7517 private: |
7504 void Initialize(Isolate* isolate); | 7518 void Initialize(Isolate* isolate); |
7505 | 7519 |
7506 bool has_lock_; | 7520 bool has_lock_; |
7507 bool top_level_; | 7521 bool top_level_; |
7508 internal::Isolate* isolate_; | 7522 internal::Isolate* isolate_; |
7509 | |
7510 // Disallow copying and assigning. | |
7511 Locker(const Locker&); | |
7512 void operator=(const Locker&); | |
7513 }; | 7523 }; |
7514 | 7524 |
7515 | 7525 |
7516 // --- Implementation --- | 7526 // --- Implementation --- |
7517 | 7527 |
7518 | 7528 |
7519 namespace internal { | 7529 namespace internal { |
7520 | 7530 |
7521 const int kApiPointerSize = sizeof(void*); // NOLINT | 7531 const int kApiPointerSize = sizeof(void*); // NOLINT |
7522 const int kApiIntSize = sizeof(int); // NOLINT | 7532 const int kApiIntSize = sizeof(int); // NOLINT |
(...skipping 1485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9008 */ | 9018 */ |
9009 | 9019 |
9010 | 9020 |
9011 } // namespace v8 | 9021 } // namespace v8 |
9012 | 9022 |
9013 | 9023 |
9014 #undef TYPE_CHECK | 9024 #undef TYPE_CHECK |
9015 | 9025 |
9016 | 9026 |
9017 #endif // INCLUDE_V8_H_ | 9027 #endif // INCLUDE_V8_H_ |
OLD | NEW |