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 "src/allocation.h" | 8 #include "src/allocation.h" |
9 #include "src/assert-scope.h" | 9 #include "src/assert-scope.h" |
10 #include "src/builtins.h" | 10 #include "src/builtins.h" |
(...skipping 2408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2419 // Returns the number of enumerable elements. | 2419 // Returns the number of enumerable elements. |
2420 int GetEnumElementKeys(FixedArray* storage); | 2420 int GetEnumElementKeys(FixedArray* storage); |
2421 | 2421 |
2422 // Returns a new map with all transitions dropped from the object's current | 2422 // Returns a new map with all transitions dropped from the object's current |
2423 // map and the ElementsKind set. | 2423 // map and the ElementsKind set. |
2424 static Handle<Map> GetElementsTransitionMap(Handle<JSObject> object, | 2424 static Handle<Map> GetElementsTransitionMap(Handle<JSObject> object, |
2425 ElementsKind to_kind); | 2425 ElementsKind to_kind); |
2426 static void TransitionElementsKind(Handle<JSObject> object, | 2426 static void TransitionElementsKind(Handle<JSObject> object, |
2427 ElementsKind to_kind); | 2427 ElementsKind to_kind); |
2428 | 2428 |
2429 // TODO(mstarzinger): Both public because of ConvertAndSetOwnProperty(). | |
2430 static void MigrateToMap(Handle<JSObject> object, Handle<Map> new_map); | 2429 static void MigrateToMap(Handle<JSObject> object, Handle<Map> new_map); |
2431 static void GeneralizeFieldRepresentation(Handle<JSObject> object, | |
2432 int modify_index, | |
2433 Representation new_representation, | |
2434 Handle<HeapType> new_field_type, | |
2435 StoreMode store_mode); | |
2436 | 2430 |
2437 // Convert the object to use the canonical dictionary | 2431 // Convert the object to use the canonical dictionary |
2438 // representation. If the object is expected to have additional properties | 2432 // representation. If the object is expected to have additional properties |
2439 // added this number can be indicated to have the backing store allocated to | 2433 // added this number can be indicated to have the backing store allocated to |
2440 // an initial capacity for holding these properties. | 2434 // an initial capacity for holding these properties. |
2441 static void NormalizeProperties(Handle<JSObject> object, | 2435 static void NormalizeProperties(Handle<JSObject> object, |
2442 PropertyNormalizationMode mode, | 2436 PropertyNormalizationMode mode, |
2443 int expected_additional_properties); | 2437 int expected_additional_properties); |
2444 | 2438 |
2445 // Convert and update the elements backing store to be a | 2439 // Convert and update the elements backing store to be a |
2446 // SeededNumberDictionary dictionary. Returns the backing after conversion. | 2440 // SeededNumberDictionary dictionary. Returns the backing after conversion. |
2447 static Handle<SeededNumberDictionary> NormalizeElements( | 2441 static Handle<SeededNumberDictionary> NormalizeElements( |
2448 Handle<JSObject> object); | 2442 Handle<JSObject> object); |
2449 | 2443 |
2450 // Transform slow named properties to fast variants. | 2444 // Transform slow named properties to fast variants. |
2451 static void TransformToFastProperties(Handle<JSObject> object, | 2445 static void MigrateSlowToFast(Handle<JSObject> object, |
2452 int unused_property_fields); | 2446 int unused_property_fields); |
2453 | 2447 |
2454 // Access fast-case object properties at index. | 2448 // Access fast-case object properties at index. |
2455 static Handle<Object> FastPropertyAt(Handle<JSObject> object, | 2449 static Handle<Object> FastPropertyAt(Handle<JSObject> object, |
2456 Representation representation, | 2450 Representation representation, |
2457 FieldIndex index); | 2451 FieldIndex index); |
2458 inline Object* RawFastPropertyAt(FieldIndex index); | 2452 inline Object* RawFastPropertyAt(FieldIndex index); |
2459 inline void FastPropertyAtPut(FieldIndex index, Object* value); | 2453 inline void FastPropertyAtPut(FieldIndex index, Object* value); |
2460 void WriteToField(int descriptor, Object* value); | 2454 void WriteToField(int descriptor, Object* value); |
2461 | 2455 |
2462 // Access to in object properties. | 2456 // Access to in object properties. |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2631 private: | 2625 private: |
2632 friend class DictionaryElementsAccessor; | 2626 friend class DictionaryElementsAccessor; |
2633 friend class JSReceiver; | 2627 friend class JSReceiver; |
2634 friend class Object; | 2628 friend class Object; |
2635 | 2629 |
2636 static void MigrateFastToFast(Handle<JSObject> object, Handle<Map> new_map); | 2630 static void MigrateFastToFast(Handle<JSObject> object, Handle<Map> new_map); |
2637 static void MigrateFastToSlow(Handle<JSObject> object, | 2631 static void MigrateFastToSlow(Handle<JSObject> object, |
2638 Handle<Map> new_map, | 2632 Handle<Map> new_map, |
2639 int expected_additional_properties); | 2633 int expected_additional_properties); |
2640 | 2634 |
| 2635 static void SetPropertyToField(LookupResult* lookup, Handle<Object> value); |
| 2636 |
| 2637 static void ConvertAndSetOwnProperty(LookupResult* lookup, |
| 2638 Handle<Name> name, |
| 2639 Handle<Object> value, |
| 2640 PropertyAttributes attributes); |
| 2641 |
| 2642 static void SetPropertyToFieldWithAttributes(LookupResult* lookup, |
| 2643 Handle<Name> name, |
| 2644 Handle<Object> value, |
| 2645 PropertyAttributes attributes); |
| 2646 static void GeneralizeFieldRepresentation(Handle<JSObject> object, |
| 2647 int modify_index, |
| 2648 Representation new_representation, |
| 2649 Handle<HeapType> new_field_type, |
| 2650 StoreMode store_mode); |
| 2651 |
2641 static void UpdateAllocationSite(Handle<JSObject> object, | 2652 static void UpdateAllocationSite(Handle<JSObject> object, |
2642 ElementsKind to_kind); | 2653 ElementsKind to_kind); |
2643 | 2654 |
2644 // Used from Object::GetProperty(). | 2655 // Used from Object::GetProperty(). |
2645 MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithFailedAccessCheck( | 2656 MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithFailedAccessCheck( |
2646 LookupIterator* it); | 2657 LookupIterator* it); |
2647 | 2658 |
2648 MUST_USE_RESULT static MaybeHandle<Object> GetElementWithCallback( | 2659 MUST_USE_RESULT static MaybeHandle<Object> GetElementWithCallback( |
2649 Handle<JSObject> object, | 2660 Handle<JSObject> object, |
2650 Handle<Object> receiver, | 2661 Handle<Object> receiver, |
(...skipping 8501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11152 } else { | 11163 } else { |
11153 value &= ~(1 << bit_position); | 11164 value &= ~(1 << bit_position); |
11154 } | 11165 } |
11155 return value; | 11166 return value; |
11156 } | 11167 } |
11157 }; | 11168 }; |
11158 | 11169 |
11159 } } // namespace v8::internal | 11170 } } // namespace v8::internal |
11160 | 11171 |
11161 #endif // V8_OBJECTS_H_ | 11172 #endif // V8_OBJECTS_H_ |
OLD | NEW |