| 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 #ifndef V8_OBJECTS_H_ | 5 #ifndef V8_OBJECTS_H_ |
| 6 #define V8_OBJECTS_H_ | 6 #define V8_OBJECTS_H_ |
| 7 | 7 |
| 8 #include "allocation.h" | 8 #include "allocation.h" |
| 9 #include "assert-scope.h" | 9 #include "assert-scope.h" |
| 10 #include "builtins.h" | 10 #include "builtins.h" |
| (...skipping 1898 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1909 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED); | 1909 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED); |
| 1910 MUST_USE_RESULT static MaybeHandle<Object> SetElement( | 1910 MUST_USE_RESULT static MaybeHandle<Object> SetElement( |
| 1911 Handle<JSReceiver> object, | 1911 Handle<JSReceiver> object, |
| 1912 uint32_t index, | 1912 uint32_t index, |
| 1913 Handle<Object> value, | 1913 Handle<Object> value, |
| 1914 PropertyAttributes attributes, | 1914 PropertyAttributes attributes, |
| 1915 StrictMode strict_mode); | 1915 StrictMode strict_mode); |
| 1916 | 1916 |
| 1917 // Implementation of [[HasProperty]], ECMA-262 5th edition, section 8.12.6. | 1917 // Implementation of [[HasProperty]], ECMA-262 5th edition, section 8.12.6. |
| 1918 static inline bool HasProperty(Handle<JSReceiver> object, Handle<Name> name); | 1918 static inline bool HasProperty(Handle<JSReceiver> object, Handle<Name> name); |
| 1919 static inline bool HasLocalProperty(Handle<JSReceiver>, Handle<Name> name); | 1919 static inline bool HasOwnProperty(Handle<JSReceiver>, Handle<Name> name); |
| 1920 static inline bool HasElement(Handle<JSReceiver> object, uint32_t index); | 1920 static inline bool HasElement(Handle<JSReceiver> object, uint32_t index); |
| 1921 static inline bool HasLocalElement(Handle<JSReceiver> object, uint32_t index); | 1921 static inline bool HasOwnElement(Handle<JSReceiver> object, uint32_t index); |
| 1922 | 1922 |
| 1923 // Implementation of [[Delete]], ECMA-262 5th edition, section 8.12.7. | 1923 // Implementation of [[Delete]], ECMA-262 5th edition, section 8.12.7. |
| 1924 MUST_USE_RESULT static MaybeHandle<Object> DeleteProperty( | 1924 MUST_USE_RESULT static MaybeHandle<Object> DeleteProperty( |
| 1925 Handle<JSReceiver> object, | 1925 Handle<JSReceiver> object, |
| 1926 Handle<Name> name, | 1926 Handle<Name> name, |
| 1927 DeleteMode mode = NORMAL_DELETION); | 1927 DeleteMode mode = NORMAL_DELETION); |
| 1928 MUST_USE_RESULT static MaybeHandle<Object> DeleteElement( | 1928 MUST_USE_RESULT static MaybeHandle<Object> DeleteElement( |
| 1929 Handle<JSReceiver> object, | 1929 Handle<JSReceiver> object, |
| 1930 uint32_t index, | 1930 uint32_t index, |
| 1931 DeleteMode mode = NORMAL_DELETION); | 1931 DeleteMode mode = NORMAL_DELETION); |
| 1932 | 1932 |
| 1933 // Tests for the fast common case for property enumeration. | 1933 // Tests for the fast common case for property enumeration. |
| 1934 bool IsSimpleEnum(); | 1934 bool IsSimpleEnum(); |
| 1935 | 1935 |
| 1936 // Returns the class name ([[Class]] property in the specification). | 1936 // Returns the class name ([[Class]] property in the specification). |
| 1937 String* class_name(); | 1937 String* class_name(); |
| 1938 | 1938 |
| 1939 // Returns the constructor name (the name (possibly, inferred name) of the | 1939 // Returns the constructor name (the name (possibly, inferred name) of the |
| 1940 // function that was used to instantiate the object). | 1940 // function that was used to instantiate the object). |
| 1941 String* constructor_name(); | 1941 String* constructor_name(); |
| 1942 | 1942 |
| 1943 static inline PropertyAttributes GetPropertyAttribute( | 1943 static inline PropertyAttributes GetPropertyAttribute( |
| 1944 Handle<JSReceiver> object, | 1944 Handle<JSReceiver> object, |
| 1945 Handle<Name> name); | 1945 Handle<Name> name); |
| 1946 static PropertyAttributes GetPropertyAttributeWithReceiver( | 1946 static PropertyAttributes GetPropertyAttributeWithReceiver( |
| 1947 Handle<JSReceiver> object, | 1947 Handle<JSReceiver> object, |
| 1948 Handle<JSReceiver> receiver, | 1948 Handle<JSReceiver> receiver, |
| 1949 Handle<Name> name); | 1949 Handle<Name> name); |
| 1950 static PropertyAttributes GetLocalPropertyAttribute( | 1950 static PropertyAttributes GetOwnPropertyAttribute( |
| 1951 Handle<JSReceiver> object, | 1951 Handle<JSReceiver> object, |
| 1952 Handle<Name> name); | 1952 Handle<Name> name); |
| 1953 | 1953 |
| 1954 static inline PropertyAttributes GetElementAttribute( | 1954 static inline PropertyAttributes GetElementAttribute( |
| 1955 Handle<JSReceiver> object, | 1955 Handle<JSReceiver> object, |
| 1956 uint32_t index); | 1956 uint32_t index); |
| 1957 static inline PropertyAttributes GetLocalElementAttribute( | 1957 static inline PropertyAttributes GetOwnElementAttribute( |
| 1958 Handle<JSReceiver> object, | 1958 Handle<JSReceiver> object, |
| 1959 uint32_t index); | 1959 uint32_t index); |
| 1960 | 1960 |
| 1961 // Return the object's prototype (might be Heap::null_value()). | 1961 // Return the object's prototype (might be Heap::null_value()). |
| 1962 inline Object* GetPrototype(); | 1962 inline Object* GetPrototype(); |
| 1963 | 1963 |
| 1964 // Return the constructor function (may be Heap::null_value()). | 1964 // Return the constructor function (may be Heap::null_value()). |
| 1965 inline Object* GetConstructor(); | 1965 inline Object* GetConstructor(); |
| 1966 | 1966 |
| 1967 // Retrieves a permanent object identity hash code. The undefined value might | 1967 // Retrieves a permanent object identity hash code. The undefined value might |
| 1968 // be returned in case no hash was created yet. | 1968 // be returned in case no hash was created yet. |
| 1969 inline Object* GetIdentityHash(); | 1969 inline Object* GetIdentityHash(); |
| 1970 | 1970 |
| 1971 // Retrieves a permanent object identity hash code. May create and store a | 1971 // Retrieves a permanent object identity hash code. May create and store a |
| 1972 // hash code if needed and none exists. | 1972 // hash code if needed and none exists. |
| 1973 inline static Handle<Smi> GetOrCreateIdentityHash( | 1973 inline static Handle<Smi> GetOrCreateIdentityHash( |
| 1974 Handle<JSReceiver> object); | 1974 Handle<JSReceiver> object); |
| 1975 | 1975 |
| 1976 // Lookup a property. If found, the result is valid and has | 1976 // Lookup a property. If found, the result is valid and has |
| 1977 // detailed information. | 1977 // detailed information. |
| 1978 void LocalLookup(Handle<Name> name, LookupResult* result, | 1978 void LookupOwn(Handle<Name> name, LookupResult* result, |
| 1979 bool search_hidden_prototypes = false); | 1979 bool search_hidden_prototypes = false); |
| 1980 void Lookup(Handle<Name> name, LookupResult* result); | 1980 void Lookup(Handle<Name> name, LookupResult* result); |
| 1981 | 1981 |
| 1982 enum KeyCollectionType { LOCAL_ONLY, INCLUDE_PROTOS }; | 1982 enum KeyCollectionType { OWN_ONLY, INCLUDE_PROTOS }; |
| 1983 | 1983 |
| 1984 // Computes the enumerable keys for a JSObject. Used for implementing | 1984 // Computes the enumerable keys for a JSObject. Used for implementing |
| 1985 // "for (n in object) { }". | 1985 // "for (n in object) { }". |
| 1986 MUST_USE_RESULT static MaybeHandle<FixedArray> GetKeys( | 1986 MUST_USE_RESULT static MaybeHandle<FixedArray> GetKeys( |
| 1987 Handle<JSReceiver> object, | 1987 Handle<JSReceiver> object, |
| 1988 KeyCollectionType type); | 1988 KeyCollectionType type); |
| 1989 | 1989 |
| 1990 protected: | 1990 protected: |
| 1991 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithDefinedSetter( | 1991 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithDefinedSetter( |
| 1992 Handle<JSReceiver> object, | 1992 Handle<JSReceiver> object, |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2144 | 2144 |
| 2145 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyForResult( | 2145 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyForResult( |
| 2146 Handle<JSObject> object, | 2146 Handle<JSObject> object, |
| 2147 LookupResult* result, | 2147 LookupResult* result, |
| 2148 Handle<Name> name, | 2148 Handle<Name> name, |
| 2149 Handle<Object> value, | 2149 Handle<Object> value, |
| 2150 PropertyAttributes attributes, | 2150 PropertyAttributes attributes, |
| 2151 StrictMode strict_mode, | 2151 StrictMode strict_mode, |
| 2152 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED); | 2152 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED); |
| 2153 | 2153 |
| 2154 MUST_USE_RESULT static MaybeHandle<Object> SetLocalPropertyIgnoreAttributes( | 2154 MUST_USE_RESULT static MaybeHandle<Object> SetOwnPropertyIgnoreAttributes( |
| 2155 Handle<JSObject> object, | 2155 Handle<JSObject> object, |
| 2156 Handle<Name> key, | 2156 Handle<Name> key, |
| 2157 Handle<Object> value, | 2157 Handle<Object> value, |
| 2158 PropertyAttributes attributes, | 2158 PropertyAttributes attributes, |
| 2159 ValueType value_type = OPTIMAL_REPRESENTATION, | 2159 ValueType value_type = OPTIMAL_REPRESENTATION, |
| 2160 StoreMode mode = ALLOW_AS_CONSTANT, | 2160 StoreMode mode = ALLOW_AS_CONSTANT, |
| 2161 ExtensibilityCheck extensibility_check = PERFORM_EXTENSIBILITY_CHECK, | 2161 ExtensibilityCheck extensibility_check = PERFORM_EXTENSIBILITY_CHECK, |
| 2162 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED); | 2162 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED); |
| 2163 | 2163 |
| 2164 static inline Handle<String> ExpectedTransitionKey(Handle<Map> map); | 2164 static inline Handle<String> ExpectedTransitionKey(Handle<Map> map); |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2260 Handle<Object> receiver, | 2260 Handle<Object> receiver, |
| 2261 Handle<Name> name, | 2261 Handle<Name> name, |
| 2262 PropertyAttributes* attributes); | 2262 PropertyAttributes* attributes); |
| 2263 | 2263 |
| 2264 // Returns true if this is an instance of an api function and has | 2264 // Returns true if this is an instance of an api function and has |
| 2265 // been modified since it was created. May give false positives. | 2265 // been modified since it was created. May give false positives. |
| 2266 bool IsDirty(); | 2266 bool IsDirty(); |
| 2267 | 2267 |
| 2268 // Accessors for hidden properties object. | 2268 // Accessors for hidden properties object. |
| 2269 // | 2269 // |
| 2270 // Hidden properties are not local properties of the object itself. | 2270 // Hidden properties are not own properties of the object itself. |
| 2271 // Instead they are stored in an auxiliary structure kept as a local | 2271 // Instead they are stored in an auxiliary structure kept as an own |
| 2272 // property with a special name Heap::hidden_string(). But if the | 2272 // property with a special name Heap::hidden_string(). But if the |
| 2273 // receiver is a JSGlobalProxy then the auxiliary object is a property | 2273 // receiver is a JSGlobalProxy then the auxiliary object is a property |
| 2274 // of its prototype, and if it's a detached proxy, then you can't have | 2274 // of its prototype, and if it's a detached proxy, then you can't have |
| 2275 // hidden properties. | 2275 // hidden properties. |
| 2276 | 2276 |
| 2277 // Sets a hidden property on this object. Returns this object if successful, | 2277 // Sets a hidden property on this object. Returns this object if successful, |
| 2278 // undefined if called on a detached proxy. | 2278 // undefined if called on a detached proxy. |
| 2279 static Handle<Object> SetHiddenProperty(Handle<JSObject> object, | 2279 static Handle<Object> SetHiddenProperty(Handle<JSObject> object, |
| 2280 Handle<Name> key, | 2280 Handle<Name> key, |
| 2281 Handle<Object> value); | 2281 Handle<Object> value); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2331 // be represented as a double and not a Smi. | 2331 // be represented as a double and not a Smi. |
| 2332 bool ShouldConvertToFastDoubleElements(bool* has_smi_only_elements); | 2332 bool ShouldConvertToFastDoubleElements(bool* has_smi_only_elements); |
| 2333 | 2333 |
| 2334 // Computes the new capacity when expanding the elements of a JSObject. | 2334 // Computes the new capacity when expanding the elements of a JSObject. |
| 2335 static int NewElementsCapacity(int old_capacity) { | 2335 static int NewElementsCapacity(int old_capacity) { |
| 2336 // (old_capacity + 50%) + 16 | 2336 // (old_capacity + 50%) + 16 |
| 2337 return old_capacity + (old_capacity >> 1) + 16; | 2337 return old_capacity + (old_capacity >> 1) + 16; |
| 2338 } | 2338 } |
| 2339 | 2339 |
| 2340 // These methods do not perform access checks! | 2340 // These methods do not perform access checks! |
| 2341 MUST_USE_RESULT static MaybeHandle<AccessorPair> GetLocalPropertyAccessorPair( | 2341 MUST_USE_RESULT static MaybeHandle<AccessorPair> GetOwnPropertyAccessorPair( |
| 2342 Handle<JSObject> object, | 2342 Handle<JSObject> object, |
| 2343 Handle<Name> name); | 2343 Handle<Name> name); |
| 2344 MUST_USE_RESULT static MaybeHandle<AccessorPair> GetLocalElementAccessorPair( | 2344 MUST_USE_RESULT static MaybeHandle<AccessorPair> GetOwnElementAccessorPair( |
| 2345 Handle<JSObject> object, | 2345 Handle<JSObject> object, |
| 2346 uint32_t index); | 2346 uint32_t index); |
| 2347 | 2347 |
| 2348 MUST_USE_RESULT static MaybeHandle<Object> SetFastElement( | 2348 MUST_USE_RESULT static MaybeHandle<Object> SetFastElement( |
| 2349 Handle<JSObject> object, | 2349 Handle<JSObject> object, |
| 2350 uint32_t index, | 2350 uint32_t index, |
| 2351 Handle<Object> value, | 2351 Handle<Object> value, |
| 2352 StrictMode strict_mode, | 2352 StrictMode strict_mode, |
| 2353 bool check_prototype); | 2353 bool check_prototype); |
| 2354 | 2354 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2419 // internal fields as well as the number of internal fields. | 2419 // internal fields as well as the number of internal fields. |
| 2420 inline int GetHeaderSize(); | 2420 inline int GetHeaderSize(); |
| 2421 | 2421 |
| 2422 inline int GetInternalFieldCount(); | 2422 inline int GetInternalFieldCount(); |
| 2423 inline int GetInternalFieldOffset(int index); | 2423 inline int GetInternalFieldOffset(int index); |
| 2424 inline Object* GetInternalField(int index); | 2424 inline Object* GetInternalField(int index); |
| 2425 inline void SetInternalField(int index, Object* value); | 2425 inline void SetInternalField(int index, Object* value); |
| 2426 inline void SetInternalField(int index, Smi* value); | 2426 inline void SetInternalField(int index, Smi* value); |
| 2427 | 2427 |
| 2428 // The following lookup functions skip interceptors. | 2428 // The following lookup functions skip interceptors. |
| 2429 void LocalLookupRealNamedProperty(Handle<Name> name, LookupResult* result); | 2429 void LookupOwnRealNamedProperty(Handle<Name> name, LookupResult* result); |
| 2430 void LookupRealNamedProperty(Handle<Name> name, LookupResult* result); | 2430 void LookupRealNamedProperty(Handle<Name> name, LookupResult* result); |
| 2431 void LookupRealNamedPropertyInPrototypes(Handle<Name> name, | 2431 void LookupRealNamedPropertyInPrototypes(Handle<Name> name, |
| 2432 LookupResult* result); | 2432 LookupResult* result); |
| 2433 void LookupCallbackProperty(Handle<Name> name, LookupResult* result); | 2433 void LookupCallbackProperty(Handle<Name> name, LookupResult* result); |
| 2434 | 2434 |
| 2435 // Returns the number of properties on this object filtering out properties | 2435 // Returns the number of properties on this object filtering out properties |
| 2436 // with the specified attributes (ignoring interceptors). | 2436 // with the specified attributes (ignoring interceptors). |
| 2437 int NumberOfLocalProperties(PropertyAttributes filter = NONE); | 2437 int NumberOfOwnProperties(PropertyAttributes filter = NONE); |
| 2438 // Fill in details for properties into storage starting at the specified | 2438 // Fill in details for properties into storage starting at the specified |
| 2439 // index. | 2439 // index. |
| 2440 void GetLocalPropertyNames( | 2440 void GetOwnPropertyNames( |
| 2441 FixedArray* storage, int index, PropertyAttributes filter = NONE); | 2441 FixedArray* storage, int index, PropertyAttributes filter = NONE); |
| 2442 | 2442 |
| 2443 // Returns the number of properties on this object filtering out properties | 2443 // Returns the number of properties on this object filtering out properties |
| 2444 // with the specified attributes (ignoring interceptors). | 2444 // with the specified attributes (ignoring interceptors). |
| 2445 int NumberOfLocalElements(PropertyAttributes filter); | 2445 int NumberOfOwnElements(PropertyAttributes filter); |
| 2446 // Returns the number of enumerable elements (ignoring interceptors). | 2446 // Returns the number of enumerable elements (ignoring interceptors). |
| 2447 int NumberOfEnumElements(); | 2447 int NumberOfEnumElements(); |
| 2448 // Returns the number of elements on this object filtering out elements | 2448 // Returns the number of elements on this object filtering out elements |
| 2449 // with the specified attributes (ignoring interceptors). | 2449 // with the specified attributes (ignoring interceptors). |
| 2450 int GetLocalElementKeys(FixedArray* storage, PropertyAttributes filter); | 2450 int GetOwnElementKeys(FixedArray* storage, PropertyAttributes filter); |
| 2451 // Count and fill in the enumerable elements into storage. | 2451 // Count and fill in the enumerable elements into storage. |
| 2452 // (storage->length() == NumberOfEnumElements()). | 2452 // (storage->length() == NumberOfEnumElements()). |
| 2453 // If storage is NULL, will count the elements without adding | 2453 // If storage is NULL, will count the elements without adding |
| 2454 // them to any storage. | 2454 // them to any storage. |
| 2455 // Returns the number of enumerable elements. | 2455 // Returns the number of enumerable elements. |
| 2456 int GetEnumElementKeys(FixedArray* storage); | 2456 int GetEnumElementKeys(FixedArray* storage); |
| 2457 | 2457 |
| 2458 // Returns a new map with all transitions dropped from the object's current | 2458 // Returns a new map with all transitions dropped from the object's current |
| 2459 // map and the ElementsKind set. | 2459 // map and the ElementsKind set. |
| 2460 static Handle<Map> GetElementsTransitionMap(Handle<JSObject> object, | 2460 static Handle<Map> GetElementsTransitionMap(Handle<JSObject> object, |
| 2461 ElementsKind to_kind); | 2461 ElementsKind to_kind); |
| 2462 static void TransitionElementsKind(Handle<JSObject> object, | 2462 static void TransitionElementsKind(Handle<JSObject> object, |
| 2463 ElementsKind to_kind); | 2463 ElementsKind to_kind); |
| 2464 | 2464 |
| 2465 // TODO(mstarzinger): Both public because of ConvertAnsSetLocalProperty(). | 2465 // TODO(mstarzinger): Both public because of ConvertAndSetOwnProperty(). |
| 2466 static void MigrateToMap(Handle<JSObject> object, Handle<Map> new_map); | 2466 static void MigrateToMap(Handle<JSObject> object, Handle<Map> new_map); |
| 2467 static void GeneralizeFieldRepresentation(Handle<JSObject> object, | 2467 static void GeneralizeFieldRepresentation(Handle<JSObject> object, |
| 2468 int modify_index, | 2468 int modify_index, |
| 2469 Representation new_representation, | 2469 Representation new_representation, |
| 2470 Handle<HeapType> new_field_type, | 2470 Handle<HeapType> new_field_type, |
| 2471 StoreMode store_mode); | 2471 StoreMode store_mode); |
| 2472 | 2472 |
| 2473 // Convert the object to use the canonical dictionary | 2473 // Convert the object to use the canonical dictionary |
| 2474 // representation. If the object is expected to have additional properties | 2474 // representation. If the object is expected to have additional properties |
| 2475 // added this number can be indicated to have the backing store allocated to | 2475 // added this number can be indicated to have the backing store allocated to |
| (...skipping 5400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7876 DECL_ACCESSORS(day, Object) | 7876 DECL_ACCESSORS(day, Object) |
| 7877 // [weekday]: caches day of week. Either undefined, smi, or NaN. | 7877 // [weekday]: caches day of week. Either undefined, smi, or NaN. |
| 7878 DECL_ACCESSORS(weekday, Object) | 7878 DECL_ACCESSORS(weekday, Object) |
| 7879 // [hour]: caches hours. Either undefined, smi, or NaN. | 7879 // [hour]: caches hours. Either undefined, smi, or NaN. |
| 7880 DECL_ACCESSORS(hour, Object) | 7880 DECL_ACCESSORS(hour, Object) |
| 7881 // [min]: caches minutes. Either undefined, smi, or NaN. | 7881 // [min]: caches minutes. Either undefined, smi, or NaN. |
| 7882 DECL_ACCESSORS(min, Object) | 7882 DECL_ACCESSORS(min, Object) |
| 7883 // [sec]: caches seconds. Either undefined, smi, or NaN. | 7883 // [sec]: caches seconds. Either undefined, smi, or NaN. |
| 7884 DECL_ACCESSORS(sec, Object) | 7884 DECL_ACCESSORS(sec, Object) |
| 7885 // [cache stamp]: sample of the date cache stamp at the | 7885 // [cache stamp]: sample of the date cache stamp at the |
| 7886 // moment when local fields were cached. | 7886 // moment when chached fields were cached. |
| 7887 DECL_ACCESSORS(cache_stamp, Object) | 7887 DECL_ACCESSORS(cache_stamp, Object) |
| 7888 | 7888 |
| 7889 // Casting. | 7889 // Casting. |
| 7890 static inline JSDate* cast(Object* obj); | 7890 static inline JSDate* cast(Object* obj); |
| 7891 | 7891 |
| 7892 // Returns the date field with the specified index. | 7892 // Returns the date field with the specified index. |
| 7893 // See FieldIndex for the list of date fields. | 7893 // See FieldIndex for the list of date fields. |
| 7894 static Object* GetField(Object* date, Smi* index); | 7894 static Object* GetField(Object* date, Smi* index); |
| 7895 | 7895 |
| 7896 void SetValue(Object* value, bool is_value_nan); | 7896 void SetValue(Object* value, bool is_value_nan); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7940 static const int kSecOffset = kMinOffset + kPointerSize; | 7940 static const int kSecOffset = kMinOffset + kPointerSize; |
| 7941 static const int kCacheStampOffset = kSecOffset + kPointerSize; | 7941 static const int kCacheStampOffset = kSecOffset + kPointerSize; |
| 7942 static const int kSize = kCacheStampOffset + kPointerSize; | 7942 static const int kSize = kCacheStampOffset + kPointerSize; |
| 7943 | 7943 |
| 7944 private: | 7944 private: |
| 7945 inline Object* DoGetField(FieldIndex index); | 7945 inline Object* DoGetField(FieldIndex index); |
| 7946 | 7946 |
| 7947 Object* GetUTCField(FieldIndex index, double value, DateCache* date_cache); | 7947 Object* GetUTCField(FieldIndex index, double value, DateCache* date_cache); |
| 7948 | 7948 |
| 7949 // Computes and caches the cacheable fields of the date. | 7949 // Computes and caches the cacheable fields of the date. |
| 7950 inline void SetLocalFields(int64_t local_time_ms, DateCache* date_cache); | 7950 inline void SetCachedFields(int64_t local_time_ms, DateCache* date_cache); |
| 7951 | 7951 |
| 7952 | 7952 |
| 7953 DISALLOW_IMPLICIT_CONSTRUCTORS(JSDate); | 7953 DISALLOW_IMPLICIT_CONSTRUCTORS(JSDate); |
| 7954 }; | 7954 }; |
| 7955 | 7955 |
| 7956 | 7956 |
| 7957 // Representation of message objects used for error reporting through | 7957 // Representation of message objects used for error reporting through |
| 7958 // the API. The messages are formatted in JavaScript so this object is | 7958 // the API. The messages are formatted in JavaScript so this object is |
| 7959 // a real JavaScript object. The information used for formatting the | 7959 // a real JavaScript object. The information used for formatting the |
| 7960 // error messages are not directly accessible from JavaScript to | 7960 // error messages are not directly accessible from JavaScript to |
| (...skipping 2602 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10563 }; | 10563 }; |
| 10564 | 10564 |
| 10565 | 10565 |
| 10566 // An accessor must have a getter, but can have no setter. | 10566 // An accessor must have a getter, but can have no setter. |
| 10567 // | 10567 // |
| 10568 // When setting a property, V8 searches accessors in prototypes. | 10568 // When setting a property, V8 searches accessors in prototypes. |
| 10569 // If an accessor was found and it does not have a setter, | 10569 // If an accessor was found and it does not have a setter, |
| 10570 // the request is ignored. | 10570 // the request is ignored. |
| 10571 // | 10571 // |
| 10572 // If the accessor in the prototype has the READ_ONLY property attribute, then | 10572 // If the accessor in the prototype has the READ_ONLY property attribute, then |
| 10573 // a new value is added to the local object when the property is set. | 10573 // a new value is added to the derived object when the property is set. |
| 10574 // This shadows the accessor in the prototype. | 10574 // This shadows the accessor in the prototype. |
| 10575 class ExecutableAccessorInfo: public AccessorInfo { | 10575 class ExecutableAccessorInfo: public AccessorInfo { |
| 10576 public: | 10576 public: |
| 10577 DECL_ACCESSORS(getter, Object) | 10577 DECL_ACCESSORS(getter, Object) |
| 10578 DECL_ACCESSORS(setter, Object) | 10578 DECL_ACCESSORS(setter, Object) |
| 10579 DECL_ACCESSORS(data, Object) | 10579 DECL_ACCESSORS(data, Object) |
| 10580 | 10580 |
| 10581 static inline ExecutableAccessorInfo* cast(Object* obj); | 10581 static inline ExecutableAccessorInfo* cast(Object* obj); |
| 10582 | 10582 |
| 10583 // Dispatched behavior. | 10583 // Dispatched behavior. |
| (...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11117 } else { | 11117 } else { |
| 11118 value &= ~(1 << bit_position); | 11118 value &= ~(1 << bit_position); |
| 11119 } | 11119 } |
| 11120 return value; | 11120 return value; |
| 11121 } | 11121 } |
| 11122 }; | 11122 }; |
| 11123 | 11123 |
| 11124 } } // namespace v8::internal | 11124 } } // namespace v8::internal |
| 11125 | 11125 |
| 11126 #endif // V8_OBJECTS_H_ | 11126 #endif // V8_OBJECTS_H_ |
| OLD | NEW |