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

Side by Side Diff: src/objects.h

Issue 649603003: Keyed stores to super with numeric keys. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebased Created 6 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/objects.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_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 1113 matching lines...) Expand 10 before | Expand all | Expand 10 after
1124 Handle<Object> object, Handle<Name> key, Handle<Object> value, 1124 Handle<Object> object, Handle<Name> key, Handle<Object> value,
1125 StrictMode strict_mode, 1125 StrictMode strict_mode,
1126 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED); 1126 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED);
1127 1127
1128 MUST_USE_RESULT static MaybeHandle<Object> SetProperty( 1128 MUST_USE_RESULT static MaybeHandle<Object> SetProperty(
1129 LookupIterator* it, Handle<Object> value, StrictMode strict_mode, 1129 LookupIterator* it, Handle<Object> value, StrictMode strict_mode,
1130 StoreFromKeyed store_mode, 1130 StoreFromKeyed store_mode,
1131 StorePropertyMode data_store_mode = NORMAL_PROPERTY); 1131 StorePropertyMode data_store_mode = NORMAL_PROPERTY);
1132 MUST_USE_RESULT static MaybeHandle<Object> WriteToReadOnlyProperty( 1132 MUST_USE_RESULT static MaybeHandle<Object> WriteToReadOnlyProperty(
1133 LookupIterator* it, Handle<Object> value, StrictMode strict_mode); 1133 LookupIterator* it, Handle<Object> value, StrictMode strict_mode);
1134 MUST_USE_RESULT static MaybeHandle<Object> WriteToReadOnlyElement(
1135 Isolate* isolate, Handle<Object> receiver, uint32_t index,
1136 Handle<Object> value, StrictMode strict_mode);
1134 MUST_USE_RESULT static MaybeHandle<Object> SetDataProperty( 1137 MUST_USE_RESULT static MaybeHandle<Object> SetDataProperty(
1135 LookupIterator* it, Handle<Object> value); 1138 LookupIterator* it, Handle<Object> value);
1136 MUST_USE_RESULT static MaybeHandle<Object> AddDataProperty( 1139 MUST_USE_RESULT static MaybeHandle<Object> AddDataProperty(
1137 LookupIterator* it, Handle<Object> value, PropertyAttributes attributes, 1140 LookupIterator* it, Handle<Object> value, PropertyAttributes attributes,
1138 StrictMode strict_mode, StoreFromKeyed store_mode); 1141 StrictMode strict_mode, StoreFromKeyed store_mode);
1139 MUST_USE_RESULT static inline MaybeHandle<Object> GetPropertyOrElement( 1142 MUST_USE_RESULT static inline MaybeHandle<Object> GetPropertyOrElement(
1140 Handle<Object> object, 1143 Handle<Object> object,
1141 Handle<Name> key); 1144 Handle<Name> key);
1142 MUST_USE_RESULT static inline MaybeHandle<Object> GetProperty( 1145 MUST_USE_RESULT static inline MaybeHandle<Object> GetProperty(
1143 Isolate* isolate, 1146 Isolate* isolate,
(...skipping 25 matching lines...) Expand all
1169 Isolate* isolate, 1172 Isolate* isolate,
1170 Handle<Object> object, 1173 Handle<Object> object,
1171 uint32_t index); 1174 uint32_t index);
1172 1175
1173 MUST_USE_RESULT static MaybeHandle<Object> GetElementWithReceiver( 1176 MUST_USE_RESULT static MaybeHandle<Object> GetElementWithReceiver(
1174 Isolate* isolate, 1177 Isolate* isolate,
1175 Handle<Object> object, 1178 Handle<Object> object,
1176 Handle<Object> receiver, 1179 Handle<Object> receiver,
1177 uint32_t index); 1180 uint32_t index);
1178 1181
1182 MUST_USE_RESULT static MaybeHandle<Object> SetElementWithReceiver(
1183 Isolate* isolate, Handle<Object> object, Handle<Object> receiver,
1184 uint32_t index, Handle<Object> value, StrictMode strict_mode);
1185
1179 static inline Handle<Object> GetPrototypeSkipHiddenPrototypes( 1186 static inline Handle<Object> GetPrototypeSkipHiddenPrototypes(
1180 Isolate* isolate, Handle<Object> receiver); 1187 Isolate* isolate, Handle<Object> receiver);
1181 1188
1182 // Returns the permanent hash code associated with this object. May return 1189 // Returns the permanent hash code associated with this object. May return
1183 // undefined if not yet created. 1190 // undefined if not yet created.
1184 Object* GetHash(); 1191 Object* GetHash();
1185 1192
1186 // Returns the permanent hash code associated with this object depending on 1193 // Returns the permanent hash code associated with this object depending on
1187 // the actual object type. May create and store a hash code if needed and none 1194 // the actual object type. May create and store a hash code if needed and none
1188 // exists. 1195 // exists.
(...skipping 731 matching lines...) Expand 10 before | Expand all | Expand 10 after
1920 bool ShouldConvertToFastDoubleElements(bool* has_smi_only_elements); 1927 bool ShouldConvertToFastDoubleElements(bool* has_smi_only_elements);
1921 1928
1922 // Computes the new capacity when expanding the elements of a JSObject. 1929 // Computes the new capacity when expanding the elements of a JSObject.
1923 static int NewElementsCapacity(int old_capacity) { 1930 static int NewElementsCapacity(int old_capacity) {
1924 // (old_capacity + 50%) + 16 1931 // (old_capacity + 50%) + 16
1925 return old_capacity + (old_capacity >> 1) + 16; 1932 return old_capacity + (old_capacity >> 1) + 16;
1926 } 1933 }
1927 1934
1928 // These methods do not perform access checks! 1935 // These methods do not perform access checks!
1929 MUST_USE_RESULT static MaybeHandle<AccessorPair> GetOwnElementAccessorPair( 1936 MUST_USE_RESULT static MaybeHandle<AccessorPair> GetOwnElementAccessorPair(
1930 Handle<JSObject> object, 1937 Handle<JSObject> object, uint32_t index);
1931 uint32_t index);
1932 1938
1933 MUST_USE_RESULT static MaybeHandle<Object> SetFastElement( 1939 MUST_USE_RESULT static MaybeHandle<Object> SetFastElement(
1934 Handle<JSObject> object, 1940 Handle<JSObject> object,
1935 uint32_t index, 1941 uint32_t index,
1936 Handle<Object> value, 1942 Handle<Object> value,
1937 StrictMode strict_mode, 1943 StrictMode strict_mode,
1938 bool check_prototype); 1944 bool check_prototype);
1939 1945
1940 MUST_USE_RESULT static MaybeHandle<Object> SetOwnElement( 1946 MUST_USE_RESULT static MaybeHandle<Object> SetOwnElement(
1941 Handle<JSObject> object, 1947 Handle<JSObject> object,
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
2246 Handle<JSObject> object, 2252 Handle<JSObject> object,
2247 Handle<Object> receiver, 2253 Handle<Object> receiver,
2248 Handle<Object> structure, 2254 Handle<Object> structure,
2249 uint32_t index, 2255 uint32_t index,
2250 Handle<Object> holder); 2256 Handle<Object> holder);
2251 2257
2252 MUST_USE_RESULT static Maybe<PropertyAttributes> 2258 MUST_USE_RESULT static Maybe<PropertyAttributes>
2253 GetElementAttributeWithInterceptor(Handle<JSObject> object, 2259 GetElementAttributeWithInterceptor(Handle<JSObject> object,
2254 Handle<JSReceiver> receiver, 2260 Handle<JSReceiver> receiver,
2255 uint32_t index, bool continue_search); 2261 uint32_t index, bool continue_search);
2262
2263 // Queries indexed interceptor on an object for property attributes.
2264 //
2265 // We determine property attributes as follows:
2266 // - if interceptor has a query callback, then the property attributes are
2267 // the result of query callback for index.
2268 // - otherwise if interceptor has a getter callback and it returns
2269 // non-empty value on index, then the property attributes is NONE
2270 // (property is present, and it is enumerable, configurable, writable)
2271 // - otherwise there are no property attributes that can be inferred for
2272 // interceptor, and this function returns ABSENT.
2273 MUST_USE_RESULT static Maybe<PropertyAttributes>
2274 GetElementAttributeFromInterceptor(Handle<JSObject> object,
2275 Handle<Object> receiver,
2276 uint32_t index);
2277
2256 MUST_USE_RESULT static Maybe<PropertyAttributes> 2278 MUST_USE_RESULT static Maybe<PropertyAttributes>
2257 GetElementAttributeWithoutInterceptor(Handle<JSObject> object, 2279 GetElementAttributeWithoutInterceptor(Handle<JSObject> object,
2258 Handle<JSReceiver> receiver, 2280 Handle<JSReceiver> receiver,
2259 uint32_t index, 2281 uint32_t index,
2260 bool continue_search); 2282 bool continue_search);
2261 MUST_USE_RESULT static MaybeHandle<Object> SetElementWithCallback( 2283 MUST_USE_RESULT static MaybeHandle<Object> SetElementWithCallback(
2262 Handle<JSObject> object, 2284 Handle<Object> object, Handle<Object> structure, uint32_t index,
2263 Handle<Object> structure, 2285 Handle<Object> value, Handle<JSObject> holder, StrictMode strict_mode);
2264 uint32_t index,
2265 Handle<Object> value,
2266 Handle<JSObject> holder,
2267 StrictMode strict_mode);
2268 MUST_USE_RESULT static MaybeHandle<Object> SetElementWithInterceptor( 2286 MUST_USE_RESULT static MaybeHandle<Object> SetElementWithInterceptor(
2269 Handle<JSObject> object, 2287 Handle<JSObject> object,
2270 uint32_t index, 2288 uint32_t index,
2271 Handle<Object> value, 2289 Handle<Object> value,
2272 PropertyAttributes attributes, 2290 PropertyAttributes attributes,
2273 StrictMode strict_mode, 2291 StrictMode strict_mode,
2274 bool check_prototype, 2292 bool check_prototype,
2275 SetPropertyMode set_mode); 2293 SetPropertyMode set_mode);
2276 MUST_USE_RESULT static MaybeHandle<Object> SetElementWithoutInterceptor( 2294 MUST_USE_RESULT static MaybeHandle<Object> SetElementWithoutInterceptor(
2277 Handle<JSObject> object, 2295 Handle<JSObject> object,
(...skipping 8621 matching lines...) Expand 10 before | Expand all | Expand 10 after
10899 } else { 10917 } else {
10900 value &= ~(1 << bit_position); 10918 value &= ~(1 << bit_position);
10901 } 10919 }
10902 return value; 10920 return value;
10903 } 10921 }
10904 }; 10922 };
10905 10923
10906 } } // namespace v8::internal 10924 } } // namespace v8::internal
10907 10925
10908 #endif // V8_OBJECTS_H_ 10926 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « no previous file | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698