Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Side by Side Diff: src/objects.h

Issue 932583002: Remove prototype key from the prototype transitions since its also embedded in the target map. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 5965 matching lines...) Expand 10 before | Expand all | Expand 10 after
5976 inline Object* GetBackPointer(); 5976 inline Object* GetBackPointer();
5977 inline void SetBackPointer(Object* value, 5977 inline void SetBackPointer(Object* value,
5978 WriteBarrierMode mode = UPDATE_WRITE_BARRIER); 5978 WriteBarrierMode mode = UPDATE_WRITE_BARRIER);
5979 inline void init_back_pointer(Object* undefined); 5979 inline void init_back_pointer(Object* undefined);
5980 5980
5981 // [prototype transitions]: cache of prototype transitions. 5981 // [prototype transitions]: cache of prototype transitions.
5982 // Prototype transition is a transition that happens 5982 // Prototype transition is a transition that happens
5983 // when we change object's prototype to a new one. 5983 // when we change object's prototype to a new one.
5984 // Cache format: 5984 // Cache format:
5985 // 0: finger - index of the first free cell in the cache 5985 // 0: finger - index of the first free cell in the cache
5986 // 1: back pointer that overlaps with prototype transitions field. 5986 // 1 + i: target map
5987 // 2 + 2 * i: prototype
5988 // 3 + 2 * i: target map
5989 inline FixedArray* GetPrototypeTransitions(); 5987 inline FixedArray* GetPrototypeTransitions();
5990 inline bool HasPrototypeTransitions(); 5988 inline bool HasPrototypeTransitions();
5991 5989
5990 static const int kProtoTransitionNumberOfEntriesOffset = 0;
5992 static const int kProtoTransitionHeaderSize = 1; 5991 static const int kProtoTransitionHeaderSize = 1;
5993 static const int kProtoTransitionNumberOfEntriesOffset = 0;
5994 static const int kProtoTransitionElementsPerEntry = 2;
5995 static const int kProtoTransitionPrototypeOffset = 0;
5996 static const int kProtoTransitionMapOffset = 1;
5997 5992
5998 inline int NumberOfProtoTransitions() { 5993 inline int NumberOfProtoTransitions() {
5999 FixedArray* cache = GetPrototypeTransitions(); 5994 FixedArray* cache = GetPrototypeTransitions();
6000 if (cache->length() == 0) return 0; 5995 if (cache->length() == 0) return 0;
6001 return 5996 return
6002 Smi::cast(cache->get(kProtoTransitionNumberOfEntriesOffset))->value(); 5997 Smi::cast(cache->get(kProtoTransitionNumberOfEntriesOffset))->value();
6003 } 5998 }
6004 5999
6005 inline void SetNumberOfProtoTransitions(int value) { 6000 inline void SetNumberOfProtoTransitions(int value) {
6006 FixedArray* cache = GetPrototypeTransitions(); 6001 FixedArray* cache = GetPrototypeTransitions();
(...skipping 4976 matching lines...) Expand 10 before | Expand all | Expand 10 after
10983 } else { 10978 } else {
10984 value &= ~(1 << bit_position); 10979 value &= ~(1 << bit_position);
10985 } 10980 }
10986 return value; 10981 return value;
10987 } 10982 }
10988 }; 10983 };
10989 10984
10990 } } // namespace v8::internal 10985 } } // namespace v8::internal
10991 10986
10992 #endif // V8_OBJECTS_H_ 10987 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/heap/mark-compact.cc ('k') | src/objects.cc » ('j') | src/objects.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698