| 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 1462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1473 return IsSmi(); | 1473 return IsSmi(); |
| 1474 } else if (FLAG_track_double_fields && representation.IsDouble()) { | 1474 } else if (FLAG_track_double_fields && representation.IsDouble()) { |
| 1475 return IsNumber(); | 1475 return IsNumber(); |
| 1476 } else if (FLAG_track_heap_object_fields && representation.IsHeapObject()) { | 1476 } else if (FLAG_track_heap_object_fields && representation.IsHeapObject()) { |
| 1477 return IsHeapObject(); | 1477 return IsHeapObject(); |
| 1478 } | 1478 } |
| 1479 return true; | 1479 return true; |
| 1480 } | 1480 } |
| 1481 | 1481 |
| 1482 inline MaybeObject* AllocateNewStorageFor(Heap* heap, | 1482 inline MaybeObject* AllocateNewStorageFor(Heap* heap, |
| 1483 Representation representation, | 1483 Representation representation); |
| 1484 PretenureFlag tenure = NOT_TENURED); | |
| 1485 | 1484 |
| 1486 // Returns true if the object is of the correct type to be used as a | 1485 // Returns true if the object is of the correct type to be used as a |
| 1487 // implementation of a JSObject's elements. | 1486 // implementation of a JSObject's elements. |
| 1488 inline bool HasValidElements(); | 1487 inline bool HasValidElements(); |
| 1489 | 1488 |
| 1490 inline bool HasSpecificClassOf(String* name); | 1489 inline bool HasSpecificClassOf(String* name); |
| 1491 | 1490 |
| 1492 MUST_USE_RESULT MaybeObject* ToObject(Isolate* isolate); // ECMA-262 9.9. | 1491 MUST_USE_RESULT MaybeObject* ToObject(Isolate* isolate); // ECMA-262 9.9. |
| 1493 bool BooleanValue(); // ECMA-262 9.2. | 1492 bool BooleanValue(); // ECMA-262 9.2. |
| 1494 | 1493 |
| (...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2205 // Try to follow an existing transition to a field with attributes NONE. The | 2204 // Try to follow an existing transition to a field with attributes NONE. The |
| 2206 // return value indicates whether the transition was successful. | 2205 // return value indicates whether the transition was successful. |
| 2207 static inline Handle<Map> FindTransitionToField(Handle<Map> map, | 2206 static inline Handle<Map> FindTransitionToField(Handle<Map> map, |
| 2208 Handle<Name> key); | 2207 Handle<Name> key); |
| 2209 | 2208 |
| 2210 inline int LastAddedFieldIndex(); | 2209 inline int LastAddedFieldIndex(); |
| 2211 | 2210 |
| 2212 // Extend the receiver with a single fast property appeared first in the | 2211 // Extend the receiver with a single fast property appeared first in the |
| 2213 // passed map. This also extends the property backing store if necessary. | 2212 // passed map. This also extends the property backing store if necessary. |
| 2214 static void AllocateStorageForMap(Handle<JSObject> object, Handle<Map> map); | 2213 static void AllocateStorageForMap(Handle<JSObject> object, Handle<Map> map); |
| 2215 inline MUST_USE_RESULT MaybeObject* AllocateStorageForMap(Map* map); | |
| 2216 | 2214 |
| 2215 // Migrates the given object to a map whose field representations are the |
| 2216 // lowest upper bound of all known representations for that field. |
| 2217 static void MigrateInstance(Handle<JSObject> instance); | 2217 static void MigrateInstance(Handle<JSObject> instance); |
| 2218 | 2218 |
| 2219 // Migrates the given object only if the target map is already available, |
| 2220 // or returns an empty handle if such a map is not yet available. |
| 2219 static Handle<Object> TryMigrateInstance(Handle<JSObject> instance); | 2221 static Handle<Object> TryMigrateInstance(Handle<JSObject> instance); |
| 2220 inline MUST_USE_RESULT MaybeObject* TryMigrateInstance(); | |
| 2221 | 2222 |
| 2222 // Can cause GC. | 2223 // Can cause GC. |
| 2223 MUST_USE_RESULT MaybeObject* SetLocalPropertyIgnoreAttributesTrampoline( | 2224 MUST_USE_RESULT MaybeObject* SetLocalPropertyIgnoreAttributesTrampoline( |
| 2224 Name* key, | 2225 Name* key, |
| 2225 Object* value, | 2226 Object* value, |
| 2226 PropertyAttributes attributes, | 2227 PropertyAttributes attributes, |
| 2227 ValueType value_type = OPTIMAL_REPRESENTATION, | 2228 ValueType value_type = OPTIMAL_REPRESENTATION, |
| 2228 StoreMode mode = ALLOW_AS_CONSTANT, | 2229 StoreMode mode = ALLOW_AS_CONSTANT, |
| 2229 ExtensibilityCheck extensibility_check = PERFORM_EXTENSIBILITY_CHECK); | 2230 ExtensibilityCheck extensibility_check = PERFORM_EXTENSIBILITY_CHECK); |
| 2230 | 2231 |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2498 // Returns a new map with all transitions dropped from the object's current | 2499 // Returns a new map with all transitions dropped from the object's current |
| 2499 // map and the ElementsKind set. | 2500 // map and the ElementsKind set. |
| 2500 static Handle<Map> GetElementsTransitionMap(Handle<JSObject> object, | 2501 static Handle<Map> GetElementsTransitionMap(Handle<JSObject> object, |
| 2501 ElementsKind to_kind); | 2502 ElementsKind to_kind); |
| 2502 inline MUST_USE_RESULT MaybeObject* GetElementsTransitionMap( | 2503 inline MUST_USE_RESULT MaybeObject* GetElementsTransitionMap( |
| 2503 Isolate* isolate, | 2504 Isolate* isolate, |
| 2504 ElementsKind elements_kind); | 2505 ElementsKind elements_kind); |
| 2505 MUST_USE_RESULT MaybeObject* GetElementsTransitionMapSlow( | 2506 MUST_USE_RESULT MaybeObject* GetElementsTransitionMapSlow( |
| 2506 ElementsKind elements_kind); | 2507 ElementsKind elements_kind); |
| 2507 | 2508 |
| 2508 static Handle<Object> TransitionElementsKind(Handle<JSObject> object, | 2509 static void TransitionElementsKind(Handle<JSObject> object, |
| 2509 ElementsKind to_kind); | 2510 ElementsKind to_kind); |
| 2510 | 2511 |
| 2511 MUST_USE_RESULT MaybeObject* TransitionElementsKind(ElementsKind to_kind); | 2512 MUST_USE_RESULT MaybeObject* TransitionElementsKind(ElementsKind to_kind); |
| 2512 MUST_USE_RESULT MaybeObject* UpdateAllocationSite(ElementsKind to_kind); | 2513 MUST_USE_RESULT MaybeObject* UpdateAllocationSite(ElementsKind to_kind); |
| 2513 | 2514 |
| 2515 // TODO(mstarzinger): Both public because of ConvertAnsSetLocalProperty(). |
| 2514 static void MigrateToMap(Handle<JSObject> object, Handle<Map> new_map); | 2516 static void MigrateToMap(Handle<JSObject> object, Handle<Map> new_map); |
| 2515 MUST_USE_RESULT MaybeObject* MigrateToMap(Map* new_map); | |
| 2516 static void GeneralizeFieldRepresentation(Handle<JSObject> object, | 2517 static void GeneralizeFieldRepresentation(Handle<JSObject> object, |
| 2517 int modify_index, | 2518 int modify_index, |
| 2518 Representation new_representation, | 2519 Representation new_representation, |
| 2519 StoreMode store_mode); | 2520 StoreMode store_mode); |
| 2520 | 2521 |
| 2521 // Convert the object to use the canonical dictionary | 2522 // Convert the object to use the canonical dictionary |
| 2522 // representation. If the object is expected to have additional properties | 2523 // representation. If the object is expected to have additional properties |
| 2523 // added this number can be indicated to have the backing store allocated to | 2524 // added this number can be indicated to have the backing store allocated to |
| 2524 // an initial capacity for holding these properties. | 2525 // an initial capacity for holding these properties. |
| 2525 static void NormalizeProperties(Handle<JSObject> object, | 2526 static void NormalizeProperties(Handle<JSObject> object, |
| 2526 PropertyNormalizationMode mode, | 2527 PropertyNormalizationMode mode, |
| 2527 int expected_additional_properties); | 2528 int expected_additional_properties); |
| 2528 | 2529 |
| 2529 MUST_USE_RESULT MaybeObject* NormalizeProperties( | |
| 2530 PropertyNormalizationMode mode, | |
| 2531 int expected_additional_properties); | |
| 2532 | |
| 2533 // Convert and update the elements backing store to be a | 2530 // Convert and update the elements backing store to be a |
| 2534 // SeededNumberDictionary dictionary. Returns the backing after conversion. | 2531 // SeededNumberDictionary dictionary. Returns the backing after conversion. |
| 2535 static Handle<SeededNumberDictionary> NormalizeElements( | 2532 static Handle<SeededNumberDictionary> NormalizeElements( |
| 2536 Handle<JSObject> object); | 2533 Handle<JSObject> object); |
| 2537 | 2534 |
| 2538 MUST_USE_RESULT MaybeObject* NormalizeElements(); | 2535 MUST_USE_RESULT MaybeObject* NormalizeElements(); |
| 2539 | 2536 |
| 2540 // Transform slow named properties to fast variants. | 2537 // Transform slow named properties to fast variants. |
| 2541 // Returns failure if allocation failed. | |
| 2542 static void TransformToFastProperties(Handle<JSObject> object, | 2538 static void TransformToFastProperties(Handle<JSObject> object, |
| 2543 int unused_property_fields); | 2539 int unused_property_fields); |
| 2544 | 2540 |
| 2545 MUST_USE_RESULT MaybeObject* TransformToFastProperties( | |
| 2546 int unused_property_fields); | |
| 2547 | |
| 2548 // Access fast-case object properties at index. | 2541 // Access fast-case object properties at index. |
| 2549 MUST_USE_RESULT inline MaybeObject* FastPropertyAt( | 2542 MUST_USE_RESULT inline MaybeObject* FastPropertyAt( |
| 2550 Representation representation, | 2543 Representation representation, |
| 2551 int index); | 2544 int index); |
| 2552 inline Object* RawFastPropertyAt(int index); | 2545 inline Object* RawFastPropertyAt(int index); |
| 2553 inline void FastPropertyAtPut(int index, Object* value); | 2546 inline void FastPropertyAtPut(int index, Object* value); |
| 2554 | 2547 |
| 2555 // Access to in object properties. | 2548 // Access to in object properties. |
| 2556 inline int GetInObjectPropertyOffset(int index); | 2549 inline int GetInObjectPropertyOffset(int index); |
| 2557 inline Object* InObjectPropertyAt(int index); | 2550 inline Object* InObjectPropertyAt(int index); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 2570 // pre_allocated_value and the rest with filler_value. | 2563 // pre_allocated_value and the rest with filler_value. |
| 2571 // Note: this call does not update write barrier, the caller is responsible | 2564 // Note: this call does not update write barrier, the caller is responsible |
| 2572 // to ensure that |filler_value| can be collected without WB here. | 2565 // to ensure that |filler_value| can be collected without WB here. |
| 2573 inline void InitializeBody(Map* map, | 2566 inline void InitializeBody(Map* map, |
| 2574 Object* pre_allocated_value, | 2567 Object* pre_allocated_value, |
| 2575 Object* filler_value); | 2568 Object* filler_value); |
| 2576 | 2569 |
| 2577 // Check whether this object references another object | 2570 // Check whether this object references another object |
| 2578 bool ReferencesObject(Object* obj); | 2571 bool ReferencesObject(Object* obj); |
| 2579 | 2572 |
| 2580 // Casting. | |
| 2581 static inline JSObject* cast(Object* obj); | |
| 2582 | |
| 2583 // Disalow further properties to be added to the object. | 2573 // Disalow further properties to be added to the object. |
| 2584 static Handle<Object> PreventExtensions(Handle<JSObject> object); | 2574 static Handle<Object> PreventExtensions(Handle<JSObject> object); |
| 2585 MUST_USE_RESULT MaybeObject* PreventExtensions(); | |
| 2586 | 2575 |
| 2587 // ES5 Object.freeze | 2576 // ES5 Object.freeze |
| 2588 static Handle<Object> Freeze(Handle<JSObject> object); | 2577 static Handle<Object> Freeze(Handle<JSObject> object); |
| 2589 | 2578 |
| 2590 // Called the first time an object is observed with ES7 Object.observe. | 2579 // Called the first time an object is observed with ES7 Object.observe. |
| 2591 MUST_USE_RESULT MaybeObject* SetObserved(Isolate* isolate); | 2580 MUST_USE_RESULT MaybeObject* SetObserved(Isolate* isolate); |
| 2592 | 2581 |
| 2593 // Copy object. | 2582 // Copy object. |
| 2594 static Handle<JSObject> Copy(Handle<JSObject> object); | 2583 static Handle<JSObject> Copy(Handle<JSObject> object); |
| 2595 static Handle<JSObject> DeepCopy(Handle<JSObject> object); | 2584 static Handle<JSObject> DeepCopy(Handle<JSObject> object); |
| 2596 | 2585 |
| 2586 // Casting. |
| 2587 static inline JSObject* cast(Object* obj); |
| 2588 |
| 2597 // Dispatched behavior. | 2589 // Dispatched behavior. |
| 2598 void JSObjectShortPrint(StringStream* accumulator); | 2590 void JSObjectShortPrint(StringStream* accumulator); |
| 2599 DECLARE_PRINTER(JSObject) | 2591 DECLARE_PRINTER(JSObject) |
| 2600 DECLARE_VERIFIER(JSObject) | 2592 DECLARE_VERIFIER(JSObject) |
| 2601 #ifdef OBJECT_PRINT | 2593 #ifdef OBJECT_PRINT |
| 2602 void PrintProperties(FILE* out = stdout); | 2594 void PrintProperties(FILE* out = stdout); |
| 2603 void PrintElements(FILE* out = stdout); | 2595 void PrintElements(FILE* out = stdout); |
| 2604 void PrintTransitions(FILE* out = stdout); | 2596 void PrintTransitions(FILE* out = stdout); |
| 2605 #endif | 2597 #endif |
| 2606 | 2598 |
| (...skipping 1657 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4264 }; | 4256 }; |
| 4265 | 4257 |
| 4266 | 4258 |
| 4267 // The cache for maps used by normalized (dictionary mode) objects. | 4259 // The cache for maps used by normalized (dictionary mode) objects. |
| 4268 // Such maps do not have property descriptors, so a typical program | 4260 // Such maps do not have property descriptors, so a typical program |
| 4269 // needs very limited number of distinct normalized maps. | 4261 // needs very limited number of distinct normalized maps. |
| 4270 class NormalizedMapCache: public FixedArray { | 4262 class NormalizedMapCache: public FixedArray { |
| 4271 public: | 4263 public: |
| 4272 static const int kEntries = 64; | 4264 static const int kEntries = 64; |
| 4273 | 4265 |
| 4274 MUST_USE_RESULT MaybeObject* Get(JSObject* object, | 4266 static Handle<Map> Get(Handle<NormalizedMapCache> cache, |
| 4275 PropertyNormalizationMode mode); | 4267 Handle<JSObject> object, |
| 4268 PropertyNormalizationMode mode); |
| 4276 | 4269 |
| 4277 void Clear(); | 4270 void Clear(); |
| 4278 | 4271 |
| 4279 // Casting | 4272 // Casting |
| 4280 static inline NormalizedMapCache* cast(Object* obj); | 4273 static inline NormalizedMapCache* cast(Object* obj); |
| 4281 | 4274 |
| 4282 DECLARE_VERIFIER(NormalizedMapCache) | 4275 DECLARE_VERIFIER(NormalizedMapCache) |
| 4283 }; | 4276 }; |
| 4284 | 4277 |
| 4285 | 4278 |
| (...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4846 enum StubType { | 4839 enum StubType { |
| 4847 NORMAL, | 4840 NORMAL, |
| 4848 FIELD, | 4841 FIELD, |
| 4849 CONSTANT, | 4842 CONSTANT, |
| 4850 CALLBACKS, | 4843 CALLBACKS, |
| 4851 INTERCEPTOR, | 4844 INTERCEPTOR, |
| 4852 TRANSITION, | 4845 TRANSITION, |
| 4853 NONEXISTENT | 4846 NONEXISTENT |
| 4854 }; | 4847 }; |
| 4855 | 4848 |
| 4856 enum StubHolder { | |
| 4857 OWN_STUB, | |
| 4858 PROTOTYPE_STUB | |
| 4859 }; | |
| 4860 | |
| 4861 typedef int ExtraICState; | 4849 typedef int ExtraICState; |
| 4862 | 4850 |
| 4863 static const ExtraICState kNoExtraICState = 0; | 4851 static const ExtraICState kNoExtraICState = 0; |
| 4864 | 4852 |
| 4865 #ifdef ENABLE_DISASSEMBLER | 4853 #ifdef ENABLE_DISASSEMBLER |
| 4866 // Printing | 4854 // Printing |
| 4867 static const char* ICState2String(InlineCacheState state); | 4855 static const char* ICState2String(InlineCacheState state); |
| 4868 static const char* StubType2String(StubType type); | 4856 static const char* StubType2String(StubType type); |
| 4869 static void PrintExtraICState(FILE* out, Kind kind, ExtraICState extra); | 4857 static void PrintExtraICState(FILE* out, Kind kind, ExtraICState extra); |
| 4870 void Disassemble(const char* name, FILE* out = stdout); | 4858 void Disassemble(const char* name, FILE* out = stdout); |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5055 | 5043 |
| 5056 // Find the first name in an IC stub. | 5044 // Find the first name in an IC stub. |
| 5057 Name* FindFirstName(); | 5045 Name* FindFirstName(); |
| 5058 | 5046 |
| 5059 void ReplaceNthCell(int n, Cell* replace_with); | 5047 void ReplaceNthCell(int n, Cell* replace_with); |
| 5060 | 5048 |
| 5061 class ExtraICStateStrictMode: public BitField<StrictModeFlag, 0, 1> {}; | 5049 class ExtraICStateStrictMode: public BitField<StrictModeFlag, 0, 1> {}; |
| 5062 class ExtraICStateKeyedAccessStoreMode: | 5050 class ExtraICStateKeyedAccessStoreMode: |
| 5063 public BitField<KeyedAccessStoreMode, 1, 4> {}; // NOLINT | 5051 public BitField<KeyedAccessStoreMode, 1, 4> {}; // NOLINT |
| 5064 | 5052 |
| 5065 class ExtraICStateStubHolder: public BitField<StubHolder, 0, 1> {}; | |
| 5066 | |
| 5067 static inline StrictModeFlag GetStrictMode(ExtraICState extra_ic_state) { | 5053 static inline StrictModeFlag GetStrictMode(ExtraICState extra_ic_state) { |
| 5068 return ExtraICStateStrictMode::decode(extra_ic_state); | 5054 return ExtraICStateStrictMode::decode(extra_ic_state); |
| 5069 } | 5055 } |
| 5070 | 5056 |
| 5071 static inline KeyedAccessStoreMode GetKeyedAccessStoreMode( | 5057 static inline KeyedAccessStoreMode GetKeyedAccessStoreMode( |
| 5072 ExtraICState extra_ic_state) { | 5058 ExtraICState extra_ic_state) { |
| 5073 return ExtraICStateKeyedAccessStoreMode::decode(extra_ic_state); | 5059 return ExtraICStateKeyedAccessStoreMode::decode(extra_ic_state); |
| 5074 } | 5060 } |
| 5075 | 5061 |
| 5076 static inline ExtraICState ComputeExtraICState( | 5062 static inline ExtraICState ComputeExtraICState( |
| 5077 KeyedAccessStoreMode store_mode, | 5063 KeyedAccessStoreMode store_mode, |
| 5078 StrictModeFlag strict_mode) { | 5064 StrictModeFlag strict_mode) { |
| 5079 return ExtraICStateKeyedAccessStoreMode::encode(store_mode) | | 5065 return ExtraICStateKeyedAccessStoreMode::encode(store_mode) | |
| 5080 ExtraICStateStrictMode::encode(strict_mode); | 5066 ExtraICStateStrictMode::encode(strict_mode); |
| 5081 } | 5067 } |
| 5082 | 5068 |
| 5083 static inline ExtraICState ComputeExtraICState(StubHolder stub_holder) { | |
| 5084 return ExtraICStateStubHolder::encode(stub_holder); | |
| 5085 } | |
| 5086 | |
| 5087 // Flags operations. | 5069 // Flags operations. |
| 5088 static inline Flags ComputeFlags( | 5070 static inline Flags ComputeFlags( |
| 5089 Kind kind, | 5071 Kind kind, |
| 5090 InlineCacheState ic_state = UNINITIALIZED, | 5072 InlineCacheState ic_state = UNINITIALIZED, |
| 5091 ExtraICState extra_ic_state = kNoExtraICState, | 5073 ExtraICState extra_ic_state = kNoExtraICState, |
| 5092 StubType type = NORMAL, | 5074 StubType type = NORMAL, |
| 5093 int argc = -1, | 5075 int argc = -1, |
| 5094 InlineCacheHolderFlag holder = OWN_MAP); | 5076 InlineCacheHolderFlag holder = OWN_MAP); |
| 5095 | 5077 |
| 5096 static inline Flags ComputeMonomorphicFlags( | 5078 static inline Flags ComputeMonomorphicFlags( |
| (...skipping 2781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7878 TRACK_ALLOCATION_SITE, | 7860 TRACK_ALLOCATION_SITE, |
| 7879 LAST_ALLOCATION_SITE_MODE = TRACK_ALLOCATION_SITE | 7861 LAST_ALLOCATION_SITE_MODE = TRACK_ALLOCATION_SITE |
| 7880 }; | 7862 }; |
| 7881 | 7863 |
| 7882 | 7864 |
| 7883 class AllocationSite: public Struct { | 7865 class AllocationSite: public Struct { |
| 7884 public: | 7866 public: |
| 7885 static const uint32_t kMaximumArrayBytesToPretransition = 8 * 1024; | 7867 static const uint32_t kMaximumArrayBytesToPretransition = 8 * 1024; |
| 7886 | 7868 |
| 7887 DECL_ACCESSORS(transition_info, Object) | 7869 DECL_ACCESSORS(transition_info, Object) |
| 7870 // nested_site threads a list of sites that represent nested literals |
| 7871 // walked in a particular order. So [[1, 2], 1, 2] will have one |
| 7872 // nested_site, but [[1, 2], 3, [4]] will have a list of two. |
| 7873 DECL_ACCESSORS(nested_site, Object) |
| 7888 DECL_ACCESSORS(dependent_code, DependentCode) | 7874 DECL_ACCESSORS(dependent_code, DependentCode) |
| 7889 DECL_ACCESSORS(weak_next, Object) | 7875 DECL_ACCESSORS(weak_next, Object) |
| 7890 | 7876 |
| 7891 inline void Initialize(); | 7877 inline void Initialize(); |
| 7892 | 7878 |
| 7893 ElementsKind GetElementsKind() { | 7879 ElementsKind GetElementsKind() { |
| 7894 ASSERT(!IsLiteralSite()); | 7880 ASSERT(!IsLiteralSite()); |
| 7895 return static_cast<ElementsKind>(Smi::cast(transition_info())->value()); | 7881 return static_cast<ElementsKind>(Smi::cast(transition_info())->value()); |
| 7896 } | 7882 } |
| 7897 | 7883 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 7909 DECLARE_PRINTER(AllocationSite) | 7895 DECLARE_PRINTER(AllocationSite) |
| 7910 DECLARE_VERIFIER(AllocationSite) | 7896 DECLARE_VERIFIER(AllocationSite) |
| 7911 | 7897 |
| 7912 static inline AllocationSite* cast(Object* obj); | 7898 static inline AllocationSite* cast(Object* obj); |
| 7913 static inline AllocationSiteMode GetMode( | 7899 static inline AllocationSiteMode GetMode( |
| 7914 ElementsKind boilerplate_elements_kind); | 7900 ElementsKind boilerplate_elements_kind); |
| 7915 static inline AllocationSiteMode GetMode(ElementsKind from, ElementsKind to); | 7901 static inline AllocationSiteMode GetMode(ElementsKind from, ElementsKind to); |
| 7916 static inline bool CanTrack(InstanceType type); | 7902 static inline bool CanTrack(InstanceType type); |
| 7917 | 7903 |
| 7918 static const int kTransitionInfoOffset = HeapObject::kHeaderSize; | 7904 static const int kTransitionInfoOffset = HeapObject::kHeaderSize; |
| 7919 static const int kDependentCodeOffset = kTransitionInfoOffset + kPointerSize; | 7905 static const int kNestedSiteOffset = kTransitionInfoOffset + kPointerSize; |
| 7906 static const int kDependentCodeOffset = kNestedSiteOffset + kPointerSize; |
| 7920 static const int kWeakNextOffset = kDependentCodeOffset + kPointerSize; | 7907 static const int kWeakNextOffset = kDependentCodeOffset + kPointerSize; |
| 7921 static const int kSize = kWeakNextOffset + kPointerSize; | 7908 static const int kSize = kWeakNextOffset + kPointerSize; |
| 7922 | 7909 |
| 7923 typedef FixedBodyDescriptor<HeapObject::kHeaderSize, | 7910 typedef FixedBodyDescriptor<HeapObject::kHeaderSize, |
| 7924 kDependentCodeOffset + kPointerSize, | 7911 kDependentCodeOffset + kPointerSize, |
| 7925 kSize> BodyDescriptor; | 7912 kSize> BodyDescriptor; |
| 7926 | 7913 |
| 7927 private: | 7914 private: |
| 7928 DISALLOW_IMPLICIT_CONSTRUCTORS(AllocationSite); | 7915 DISALLOW_IMPLICIT_CONSTRUCTORS(AllocationSite); |
| 7929 }; | 7916 }; |
| (...skipping 2360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10290 } else { | 10277 } else { |
| 10291 value &= ~(1 << bit_position); | 10278 value &= ~(1 << bit_position); |
| 10292 } | 10279 } |
| 10293 return value; | 10280 return value; |
| 10294 } | 10281 } |
| 10295 }; | 10282 }; |
| 10296 | 10283 |
| 10297 } } // namespace v8::internal | 10284 } } // namespace v8::internal |
| 10298 | 10285 |
| 10299 #endif // V8_OBJECTS_H_ | 10286 #endif // V8_OBJECTS_H_ |
| OLD | NEW |