| 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 6187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6198 | 6198 |
| 6199 // Returns true if the current map doesn't have DICTIONARY_ELEMENTS but if a | 6199 // Returns true if the current map doesn't have DICTIONARY_ELEMENTS but if a |
| 6200 // map with DICTIONARY_ELEMENTS was found in the prototype chain. | 6200 // map with DICTIONARY_ELEMENTS was found in the prototype chain. |
| 6201 bool DictionaryElementsInPrototypeChainOnly(); | 6201 bool DictionaryElementsInPrototypeChainOnly(); |
| 6202 | 6202 |
| 6203 inline bool HasTransitionArray(); | 6203 inline bool HasTransitionArray(); |
| 6204 inline bool HasElementsTransition(); | 6204 inline bool HasElementsTransition(); |
| 6205 inline Map* elements_transition_map(); | 6205 inline Map* elements_transition_map(); |
| 6206 static Handle<TransitionArray> SetElementsTransitionMap( | 6206 static Handle<TransitionArray> SetElementsTransitionMap( |
| 6207 Handle<Map> map, Handle<Map> transitioned_map); | 6207 Handle<Map> map, Handle<Map> transitioned_map); |
| 6208 inline void SetTransition(int transition_index, Map* target); | |
| 6209 inline Map* GetTransition(int transition_index); | 6208 inline Map* GetTransition(int transition_index); |
| 6210 inline int SearchTransition(Name* name); | 6209 inline int SearchTransition(Name* name); |
| 6211 inline FixedArrayBase* GetInitialElements(); | 6210 inline FixedArrayBase* GetInitialElements(); |
| 6212 | 6211 |
| 6213 DECL_ACCESSORS(transitions, TransitionArray) | 6212 DECL_ACCESSORS(transitions, TransitionArray) |
| 6214 inline void ClearTransitions(Heap* heap, | |
| 6215 WriteBarrierMode mode = UPDATE_WRITE_BARRIER); | |
| 6216 | |
| 6217 void DeprecateTransitionTree(); | |
| 6218 void DeprecateTarget(Name* key, DescriptorArray* new_descriptors); | |
| 6219 | 6213 |
| 6220 Map* FindRootMap(); | 6214 Map* FindRootMap(); |
| 6221 Map* FindUpdatedMap(int verbatim, int length, DescriptorArray* descriptors); | |
| 6222 Map* FindLastMatchMap(int verbatim, int length, DescriptorArray* descriptors); | |
| 6223 | 6215 |
| 6224 inline int GetInObjectPropertyOffset(int index); | 6216 inline int GetInObjectPropertyOffset(int index); |
| 6225 | 6217 |
| 6226 int NumberOfFields(); | 6218 int NumberOfFields(); |
| 6227 | 6219 |
| 6228 bool InstancesNeedRewriting(Map* target, | 6220 bool InstancesNeedRewriting(Map* target, |
| 6229 int target_number_of_fields, | 6221 int target_number_of_fields, |
| 6230 int target_inobject, | 6222 int target_inobject, |
| 6231 int target_unused); | 6223 int target_unused); |
| 6232 static Handle<Map> GeneralizeAllFieldRepresentations( | 6224 static Handle<Map> GeneralizeAllFieldRepresentations( |
| 6233 Handle<Map> map, | 6225 Handle<Map> map, |
| 6234 Representation new_representation); | 6226 Representation new_representation); |
| 6235 static Handle<Map> GeneralizeRepresentation( | 6227 static Handle<Map> GeneralizeRepresentation( |
| 6236 Handle<Map> map, | 6228 Handle<Map> map, |
| 6237 int modify_index, | 6229 int modify_index, |
| 6238 Representation new_representation, | 6230 Representation new_representation, |
| 6239 StoreMode store_mode); | 6231 StoreMode store_mode); |
| 6240 static Handle<Map> CopyGeneralizeAllRepresentations( | 6232 static Handle<Map> CopyGeneralizeAllRepresentations( |
| 6241 Handle<Map> map, | 6233 Handle<Map> map, |
| 6242 int modify_index, | 6234 int modify_index, |
| 6243 StoreMode store_mode, | 6235 StoreMode store_mode, |
| 6244 PropertyAttributes attributes, | 6236 PropertyAttributes attributes, |
| 6245 const char* reason); | 6237 const char* reason); |
| 6246 | 6238 |
| 6247 void PrintGeneralization(FILE* file, | |
| 6248 const char* reason, | |
| 6249 int modify_index, | |
| 6250 int split, | |
| 6251 int descriptors, | |
| 6252 bool constant_to_field, | |
| 6253 Representation old_representation, | |
| 6254 Representation new_representation); | |
| 6255 | |
| 6256 // Returns the constructor name (the name (possibly, inferred name) of the | 6239 // Returns the constructor name (the name (possibly, inferred name) of the |
| 6257 // function that was used to instantiate the object). | 6240 // function that was used to instantiate the object). |
| 6258 String* constructor_name(); | 6241 String* constructor_name(); |
| 6259 | 6242 |
| 6260 // Tells whether the map is attached to SharedFunctionInfo | 6243 // Tells whether the map is attached to SharedFunctionInfo |
| 6261 // (for inobject slack tracking). | 6244 // (for inobject slack tracking). |
| 6262 inline void set_attached_to_shared_function_info(bool value); | 6245 inline void set_attached_to_shared_function_info(bool value); |
| 6263 | 6246 |
| 6264 inline bool attached_to_shared_function_info(); | 6247 inline bool attached_to_shared_function_info(); |
| 6265 | 6248 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6311 | 6294 |
| 6312 // [prototype transitions]: cache of prototype transitions. | 6295 // [prototype transitions]: cache of prototype transitions. |
| 6313 // Prototype transition is a transition that happens | 6296 // Prototype transition is a transition that happens |
| 6314 // when we change object's prototype to a new one. | 6297 // when we change object's prototype to a new one. |
| 6315 // Cache format: | 6298 // Cache format: |
| 6316 // 0: finger - index of the first free cell in the cache | 6299 // 0: finger - index of the first free cell in the cache |
| 6317 // 1: back pointer that overlaps with prototype transitions field. | 6300 // 1: back pointer that overlaps with prototype transitions field. |
| 6318 // 2 + 2 * i: prototype | 6301 // 2 + 2 * i: prototype |
| 6319 // 3 + 2 * i: target map | 6302 // 3 + 2 * i: target map |
| 6320 inline FixedArray* GetPrototypeTransitions(); | 6303 inline FixedArray* GetPrototypeTransitions(); |
| 6321 static inline void SetPrototypeTransitions( | |
| 6322 Handle<Map> map, Handle<FixedArray> prototype_transitions); | |
| 6323 inline bool HasPrototypeTransitions(); | 6304 inline bool HasPrototypeTransitions(); |
| 6324 | 6305 |
| 6325 static const int kProtoTransitionHeaderSize = 1; | 6306 static const int kProtoTransitionHeaderSize = 1; |
| 6326 static const int kProtoTransitionNumberOfEntriesOffset = 0; | 6307 static const int kProtoTransitionNumberOfEntriesOffset = 0; |
| 6327 static const int kProtoTransitionElementsPerEntry = 2; | 6308 static const int kProtoTransitionElementsPerEntry = 2; |
| 6328 static const int kProtoTransitionPrototypeOffset = 0; | 6309 static const int kProtoTransitionPrototypeOffset = 0; |
| 6329 static const int kProtoTransitionMapOffset = 1; | 6310 static const int kProtoTransitionMapOffset = 1; |
| 6330 | 6311 |
| 6331 inline int NumberOfProtoTransitions() { | 6312 inline int NumberOfProtoTransitions() { |
| 6332 FixedArray* cache = GetPrototypeTransitions(); | 6313 FixedArray* cache = GetPrototypeTransitions(); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6404 inline bool CanBeDeprecated(); | 6385 inline bool CanBeDeprecated(); |
| 6405 // Returns a non-deprecated version of the input. If the input was not | 6386 // Returns a non-deprecated version of the input. If the input was not |
| 6406 // deprecated, it is directly returned. Otherwise, the non-deprecated version | 6387 // deprecated, it is directly returned. Otherwise, the non-deprecated version |
| 6407 // is found by re-transitioning from the root of the transition tree using the | 6388 // is found by re-transitioning from the root of the transition tree using the |
| 6408 // descriptor array of the map. Returns NULL if no updated map is found. | 6389 // descriptor array of the map. Returns NULL if no updated map is found. |
| 6409 // This method also applies any pending migrations along the prototype chain. | 6390 // This method also applies any pending migrations along the prototype chain. |
| 6410 static Handle<Map> CurrentMapForDeprecated(Handle<Map> map); | 6391 static Handle<Map> CurrentMapForDeprecated(Handle<Map> map); |
| 6411 // Same as above, but does not touch the prototype chain. | 6392 // Same as above, but does not touch the prototype chain. |
| 6412 static Handle<Map> CurrentMapForDeprecatedInternal(Handle<Map> map); | 6393 static Handle<Map> CurrentMapForDeprecatedInternal(Handle<Map> map); |
| 6413 | 6394 |
| 6414 static Handle<Map> RawCopy(Handle<Map> map, int instance_size); | |
| 6415 static Handle<Map> CopyDropDescriptors(Handle<Map> map); | 6395 static Handle<Map> CopyDropDescriptors(Handle<Map> map); |
| 6416 static Handle<Map> CopyReplaceDescriptors( | 6396 static Handle<Map> CopyReplaceDescriptors( |
| 6417 Handle<Map> map, | 6397 Handle<Map> map, |
| 6418 Handle<DescriptorArray> descriptors, | 6398 Handle<DescriptorArray> descriptors, |
| 6419 TransitionFlag flag, | 6399 TransitionFlag flag, |
| 6420 Handle<Name> name, | 6400 Handle<Name> name, |
| 6421 SimpleTransitionFlag simple_flag = FULL_TRANSITION); | 6401 SimpleTransitionFlag simple_flag = FULL_TRANSITION); |
| 6422 static Handle<Map> CopyReplaceDescriptors( | 6402 static Handle<Map> CopyReplaceDescriptors( |
| 6423 Handle<Map> map, | 6403 Handle<Map> map, |
| 6424 Handle<DescriptorArray> descriptors, | 6404 Handle<DescriptorArray> descriptors, |
| 6425 TransitionFlag flag, | 6405 TransitionFlag flag, |
| 6426 SimpleTransitionFlag simple_flag = FULL_TRANSITION); | 6406 SimpleTransitionFlag simple_flag = FULL_TRANSITION); |
| 6427 static Handle<Map> CopyInstallDescriptors( | |
| 6428 Handle<Map> map, | |
| 6429 int new_descriptor, | |
| 6430 Handle<DescriptorArray> descriptors); | |
| 6431 static Handle<Map> ShareDescriptor(Handle<Map> map, | |
| 6432 Handle<DescriptorArray> descriptors, | |
| 6433 Descriptor* descriptor); | |
| 6434 static Handle<Map> CopyAddDescriptor(Handle<Map> map, | 6407 static Handle<Map> CopyAddDescriptor(Handle<Map> map, |
| 6435 Descriptor* descriptor, | 6408 Descriptor* descriptor, |
| 6436 TransitionFlag flag); | 6409 TransitionFlag flag); |
| 6437 static Handle<Map> CopyInsertDescriptor(Handle<Map> map, | 6410 static Handle<Map> CopyInsertDescriptor(Handle<Map> map, |
| 6438 Descriptor* descriptor, | 6411 Descriptor* descriptor, |
| 6439 TransitionFlag flag); | 6412 TransitionFlag flag); |
| 6440 static Handle<Map> CopyReplaceDescriptor( | 6413 static Handle<Map> CopyReplaceDescriptor(Handle<Map> map, |
| 6441 Handle<Map> map, | 6414 Handle<DescriptorArray> descriptors, |
| 6442 Handle<DescriptorArray> descriptors, | 6415 Descriptor* descriptor, |
| 6443 Descriptor* descriptor, | 6416 int index, |
| 6444 int index, | 6417 TransitionFlag flag); |
| 6445 TransitionFlag flag); | |
| 6446 | 6418 |
| 6447 static Handle<Map> AsElementsKind(Handle<Map> map, ElementsKind kind); | 6419 static Handle<Map> AsElementsKind(Handle<Map> map, ElementsKind kind); |
| 6448 | 6420 |
| 6449 static Handle<Map> CopyAsElementsKind(Handle<Map> map, | 6421 static Handle<Map> CopyAsElementsKind(Handle<Map> map, |
| 6450 ElementsKind kind, | 6422 ElementsKind kind, |
| 6451 TransitionFlag flag); | 6423 TransitionFlag flag); |
| 6452 | 6424 |
| 6453 static Handle<Map> CopyForObserved(Handle<Map> map); | 6425 static Handle<Map> CopyForObserved(Handle<Map> map); |
| 6454 | 6426 |
| 6455 static Handle<Map> CopyNormalized(Handle<Map> map, | 6427 static Handle<Map> CopyNormalized(Handle<Map> map, |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6511 void RemoveFromCodeCache(Name* name, Code* code, int index); | 6483 void RemoveFromCodeCache(Name* name, Code* code, int index); |
| 6512 | 6484 |
| 6513 // Set all map transitions from this map to dead maps to null. Also clear | 6485 // Set all map transitions from this map to dead maps to null. Also clear |
| 6514 // back pointers in transition targets so that we do not process this map | 6486 // back pointers in transition targets so that we do not process this map |
| 6515 // again while following back pointers. | 6487 // again while following back pointers. |
| 6516 void ClearNonLiveTransitions(Heap* heap); | 6488 void ClearNonLiveTransitions(Heap* heap); |
| 6517 | 6489 |
| 6518 // Computes a hash value for this map, to be used in HashTables and such. | 6490 // Computes a hash value for this map, to be used in HashTables and such. |
| 6519 int Hash(); | 6491 int Hash(); |
| 6520 | 6492 |
| 6521 bool EquivalentToForTransition(Map* other); | |
| 6522 | |
| 6523 // Compares this map to another to see if they describe equivalent objects. | |
| 6524 // If |mode| is set to CLEAR_INOBJECT_PROPERTIES, |other| is treated as if | |
| 6525 // it had exactly zero inobject properties. | |
| 6526 // The "shared" flags of both this map and |other| are ignored. | |
| 6527 bool EquivalentToForNormalization(Map* other, PropertyNormalizationMode mode); | |
| 6528 | |
| 6529 // Returns the map that this map transitions to if its elements_kind | 6493 // Returns the map that this map transitions to if its elements_kind |
| 6530 // is changed to |elements_kind|, or NULL if no such map is cached yet. | 6494 // is changed to |elements_kind|, or NULL if no such map is cached yet. |
| 6531 // |safe_to_add_transitions| is set to false if adding transitions is not | 6495 // |safe_to_add_transitions| is set to false if adding transitions is not |
| 6532 // allowed. | 6496 // allowed. |
| 6533 Map* LookupElementsTransitionMap(ElementsKind elements_kind); | 6497 Map* LookupElementsTransitionMap(ElementsKind elements_kind); |
| 6534 | 6498 |
| 6535 // Returns the transitioned map for this map with the most generic | 6499 // Returns the transitioned map for this map with the most generic |
| 6536 // elements_kind that's found in |candidates|, or null handle if no match is | 6500 // elements_kind that's found in |candidates|, or null handle if no match is |
| 6537 // found at all. | 6501 // found at all. |
| 6538 Handle<Map> FindTransitionedMap(MapHandleList* candidates); | 6502 Handle<Map> FindTransitionedMap(MapHandleList* candidates); |
| 6539 Map* FindTransitionedMap(MapList* candidates); | 6503 Map* FindTransitionedMap(MapList* candidates); |
| 6540 | 6504 |
| 6541 // Zaps the contents of backing data structures. Note that the | |
| 6542 // heap verifier (i.e. VerifyMarkingVisitor) relies on zapping of objects | |
| 6543 // holding weak references when incremental marking is used, because it also | |
| 6544 // iterates over objects that are otherwise unreachable. | |
| 6545 // In general we only want to call these functions in release mode when | |
| 6546 // heap verification is turned on. | |
| 6547 void ZapPrototypeTransitions(); | |
| 6548 void ZapTransitions(); | |
| 6549 | |
| 6550 bool CanTransition() { | 6505 bool CanTransition() { |
| 6551 // Only JSObject and subtypes have map transitions and back pointers. | 6506 // Only JSObject and subtypes have map transitions and back pointers. |
| 6552 STATIC_ASSERT(LAST_TYPE == LAST_JS_OBJECT_TYPE); | 6507 STATIC_ASSERT(LAST_TYPE == LAST_JS_OBJECT_TYPE); |
| 6553 return instance_type() >= FIRST_JS_OBJECT_TYPE; | 6508 return instance_type() >= FIRST_JS_OBJECT_TYPE; |
| 6554 } | 6509 } |
| 6555 | 6510 |
| 6556 bool IsJSObjectMap() { | 6511 bool IsJSObjectMap() { |
| 6557 return instance_type() >= FIRST_JS_OBJECT_TYPE; | 6512 return instance_type() >= FIRST_JS_OBJECT_TYPE; |
| 6558 } | 6513 } |
| 6559 bool IsJSGlobalProxyMap() { | 6514 bool IsJSGlobalProxyMap() { |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6600 void TraverseTransitionTree(TraverseCallback callback, void* data); | 6555 void TraverseTransitionTree(TraverseCallback callback, void* data); |
| 6601 | 6556 |
| 6602 // When you set the prototype of an object using the __proto__ accessor you | 6557 // When you set the prototype of an object using the __proto__ accessor you |
| 6603 // need a new map for the object (the prototype is stored in the map). In | 6558 // need a new map for the object (the prototype is stored in the map). In |
| 6604 // order not to multiply maps unnecessarily we store these as transitions in | 6559 // order not to multiply maps unnecessarily we store these as transitions in |
| 6605 // the original map. That way we can transition to the same map if the same | 6560 // the original map. That way we can transition to the same map if the same |
| 6606 // prototype is set, rather than creating a new map every time. The | 6561 // prototype is set, rather than creating a new map every time. The |
| 6607 // transitions are in the form of a map where the keys are prototype objects | 6562 // transitions are in the form of a map where the keys are prototype objects |
| 6608 // and the values are the maps the are transitioned to. | 6563 // and the values are the maps the are transitioned to. |
| 6609 static const int kMaxCachedPrototypeTransitions = 256; | 6564 static const int kMaxCachedPrototypeTransitions = 256; |
| 6610 static Handle<Map> GetPrototypeTransition(Handle<Map> map, | 6565 static Handle<Map> TransitionToPrototype(Handle<Map> map, |
| 6611 Handle<Object> prototype); | 6566 Handle<Object> prototype); |
| 6612 static Handle<Map> PutPrototypeTransition(Handle<Map> map, | |
| 6613 Handle<Object> prototype, | |
| 6614 Handle<Map> target_map); | |
| 6615 | 6567 |
| 6616 static const int kMaxPreAllocatedPropertyFields = 255; | 6568 static const int kMaxPreAllocatedPropertyFields = 255; |
| 6617 | 6569 |
| 6618 // Layout description. | 6570 // Layout description. |
| 6619 static const int kInstanceSizesOffset = HeapObject::kHeaderSize; | 6571 static const int kInstanceSizesOffset = HeapObject::kHeaderSize; |
| 6620 static const int kInstanceAttributesOffset = kInstanceSizesOffset + kIntSize; | 6572 static const int kInstanceAttributesOffset = kInstanceSizesOffset + kIntSize; |
| 6621 static const int kPrototypeOffset = kInstanceAttributesOffset + kIntSize; | 6573 static const int kPrototypeOffset = kInstanceAttributesOffset + kIntSize; |
| 6622 static const int kConstructorOffset = kPrototypeOffset + kPointerSize; | 6574 static const int kConstructorOffset = kPrototypeOffset + kPointerSize; |
| 6623 // Storage for the transition array is overloaded to directly contain a back | 6575 // Storage for the transition array is overloaded to directly contain a back |
| 6624 // pointer if unused. When the map has transitions, the back pointer is | 6576 // pointer if unused. When the map has transitions, the back pointer is |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6688 static_cast<int8_t>((FAST_HOLEY_ELEMENTS + 1) << | 6640 static_cast<int8_t>((FAST_HOLEY_ELEMENTS + 1) << |
| 6689 Map::kElementsKindShift) - 1; | 6641 Map::kElementsKindShift) - 1; |
| 6690 static const int8_t kMaximumBitField2FastHoleySmiElementValue = | 6642 static const int8_t kMaximumBitField2FastHoleySmiElementValue = |
| 6691 static_cast<int8_t>((FAST_HOLEY_SMI_ELEMENTS + 1) << | 6643 static_cast<int8_t>((FAST_HOLEY_SMI_ELEMENTS + 1) << |
| 6692 Map::kElementsKindShift) - 1; | 6644 Map::kElementsKindShift) - 1; |
| 6693 | 6645 |
| 6694 typedef FixedBodyDescriptor<kPointerFieldsBeginOffset, | 6646 typedef FixedBodyDescriptor<kPointerFieldsBeginOffset, |
| 6695 kPointerFieldsEndOffset, | 6647 kPointerFieldsEndOffset, |
| 6696 kSize> BodyDescriptor; | 6648 kSize> BodyDescriptor; |
| 6697 | 6649 |
| 6650 // Compares this map to another to see if they describe equivalent objects. |
| 6651 // If |mode| is set to CLEAR_INOBJECT_PROPERTIES, |other| is treated as if |
| 6652 // it had exactly zero inobject properties. |
| 6653 // The "shared" flags of both this map and |other| are ignored. |
| 6654 bool EquivalentToForNormalization(Map* other, PropertyNormalizationMode mode); |
| 6655 |
| 6698 private: | 6656 private: |
| 6657 bool EquivalentToForTransition(Map* other); |
| 6658 static Handle<Map> RawCopy(Handle<Map> map, int instance_size); |
| 6659 static Handle<Map> ShareDescriptor(Handle<Map> map, |
| 6660 Handle<DescriptorArray> descriptors, |
| 6661 Descriptor* descriptor); |
| 6662 static Handle<Map> CopyInstallDescriptors( |
| 6663 Handle<Map> map, |
| 6664 int new_descriptor, |
| 6665 Handle<DescriptorArray> descriptors); |
| 6666 |
| 6667 // Zaps the contents of backing data structures. Note that the |
| 6668 // heap verifier (i.e. VerifyMarkingVisitor) relies on zapping of objects |
| 6669 // holding weak references when incremental marking is used, because it also |
| 6670 // iterates over objects that are otherwise unreachable. |
| 6671 // In general we only want to call these functions in release mode when |
| 6672 // heap verification is turned on. |
| 6673 void ZapPrototypeTransitions(); |
| 6674 void ZapTransitions(); |
| 6675 |
| 6676 void DeprecateTransitionTree(); |
| 6677 void DeprecateTarget(Name* key, DescriptorArray* new_descriptors); |
| 6678 |
| 6679 Map* FindUpdatedMap(int verbatim, int length, DescriptorArray* descriptors); |
| 6680 Map* FindLastMatchMap(int verbatim, int length, DescriptorArray* descriptors); |
| 6681 |
| 6682 void PrintGeneralization(FILE* file, |
| 6683 const char* reason, |
| 6684 int modify_index, |
| 6685 int split, |
| 6686 int descriptors, |
| 6687 bool constant_to_field, |
| 6688 Representation old_representation, |
| 6689 Representation new_representation); |
| 6690 |
| 6691 static inline void SetPrototypeTransitions( |
| 6692 Handle<Map> map, |
| 6693 Handle<FixedArray> prototype_transitions); |
| 6694 |
| 6695 static Handle<Map> GetPrototypeTransition(Handle<Map> map, |
| 6696 Handle<Object> prototype); |
| 6697 static Handle<Map> PutPrototypeTransition(Handle<Map> map, |
| 6698 Handle<Object> prototype, |
| 6699 Handle<Map> target_map); |
| 6700 |
| 6699 DISALLOW_IMPLICIT_CONSTRUCTORS(Map); | 6701 DISALLOW_IMPLICIT_CONSTRUCTORS(Map); |
| 6700 }; | 6702 }; |
| 6701 | 6703 |
| 6702 | 6704 |
| 6703 // An abstract superclass, a marker class really, for simple structure classes. | 6705 // An abstract superclass, a marker class really, for simple structure classes. |
| 6704 // It doesn't carry much functionality but allows struct classes to be | 6706 // It doesn't carry much functionality but allows struct classes to be |
| 6705 // identified in the type system. | 6707 // identified in the type system. |
| 6706 class Struct: public HeapObject { | 6708 class Struct: public HeapObject { |
| 6707 public: | 6709 public: |
| 6708 inline void InitializeBody(int object_size); | 6710 inline void InitializeBody(int object_size); |
| (...skipping 4313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11022 } else { | 11024 } else { |
| 11023 value &= ~(1 << bit_position); | 11025 value &= ~(1 << bit_position); |
| 11024 } | 11026 } |
| 11025 return value; | 11027 return value; |
| 11026 } | 11028 } |
| 11027 }; | 11029 }; |
| 11028 | 11030 |
| 11029 } } // namespace v8::internal | 11031 } } // namespace v8::internal |
| 11030 | 11032 |
| 11031 #endif // V8_OBJECTS_H_ | 11033 #endif // V8_OBJECTS_H_ |
| OLD | NEW |