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

Side by Side Diff: src/transitions.h

Issue 661133002: TransitionArray now uses <is_data_property, name, attributes> tuple as a key, which allows to have … (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed comments Created 6 years, 1 month 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 | Annotate | Revision Log
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_TRANSITIONS_H_ 5 #ifndef V8_TRANSITIONS_H_
6 #define V8_TRANSITIONS_H_ 6 #define V8_TRANSITIONS_H_
7 7
8 #include "src/checks.h" 8 #include "src/checks.h"
9 #include "src/elements-kind.h" 9 #include "src/elements-kind.h"
10 #include "src/heap/heap.h" 10 #include "src/heap/heap.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 80
81 // Create a transition array, copying from the owning map if it already has 81 // Create a transition array, copying from the owning map if it already has
82 // one, otherwise creating a new one according to flag. 82 // one, otherwise creating a new one according to flag.
83 // TODO(verwaest): This should not cause an existing transition to be 83 // TODO(verwaest): This should not cause an existing transition to be
84 // overwritten. 84 // overwritten.
85 static Handle<TransitionArray> CopyInsert(Handle<Map> map, 85 static Handle<TransitionArray> CopyInsert(Handle<Map> map,
86 Handle<Name> name, 86 Handle<Name> name,
87 Handle<Map> target, 87 Handle<Map> target,
88 SimpleTransitionFlag flag); 88 SimpleTransitionFlag flag);
89 89
90 // Search a transition for a given property name. 90 // Search a transition for a given type, property name and attributes.
91 inline int Search(Name* name); 91 int Search(PropertyType type, Name* name, PropertyAttributes attributes);
92
93 // Search a non-property transition (like elements kind, observe or frozen
94 // transitions).
95 inline int SearchSpecial(Symbol* symbol) { return SearchFirst(symbol); }
96
97 // Returns true for a non-property transitions like elements kind, observed
98 // or frozen transitions.
99 inline static bool IsSpecialTransition(Name* name);
100
101 inline static PropertyDetails GetTargetDetails(Name* name, Map* target);
92 102
93 // Allocates a TransitionArray. 103 // Allocates a TransitionArray.
94 static Handle<TransitionArray> Allocate( 104 static Handle<TransitionArray> Allocate(
95 Isolate* isolate, int number_of_transitions); 105 Isolate* isolate, int number_of_transitions);
96 106
97 bool IsSimpleTransition() { 107 bool IsSimpleTransition() {
98 return length() == kSimpleTransitionSize && 108 return length() == kSimpleTransitionSize &&
99 get(kSimpleTransitionTarget)->IsHeapObject() && 109 get(kSimpleTransitionTarget)->IsHeapObject() &&
100 // The IntrusivePrototypeTransitionIterator may have set the map of the 110 // The IntrusivePrototypeTransitionIterator may have set the map of the
101 // prototype transitions array to a smi. In that case, there are 111 // prototype transitions array to a smi. In that case, there are
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 180
171 static Handle<TransitionArray> AllocateSimple( 181 static Handle<TransitionArray> AllocateSimple(
172 Isolate* isolate, Handle<Map> target); 182 Isolate* isolate, Handle<Map> target);
173 183
174 // Allocate a new transition array with a single entry. 184 // Allocate a new transition array with a single entry.
175 static Handle<TransitionArray> NewWith(Handle<Map> map, 185 static Handle<TransitionArray> NewWith(Handle<Map> map,
176 Handle<Name> name, 186 Handle<Name> name,
177 Handle<Map> target, 187 Handle<Map> target,
178 SimpleTransitionFlag flag); 188 SimpleTransitionFlag flag);
179 189
190 // Search a first transition for a given property name.
191 inline int SearchFirst(Name* name);
192 int SearchNext(int transition, PropertyType type, Name* name,
193 PropertyAttributes attributes);
194
180 inline void NoIncrementalWriteBarrierSet(int transition_number, 195 inline void NoIncrementalWriteBarrierSet(int transition_number,
181 Name* key, 196 Name* key,
182 Map* target); 197 Map* target);
183 198
184 // Copy a single transition from the origin array. 199 // Copy a single transition from the origin array.
185 inline void NoIncrementalWriteBarrierCopyFrom(TransitionArray* origin, 200 inline void NoIncrementalWriteBarrierCopyFrom(TransitionArray* origin,
186 int origin_transition, 201 int origin_transition,
187 int target_transition); 202 int target_transition);
188 203
189 DISALLOW_IMPLICIT_CONSTRUCTORS(TransitionArray); 204 DISALLOW_IMPLICIT_CONSTRUCTORS(TransitionArray);
190 }; 205 };
191 206
192 207
193 } } // namespace v8::internal 208 } } // namespace v8::internal
194 209
195 #endif // V8_TRANSITIONS_H_ 210 #endif // V8_TRANSITIONS_H_
OLDNEW
« no previous file with comments | « src/objects-printer.cc ('k') | src/transitions.cc » ('j') | src/transitions-inl.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698