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

Side by Side Diff: src/objects.h

Issue 249973002: *NumberDictionary::Set() handlified. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 8 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 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 4134 matching lines...) Expand 10 before | Expand all | Expand 10 after
4145 static Handle<NameDictionary> AddNameEntry(Handle<NameDictionary> dict, 4145 static Handle<NameDictionary> AddNameEntry(Handle<NameDictionary> dict,
4146 Handle<Name> name, 4146 Handle<Name> name,
4147 Handle<Object> value, 4147 Handle<Object> value,
4148 PropertyDetails details); 4148 PropertyDetails details);
4149 }; 4149 };
4150 4150
4151 4151
4152 class NumberDictionaryShape : public BaseShape<uint32_t> { 4152 class NumberDictionaryShape : public BaseShape<uint32_t> {
4153 public: 4153 public:
4154 static inline bool IsMatch(uint32_t key, Object* other); 4154 static inline bool IsMatch(uint32_t key, Object* other);
4155 // TODO(ishell): This should be eventually replaced with AsHandle().
4155 MUST_USE_RESULT static inline MaybeObject* AsObject(Heap* heap, 4156 MUST_USE_RESULT static inline MaybeObject* AsObject(Heap* heap,
4156 uint32_t key); 4157 uint32_t key);
4158 static inline Handle<Object> AsHandle(Isolate* isolate, uint32_t key);
4157 static const int kEntrySize = 3; 4159 static const int kEntrySize = 3;
4158 static const bool kIsEnumerable = false; 4160 static const bool kIsEnumerable = false;
4159 }; 4161 };
4160 4162
4161 4163
4162 class SeededNumberDictionaryShape : public NumberDictionaryShape { 4164 class SeededNumberDictionaryShape : public NumberDictionaryShape {
4163 public: 4165 public:
4164 static const bool UsesSeed = true; 4166 static const bool UsesSeed = true;
4165 static const int kPrefixSize = 2; 4167 static const int kPrefixSize = 2;
4166 4168
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
4198 Handle<Object> value, 4200 Handle<Object> value,
4199 PropertyDetails details); 4201 PropertyDetails details);
4200 MUST_USE_RESULT MaybeObject* AddNumberEntry(uint32_t key, 4202 MUST_USE_RESULT MaybeObject* AddNumberEntry(uint32_t key,
4201 Object* value, 4203 Object* value,
4202 PropertyDetails details); 4204 PropertyDetails details);
4203 4205
4204 // Set an existing entry or add a new one if needed. 4206 // Set an existing entry or add a new one if needed.
4205 // Return the updated dictionary. 4207 // Return the updated dictionary.
4206 MUST_USE_RESULT static Handle<SeededNumberDictionary> Set( 4208 MUST_USE_RESULT static Handle<SeededNumberDictionary> Set(
4207 Handle<SeededNumberDictionary> dictionary, 4209 Handle<SeededNumberDictionary> dictionary,
4208 uint32_t index, 4210 uint32_t key,
4209 Handle<Object> value, 4211 Handle<Object> value,
4210 PropertyDetails details); 4212 PropertyDetails details);
4211 4213
4212 MUST_USE_RESULT MaybeObject* Set(uint32_t key, 4214 MUST_USE_RESULT MaybeObject* Set(uint32_t key,
4213 Object* value, 4215 Object* value,
4214 PropertyDetails details); 4216 PropertyDetails details);
4215 4217
4216 void UpdateMaxNumberKey(uint32_t key); 4218 void UpdateMaxNumberKey(uint32_t key);
4217 4219
4218 // If slow elements are required we will never go back to fast-case 4220 // If slow elements are required we will never go back to fast-case
(...skipping 22 matching lines...) Expand all
4241 uint32_t> { 4243 uint32_t> {
4242 public: 4244 public:
4243 static UnseededNumberDictionary* cast(Object* obj) { 4245 static UnseededNumberDictionary* cast(Object* obj) {
4244 ASSERT(obj->IsDictionary()); 4246 ASSERT(obj->IsDictionary());
4245 return reinterpret_cast<UnseededNumberDictionary*>(obj); 4247 return reinterpret_cast<UnseededNumberDictionary*>(obj);
4246 } 4248 }
4247 4249
4248 // Type specific at put (default NONE attributes is used when adding). 4250 // Type specific at put (default NONE attributes is used when adding).
4249 MUST_USE_RESULT MaybeObject* AtNumberPut(uint32_t key, Object* value); 4251 MUST_USE_RESULT MaybeObject* AtNumberPut(uint32_t key, Object* value);
4250 MUST_USE_RESULT MaybeObject* AddNumberEntry(uint32_t key, Object* value); 4252 MUST_USE_RESULT MaybeObject* AddNumberEntry(uint32_t key, Object* value);
4253 MUST_USE_RESULT static Handle<UnseededNumberDictionary> AddNumberEntry(
4254 Handle<UnseededNumberDictionary> dictionary,
4255 uint32_t key,
4256 Handle<Object> value);
4251 4257
4252 // Set an existing entry or add a new one if needed. 4258 // Set an existing entry or add a new one if needed.
4253 // Return the updated dictionary. 4259 // Return the updated dictionary.
4254 MUST_USE_RESULT static Handle<UnseededNumberDictionary> Set( 4260 MUST_USE_RESULT static Handle<UnseededNumberDictionary> Set(
4255 Handle<UnseededNumberDictionary> dictionary, 4261 Handle<UnseededNumberDictionary> dictionary,
4256 uint32_t index, 4262 uint32_t key,
4257 Handle<Object> value); 4263 Handle<Object> value);
4258
4259 MUST_USE_RESULT MaybeObject* Set(uint32_t key, Object* value);
4260 }; 4264 };
4261 4265
4262 4266
4263 class ObjectHashTableShape : public BaseShape<Object*> { 4267 class ObjectHashTableShape : public BaseShape<Object*> {
4264 public: 4268 public:
4265 static inline bool IsMatch(Object* key, Object* other); 4269 static inline bool IsMatch(Object* key, Object* other);
4266 static inline uint32_t Hash(Object* key); 4270 static inline uint32_t Hash(Object* key);
4267 static inline uint32_t HashForObject(Object* key, Object* object); 4271 static inline uint32_t HashForObject(Object* key, Object* object);
4268 MUST_USE_RESULT static inline MaybeObject* AsObject(Heap* heap, 4272 MUST_USE_RESULT static inline MaybeObject* AsObject(Heap* heap,
4269 Object* key); 4273 Object* key);
(...skipping 7007 matching lines...) Expand 10 before | Expand all | Expand 10 after
11277 } else { 11281 } else {
11278 value &= ~(1 << bit_position); 11282 value &= ~(1 << bit_position);
11279 } 11283 }
11280 return value; 11284 return value;
11281 } 11285 }
11282 }; 11286 };
11283 11287
11284 } } // namespace v8::internal 11288 } } // namespace v8::internal
11285 11289
11286 #endif // V8_OBJECTS_H_ 11290 #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