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 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
569 | 569 |
570 private: | 570 private: |
571 friend class Isolate; | 571 friend class Isolate; |
572 friend class Utils; | 572 friend class Utils; |
573 template<class F> friend class Handle; | 573 template<class F> friend class Handle; |
574 template<class F> friend class Local; | 574 template<class F> friend class Local; |
575 template<class F1, class F2> friend class Persistent; | 575 template<class F1, class F2> friend class Persistent; |
576 template<class F> friend class UniquePersistent; | 576 template<class F> friend class UniquePersistent; |
577 template<class F> friend class PersistentBase; | 577 template<class F> friend class PersistentBase; |
578 template<class F> friend class ReturnValue; | 578 template<class F> friend class ReturnValue; |
| 579 friend class Object; |
579 | 580 |
580 explicit V8_INLINE PersistentBase(T* val) : val_(val) {} | 581 explicit V8_INLINE PersistentBase(T* val) : val_(val) {} |
581 PersistentBase(PersistentBase& other); // NOLINT | 582 PersistentBase(PersistentBase& other); // NOLINT |
582 void operator=(PersistentBase&); | 583 void operator=(PersistentBase&); |
583 V8_INLINE static T* New(Isolate* isolate, T* that); | 584 V8_INLINE static T* New(Isolate* isolate, T* that); |
584 | 585 |
585 T* val_; | 586 T* val_; |
586 }; | 587 }; |
587 | 588 |
588 | 589 |
(...skipping 1589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2178 Local<Value> GetConstructor(); | 2179 Local<Value> GetConstructor(); |
2179 | 2180 |
2180 /** | 2181 /** |
2181 * Returns the name of the function invoked as a constructor for this object. | 2182 * Returns the name of the function invoked as a constructor for this object. |
2182 */ | 2183 */ |
2183 Local<String> GetConstructorName(); | 2184 Local<String> GetConstructorName(); |
2184 | 2185 |
2185 /** Gets the number of internal fields for this Object. */ | 2186 /** Gets the number of internal fields for this Object. */ |
2186 int InternalFieldCount(); | 2187 int InternalFieldCount(); |
2187 | 2188 |
| 2189 /** Same as above, but works for Persistents */ |
| 2190 V8_INLINE static int InternalFieldCount( |
| 2191 const PersistentBase<Object>& object) { |
| 2192 return object.val_->InternalFieldCount(); |
| 2193 } |
| 2194 |
2188 /** Gets the value from an internal field. */ | 2195 /** Gets the value from an internal field. */ |
2189 V8_INLINE Local<Value> GetInternalField(int index); | 2196 V8_INLINE Local<Value> GetInternalField(int index); |
2190 | 2197 |
2191 /** Sets the value in an internal field. */ | 2198 /** Sets the value in an internal field. */ |
2192 void SetInternalField(int index, Handle<Value> value); | 2199 void SetInternalField(int index, Handle<Value> value); |
2193 | 2200 |
2194 /** | 2201 /** |
2195 * Gets a 2-byte-aligned native pointer from an internal field. This field | 2202 * Gets a 2-byte-aligned native pointer from an internal field. This field |
2196 * must have been set by SetAlignedPointerInInternalField, everything else | 2203 * must have been set by SetAlignedPointerInInternalField, everything else |
2197 * leads to undefined behavior. | 2204 * leads to undefined behavior. |
2198 */ | 2205 */ |
2199 V8_INLINE void* GetAlignedPointerFromInternalField(int index); | 2206 V8_INLINE void* GetAlignedPointerFromInternalField(int index); |
2200 | 2207 |
| 2208 /** Same as above, but works for Persistents */ |
| 2209 V8_INLINE static void* GetAlignedPointerFromInternalField( |
| 2210 const PersistentBase<Object>& object, int index) { |
| 2211 return object.val_->GetAlignedPointerFromInternalField(index); |
| 2212 } |
| 2213 |
2201 /** | 2214 /** |
2202 * Sets a 2-byte-aligned native pointer in an internal field. To retrieve such | 2215 * Sets a 2-byte-aligned native pointer in an internal field. To retrieve such |
2203 * a field, GetAlignedPointerFromInternalField must be used, everything else | 2216 * a field, GetAlignedPointerFromInternalField must be used, everything else |
2204 * leads to undefined behavior. | 2217 * leads to undefined behavior. |
2205 */ | 2218 */ |
2206 void SetAlignedPointerInInternalField(int index, void* value); | 2219 void SetAlignedPointerInInternalField(int index, void* value); |
2207 | 2220 |
2208 // Testers for local properties. | 2221 // Testers for local properties. |
2209 bool HasOwnProperty(Handle<String> key); | 2222 bool HasOwnProperty(Handle<String> key); |
2210 bool HasRealNamedProperty(Handle<String> key); | 2223 bool HasRealNamedProperty(Handle<String> key); |
(...skipping 4244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6455 */ | 6468 */ |
6456 | 6469 |
6457 | 6470 |
6458 } // namespace v8 | 6471 } // namespace v8 |
6459 | 6472 |
6460 | 6473 |
6461 #undef TYPE_CHECK | 6474 #undef TYPE_CHECK |
6462 | 6475 |
6463 | 6476 |
6464 #endif // V8_H_ | 6477 #endif // V8_H_ |
OLD | NEW |