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

Side by Side Diff: src/factory.cc

Issue 240023004: Handlify HashTable and Dictionary growing. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: CR feedback 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.h » ('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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 #include "factory.h" 5 #include "factory.h"
6 6
7 #include "macro-assembler.h" 7 #include "macro-assembler.h"
8 #include "isolate-inl.h" 8 #include "isolate-inl.h"
9 #include "v8conversions.h" 9 #include "v8conversions.h"
10 10
(...skipping 2214 matching lines...) Expand 10 before | Expand all | Expand 10 after
2225 2225
2226 2226
2227 Handle<MapCache> Factory::NewMapCache(int at_least_space_for) { 2227 Handle<MapCache> Factory::NewMapCache(int at_least_space_for) {
2228 CALL_HEAP_FUNCTION(isolate(), 2228 CALL_HEAP_FUNCTION(isolate(),
2229 MapCache::Allocate(isolate()->heap(), 2229 MapCache::Allocate(isolate()->heap(),
2230 at_least_space_for), 2230 at_least_space_for),
2231 MapCache); 2231 MapCache);
2232 } 2232 }
2233 2233
2234 2234
2235 MUST_USE_RESULT static MaybeObject* UpdateMapCacheWith(Context* context,
2236 FixedArray* keys,
2237 Map* map) {
2238 Object* result;
2239 { MaybeObject* maybe_result =
2240 MapCache::cast(context->map_cache())->Put(keys, map);
2241 if (!maybe_result->ToObject(&result)) return maybe_result;
2242 }
2243 context->set_map_cache(MapCache::cast(result));
2244 return result;
2245 }
2246
2247
2248 Handle<MapCache> Factory::AddToMapCache(Handle<Context> context, 2235 Handle<MapCache> Factory::AddToMapCache(Handle<Context> context,
2249 Handle<FixedArray> keys, 2236 Handle<FixedArray> keys,
2250 Handle<Map> map) { 2237 Handle<Map> map) {
2251 CALL_HEAP_FUNCTION(isolate(), 2238 Handle<MapCache> map_cache = handle(MapCache::cast(context->map_cache()));
2252 UpdateMapCacheWith(*context, *keys, *map), MapCache); 2239 Handle<MapCache> result = MapCache::Put(map_cache, keys, map);
2240 context->set_map_cache(*result);
2241 return result;
2253 } 2242 }
2254 2243
2255 2244
2256 Handle<Map> Factory::ObjectLiteralMapFromCache(Handle<Context> context, 2245 Handle<Map> Factory::ObjectLiteralMapFromCache(Handle<Context> context,
2257 Handle<FixedArray> keys) { 2246 Handle<FixedArray> keys) {
2258 if (context->map_cache()->IsUndefined()) { 2247 if (context->map_cache()->IsUndefined()) {
2259 // Allocate the new map cache for the native context. 2248 // Allocate the new map cache for the native context.
2260 Handle<MapCache> new_cache = NewMapCache(24); 2249 Handle<MapCache> new_cache = NewMapCache(24);
2261 context->set_map_cache(*new_cache); 2250 context->set_map_cache(*new_cache);
2262 } 2251 }
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
2330 if (String::Equals(name, infinity_string())) return infinity_value(); 2319 if (String::Equals(name, infinity_string())) return infinity_value();
2331 return Handle<Object>::null(); 2320 return Handle<Object>::null();
2332 } 2321 }
2333 2322
2334 2323
2335 Handle<Object> Factory::ToBoolean(bool value) { 2324 Handle<Object> Factory::ToBoolean(bool value) {
2336 return value ? true_value() : false_value(); 2325 return value ? true_value() : false_value();
2337 } 2326 }
2338 2327
2339 } } // namespace v8::internal 2328 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | src/objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698