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

Unified Diff: src/objects.h

Issue 10692026: Moving prototype transitions into the header of the transition array. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Update Created 8 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: src/objects.h
diff --git a/src/objects.h b/src/objects.h
index c479a14aa07eec86c620b40fdfef1f4229aa35f4..3db5c739133583c18b0add8ed5ad4f7828f4c24d 100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -4807,6 +4807,8 @@ class Map: public HeapObject {
inline void SetBackPointer(Object* value,
WriteBarrierMode mode = UPDATE_WRITE_BARRIER);
+ inline void init_back_pointer(Object* undefined);
Michael Starzinger 2012/07/06 13:53:18 Lets make that a camel-case method (i.e. Initializ
Toon Verwaest 2012/07/09 12:45:27 As discussed offline, will leave as is. Not comple
+
// [prototype transitions]: cache of prototype transitions.
// Prototype transition is a transition that happens
// when we change object's prototype to a new one.
@@ -4815,14 +4817,16 @@ class Map: public HeapObject {
// 1: back pointer that overlaps with prototype transitions field.
// 2 + 2 * i: prototype
// 3 + 2 * i: target map
- DECL_ACCESSORS(prototype_transitions, FixedArray)
+ inline FixedArray* prototype_transitions();
+ MUST_USE_RESULT inline MaybeObject* set_prototype_transitions(
+ FixedArray* prototype_transitions);
+ inline bool HasPrototypeTransitions();
- inline void init_prototype_transitions(Object* undefined);
inline HeapObject* unchecked_prototype_transitions();
+ inline TransitionArray* unchecked_transition_array();
- static const int kProtoTransitionHeaderSize = 2;
+ static const int kProtoTransitionHeaderSize = 1;
static const int kProtoTransitionNumberOfEntriesOffset = 0;
- static const int kProtoTransitionBackPointerOffset = 1;
static const int kProtoTransitionElementsPerEntry = 2;
static const int kProtoTransitionPrototypeOffset = 0;
static const int kProtoTransitionMapOffset = 1;
@@ -4995,17 +4999,16 @@ class Map: public HeapObject {
kConstructorOffset + kPointerSize;
static const int kCodeCacheOffset =
kInstanceDescriptorsOrBitField3Offset + kPointerSize;
- static const int kPrototypeTransitionsOrBackPointerOffset =
+ static const int kBackPointerOffset =
Michael Starzinger 2012/07/06 13:53:18 This should fit in one line now?
Toon Verwaest 2012/07/09 12:45:27 Done.
kCodeCacheOffset + kPointerSize;
static const int kPadStart =
Michael Starzinger 2012/07/06 13:53:18 Likewise.
Toon Verwaest 2012/07/09 12:45:27 Done.
- kPrototypeTransitionsOrBackPointerOffset + kPointerSize;
+ kBackPointerOffset + kPointerSize;
static const int kSize = MAP_POINTER_ALIGN(kPadStart);
// Layout of pointer fields. Heap iteration code relies on them
// being continuously allocated.
static const int kPointerFieldsBeginOffset = Map::kPrototypeOffset;
- static const int kPointerFieldsEndOffset =
- kPrototypeTransitionsOrBackPointerOffset + kPointerSize;
+ static const int kPointerFieldsEndOffset = kBackPointerOffset + kPointerSize;
// Byte offsets within kInstanceSizesOffset.
static const int kInstanceSizeOffset = kInstanceSizesOffset + 0;

Powered by Google App Engine
This is Rietveld 408576698