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 <iosfwd> | 8 #include <iosfwd> |
9 | 9 |
10 #include "src/allocation.h" | 10 #include "src/allocation.h" |
(...skipping 2198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2209 // Support functions for v8 api (needed for correct interceptor behavior). | 2209 // Support functions for v8 api (needed for correct interceptor behavior). |
2210 MUST_USE_RESULT static Maybe<bool> HasRealNamedProperty( | 2210 MUST_USE_RESULT static Maybe<bool> HasRealNamedProperty( |
2211 Handle<JSObject> object, Handle<Name> name); | 2211 Handle<JSObject> object, Handle<Name> name); |
2212 MUST_USE_RESULT static Maybe<bool> HasRealElementProperty( | 2212 MUST_USE_RESULT static Maybe<bool> HasRealElementProperty( |
2213 Handle<JSObject> object, uint32_t index); | 2213 Handle<JSObject> object, uint32_t index); |
2214 MUST_USE_RESULT static Maybe<bool> HasRealNamedCallbackProperty( | 2214 MUST_USE_RESULT static Maybe<bool> HasRealNamedCallbackProperty( |
2215 Handle<JSObject> object, Handle<Name> name); | 2215 Handle<JSObject> object, Handle<Name> name); |
2216 | 2216 |
2217 // Get the header size for a JSObject. Used to compute the index of | 2217 // Get the header size for a JSObject. Used to compute the index of |
2218 // internal fields as well as the number of internal fields. | 2218 // internal fields as well as the number of internal fields. |
| 2219 static inline int GetHeaderSize(InstanceType instance_type); |
2219 inline int GetHeaderSize(); | 2220 inline int GetHeaderSize(); |
2220 | 2221 |
| 2222 // Get the size of the header with internal fields of a JSObject. |
| 2223 // Used to calculate the instance size. |
| 2224 static inline int GetHeaderWithInternalFieldsSize(InstanceType instance_type); |
| 2225 |
2221 inline int GetInternalFieldCount(); | 2226 inline int GetInternalFieldCount(); |
2222 inline int GetInternalFieldOffset(int index); | 2227 inline int GetInternalFieldOffset(int index); |
2223 inline Object* GetInternalField(int index); | 2228 inline Object* GetInternalField(int index); |
2224 inline void SetInternalField(int index, Object* value); | 2229 inline void SetInternalField(int index, Object* value); |
2225 inline void SetInternalField(int index, Smi* value); | 2230 inline void SetInternalField(int index, Smi* value); |
2226 | 2231 |
2227 // Returns the number of properties on this object filtering out properties | 2232 // Returns the number of properties on this object filtering out properties |
2228 // with the specified attributes (ignoring interceptors). | 2233 // with the specified attributes (ignoring interceptors). |
2229 int NumberOfOwnProperties(PropertyAttributes filter = NONE); | 2234 int NumberOfOwnProperties(PropertyAttributes filter = NONE); |
2230 // Fill in details for properties into storage starting at the specified | 2235 // Fill in details for properties into storage starting at the specified |
(...skipping 4548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6779 // Whether this function is defined in native code or extensions. | 6784 // Whether this function is defined in native code or extensions. |
6780 inline bool IsBuiltin(); | 6785 inline bool IsBuiltin(); |
6781 | 6786 |
6782 // Check whether or not this function is inlineable. | 6787 // Check whether or not this function is inlineable. |
6783 bool IsInlineable(); | 6788 bool IsInlineable(); |
6784 | 6789 |
6785 // Source size of this function. | 6790 // Source size of this function. |
6786 int SourceSize(); | 6791 int SourceSize(); |
6787 | 6792 |
6788 // Calculate the instance size. | 6793 // Calculate the instance size. |
6789 int CalculateInstanceSize(); | 6794 int CalculateInstanceSize(InstanceType instance_type); |
6790 | 6795 |
6791 // Calculate the number of in-object properties. | 6796 // Calculate the number of in-object properties. |
6792 int CalculateInObjectProperties(); | 6797 int CalculateInObjectProperties(InstanceType instance_type); |
6793 | 6798 |
6794 inline bool has_simple_parameters(); | 6799 inline bool has_simple_parameters(); |
6795 | 6800 |
6796 // Initialize a SharedFunctionInfo from a parsed function literal. | 6801 // Initialize a SharedFunctionInfo from a parsed function literal. |
6797 static void InitFromFunctionLiteral(Handle<SharedFunctionInfo> shared_info, | 6802 static void InitFromFunctionLiteral(Handle<SharedFunctionInfo> shared_info, |
6798 FunctionLiteral* lit); | 6803 FunctionLiteral* lit); |
6799 | 6804 |
6800 // Dispatched behavior. | 6805 // Dispatched behavior. |
6801 DECLARE_PRINTER(SharedFunctionInfo) | 6806 DECLARE_PRINTER(SharedFunctionInfo) |
6802 DECLARE_VERIFIER(SharedFunctionInfo) | 6807 DECLARE_VERIFIER(SharedFunctionInfo) |
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7279 | 7284 |
7280 inline BindingsArray* function_bindings(); | 7285 inline BindingsArray* function_bindings(); |
7281 inline void set_function_bindings(BindingsArray* bindings); | 7286 inline void set_function_bindings(BindingsArray* bindings); |
7282 | 7287 |
7283 // The initial map for an object created by this constructor. | 7288 // The initial map for an object created by this constructor. |
7284 inline Map* initial_map(); | 7289 inline Map* initial_map(); |
7285 static void SetInitialMap(Handle<JSFunction> function, Handle<Map> map, | 7290 static void SetInitialMap(Handle<JSFunction> function, Handle<Map> map, |
7286 Handle<Object> prototype); | 7291 Handle<Object> prototype); |
7287 inline bool has_initial_map(); | 7292 inline bool has_initial_map(); |
7288 static void EnsureHasInitialMap(Handle<JSFunction> function); | 7293 static void EnsureHasInitialMap(Handle<JSFunction> function); |
| 7294 static Handle<Map> EnsureDerivedHasInitialMap( |
| 7295 Handle<JSFunction> original_constructor, Handle<JSFunction> constructor); |
7289 | 7296 |
7290 // Get and set the prototype property on a JSFunction. If the | 7297 // Get and set the prototype property on a JSFunction. If the |
7291 // function has an initial map the prototype is set on the initial | 7298 // function has an initial map the prototype is set on the initial |
7292 // map. Otherwise, the prototype is put in the initial map field | 7299 // map. Otherwise, the prototype is put in the initial map field |
7293 // until an initial map is needed. | 7300 // until an initial map is needed. |
7294 inline bool has_prototype(); | 7301 inline bool has_prototype(); |
7295 inline bool has_instance_prototype(); | 7302 inline bool has_instance_prototype(); |
7296 inline Object* prototype(); | 7303 inline Object* prototype(); |
7297 inline Object* instance_prototype(); | 7304 inline Object* instance_prototype(); |
7298 static void SetPrototype(Handle<JSFunction> function, | 7305 static void SetPrototype(Handle<JSFunction> function, |
(...skipping 3481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10780 // (elements + properties) in the current level. | 10787 // (elements + properties) in the current level. |
10781 int levelLength_; | 10788 int levelLength_; |
10782 | 10789 |
10783 DISALLOW_COPY_AND_ASSIGN(KeyAccumulator); | 10790 DISALLOW_COPY_AND_ASSIGN(KeyAccumulator); |
10784 }; | 10791 }; |
10785 | 10792 |
10786 } // NOLINT, false-positive due to second-order macros. | 10793 } // NOLINT, false-positive due to second-order macros. |
10787 } // NOLINT, false-positive due to second-order macros. | 10794 } // NOLINT, false-positive due to second-order macros. |
10788 | 10795 |
10789 #endif // V8_OBJECTS_H_ | 10796 #endif // V8_OBJECTS_H_ |
OLD | NEW |