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

Side by Side Diff: src/elements.h

Issue 1260283002: Array Builtin Refactoring: Creating API methods on ElementsAccessor (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: removing unused method Created 5 years, 4 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
« no previous file with comments | « src/builtins.cc ('k') | src/elements.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_ELEMENTS_H_ 5 #ifndef V8_ELEMENTS_H_
6 #define V8_ELEMENTS_H_ 6 #define V8_ELEMENTS_H_
7 7
8 #include "src/elements-kind.h" 8 #include "src/elements-kind.h"
9 #include "src/heap/heap.h" 9 #include "src/heap/heap.h"
10 #include "src/isolate.h" 10 #include "src/isolate.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 53
54 // If kCopyToEnd is specified as the copy_size to CopyElements, it copies all 54 // If kCopyToEnd is specified as the copy_size to CopyElements, it copies all
55 // of elements from source after source_start to the destination array. 55 // of elements from source after source_start to the destination array.
56 static const int kCopyToEnd = -1; 56 static const int kCopyToEnd = -1;
57 // If kCopyToEndAndInitializeToHole is specified as the copy_size to 57 // If kCopyToEndAndInitializeToHole is specified as the copy_size to
58 // CopyElements, it copies all of elements from source after source_start to 58 // CopyElements, it copies all of elements from source after source_start to
59 // destination array, padding any remaining uninitialized elements in the 59 // destination array, padding any remaining uninitialized elements in the
60 // destination array with the hole. 60 // destination array with the hole.
61 static const int kCopyToEndAndInitializeToHole = -2; 61 static const int kCopyToEndAndInitializeToHole = -2;
62 62
63 static const int kDirectionForward = 1;
64 static const int kDirectionReverse = -1;
65
63 // Copy elements from one backing store to another. Typically, callers specify 66 // Copy elements from one backing store to another. Typically, callers specify
64 // the source JSObject or JSArray in source_holder. If the holder's backing 67 // the source JSObject or JSArray in source_holder. If the holder's backing
65 // store is available, it can be passed in source and source_holder is 68 // store is available, it can be passed in source and source_holder is
66 // ignored. 69 // ignored.
67 virtual void CopyElements( 70 virtual void CopyElements(
68 Handle<FixedArrayBase> source, 71 Handle<FixedArrayBase> source,
69 uint32_t source_start, 72 uint32_t source_start,
70 ElementsKind source_kind, 73 ElementsKind source_kind,
71 Handle<FixedArrayBase> destination, 74 Handle<FixedArrayBase> destination,
72 uint32_t destination_start, 75 uint32_t destination_start,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 return elements_accessors_[elements_kind]; 108 return elements_accessors_[elements_kind];
106 } 109 }
107 110
108 static ElementsAccessor* ForArray(Handle<FixedArrayBase> array); 111 static ElementsAccessor* ForArray(Handle<FixedArrayBase> array);
109 112
110 static void InitializeOncePerProcess(); 113 static void InitializeOncePerProcess();
111 static void TearDown(); 114 static void TearDown();
112 115
113 virtual void Set(FixedArrayBase* backing_store, uint32_t entry, 116 virtual void Set(FixedArrayBase* backing_store, uint32_t entry,
114 Object* value) = 0; 117 Object* value) = 0;
118
115 virtual void Reconfigure(Handle<JSObject> object, 119 virtual void Reconfigure(Handle<JSObject> object,
116 Handle<FixedArrayBase> backing_store, uint32_t entry, 120 Handle<FixedArrayBase> backing_store, uint32_t entry,
117 Handle<Object> value, 121 Handle<Object> value,
118 PropertyAttributes attributes) = 0; 122 PropertyAttributes attributes) = 0;
123
119 virtual void Add(Handle<JSObject> object, uint32_t index, 124 virtual void Add(Handle<JSObject> object, uint32_t index,
120 Handle<Object> value, PropertyAttributes attributes, 125 Handle<Object> value, PropertyAttributes attributes,
121 uint32_t new_capacity) = 0; 126 uint32_t new_capacity) = 0;
122 127
128 // TODO(cbruni): Consider passing Arguments* instead of Object** depending on
129 // the requirements of future callers.
130 virtual uint32_t Push(Handle<JSArray> receiver,
131 Handle<FixedArrayBase> backing_store, Object** objects,
132 uint32_t start, int direction) = 0;
133
123 protected: 134 protected:
124 friend class LookupIterator; 135 friend class LookupIterator;
125 136
126 static ElementsAccessor* ForArray(FixedArrayBase* array); 137 static ElementsAccessor* ForArray(FixedArrayBase* array);
127 138
128 virtual uint32_t GetCapacity(JSObject* holder, 139 virtual uint32_t GetCapacity(JSObject* holder,
129 FixedArrayBase* backing_store) = 0; 140 FixedArrayBase* backing_store) = 0;
130 141
131 // Element handlers distinguish between entries and indices when they 142 // Element handlers distinguish between entries and indices when they
132 // manipulate elements. Entries refer to elements in terms of their location 143 // manipulate elements. Entries refer to elements in terms of their location
(...skipping 19 matching lines...) Expand all
152 void CheckArrayAbuse(Handle<JSObject> obj, const char* op, uint32_t index, 163 void CheckArrayAbuse(Handle<JSObject> obj, const char* op, uint32_t index,
153 bool allow_appending = false); 164 bool allow_appending = false);
154 165
155 MUST_USE_RESULT MaybeHandle<Object> ArrayConstructInitializeElements( 166 MUST_USE_RESULT MaybeHandle<Object> ArrayConstructInitializeElements(
156 Handle<JSArray> array, 167 Handle<JSArray> array,
157 Arguments* args); 168 Arguments* args);
158 169
159 } } // namespace v8::internal 170 } } // namespace v8::internal
160 171
161 #endif // V8_ELEMENTS_H_ 172 #endif // V8_ELEMENTS_H_
OLDNEW
« no previous file with comments | « src/builtins.cc ('k') | src/elements.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698