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

Side by Side Diff: src/factory.cc

Issue 1226203011: Remove unused byte from Map::instance_sizes field. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Ported to all architectures. Created 5 years, 5 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/factory.h ('k') | src/heap/heap.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 "src/factory.h" 5 #include "src/factory.h"
6 6
7 #include "src/allocation-site-scopes.h" 7 #include "src/allocation-site-scopes.h"
8 #include "src/base/bits.h" 8 #include "src/base/bits.h"
9 #include "src/bootstrapper.h" 9 #include "src/bootstrapper.h"
10 #include "src/conversions.h" 10 #include "src/conversions.h"
(...skipping 1578 matching lines...) Expand 10 before | Expand all | Expand 10 after
1589 1589
1590 // Make sure result is a global object with properties in dictionary. 1590 // Make sure result is a global object with properties in dictionary.
1591 DCHECK(global->IsGlobalObject() && !global->HasFastProperties()); 1591 DCHECK(global->IsGlobalObject() && !global->HasFastProperties());
1592 return global; 1592 return global;
1593 } 1593 }
1594 1594
1595 1595
1596 Handle<JSObject> Factory::NewJSObjectFromMap( 1596 Handle<JSObject> Factory::NewJSObjectFromMap(
1597 Handle<Map> map, 1597 Handle<Map> map,
1598 PretenureFlag pretenure, 1598 PretenureFlag pretenure,
1599 bool alloc_props,
1600 Handle<AllocationSite> allocation_site) { 1599 Handle<AllocationSite> allocation_site) {
1601 CALL_HEAP_FUNCTION( 1600 CALL_HEAP_FUNCTION(
1602 isolate(), 1601 isolate(),
1603 isolate()->heap()->AllocateJSObjectFromMap( 1602 isolate()->heap()->AllocateJSObjectFromMap(
1604 *map, 1603 *map,
1605 pretenure, 1604 pretenure,
1606 alloc_props,
1607 allocation_site.is_null() ? NULL : *allocation_site), 1605 allocation_site.is_null() ? NULL : *allocation_site),
1608 JSObject); 1606 JSObject);
1609 } 1607 }
1610 1608
1611 1609
1612 Handle<JSArray> Factory::NewJSArray(ElementsKind elements_kind, 1610 Handle<JSArray> Factory::NewJSArray(ElementsKind elements_kind,
1613 Strength strength, 1611 Strength strength,
1614 PretenureFlag pretenure) { 1612 PretenureFlag pretenure) {
1615 Map* map = isolate()->get_initial_js_array_map(elements_kind, strength); 1613 Map* map = isolate()->get_initial_js_array_map(elements_kind, strength);
1616 if (map == nullptr) { 1614 if (map == nullptr) {
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
1995 DCHECK(type == JS_OBJECT_TYPE || type == JS_FUNCTION_TYPE); 1993 DCHECK(type == JS_OBJECT_TYPE || type == JS_FUNCTION_TYPE);
1996 1994
1997 Handle<Map> proxy_map(proxy->map()); 1995 Handle<Map> proxy_map(proxy->map());
1998 Handle<Map> map = Map::FixProxy(proxy_map, type, size); 1996 Handle<Map> map = Map::FixProxy(proxy_map, type, size);
1999 1997
2000 // Check that the receiver has at least the size of the fresh object. 1998 // Check that the receiver has at least the size of the fresh object.
2001 int size_difference = proxy_map->instance_size() - map->instance_size(); 1999 int size_difference = proxy_map->instance_size() - map->instance_size();
2002 DCHECK(size_difference >= 0); 2000 DCHECK(size_difference >= 0);
2003 2001
2004 // Allocate the backing storage for the properties. 2002 // Allocate the backing storage for the properties.
2005 int prop_size = map->InitialPropertiesLength(); 2003 Handle<FixedArray> properties = empty_fixed_array();
2006 Handle<FixedArray> properties = NewFixedArray(prop_size, TENURED);
2007 2004
2008 Heap* heap = isolate()->heap(); 2005 Heap* heap = isolate()->heap();
2009 MaybeHandle<SharedFunctionInfo> shared; 2006 MaybeHandle<SharedFunctionInfo> shared;
2010 if (type == JS_FUNCTION_TYPE) { 2007 if (type == JS_FUNCTION_TYPE) {
2011 OneByteStringKey key(STATIC_CHAR_VECTOR("<freezing call trap>"), 2008 OneByteStringKey key(STATIC_CHAR_VECTOR("<freezing call trap>"),
2012 heap->HashSeed()); 2009 heap->HashSeed());
2013 Handle<String> name = InternalizeStringWithKey(&key); 2010 Handle<String> name = InternalizeStringWithKey(&key);
2014 shared = NewSharedFunctionInfo(name, MaybeHandle<Code>()); 2011 shared = NewSharedFunctionInfo(name, MaybeHandle<Code>());
2015 } 2012 }
2016 2013
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2049 } 2046 }
2050 } 2047 }
2051 2048
2052 2049
2053 Handle<JSGlobalProxy> Factory::NewUninitializedJSGlobalProxy() { 2050 Handle<JSGlobalProxy> Factory::NewUninitializedJSGlobalProxy() {
2054 // Create an empty shell of a JSGlobalProxy that needs to be reinitialized 2051 // Create an empty shell of a JSGlobalProxy that needs to be reinitialized
2055 // via ReinitializeJSGlobalProxy later. 2052 // via ReinitializeJSGlobalProxy later.
2056 Handle<Map> map = NewMap(JS_GLOBAL_PROXY_TYPE, JSGlobalProxy::kSize); 2053 Handle<Map> map = NewMap(JS_GLOBAL_PROXY_TYPE, JSGlobalProxy::kSize);
2057 // Maintain invariant expected from any JSGlobalProxy. 2054 // Maintain invariant expected from any JSGlobalProxy.
2058 map->set_is_access_check_needed(true); 2055 map->set_is_access_check_needed(true);
2059 CALL_HEAP_FUNCTION(isolate(), isolate()->heap()->AllocateJSObjectFromMap( 2056 CALL_HEAP_FUNCTION(
2060 *map, NOT_TENURED, false), 2057 isolate(), isolate()->heap()->AllocateJSObjectFromMap(*map, NOT_TENURED),
2061 JSGlobalProxy); 2058 JSGlobalProxy);
2062 } 2059 }
2063 2060
2064 2061
2065 void Factory::ReinitializeJSGlobalProxy(Handle<JSGlobalProxy> object, 2062 void Factory::ReinitializeJSGlobalProxy(Handle<JSGlobalProxy> object,
2066 Handle<JSFunction> constructor) { 2063 Handle<JSFunction> constructor) {
2067 DCHECK(constructor->has_initial_map()); 2064 DCHECK(constructor->has_initial_map());
2068 Handle<Map> map(constructor->initial_map(), isolate()); 2065 Handle<Map> map(constructor->initial_map(), isolate());
2069 2066
2070 // The proxy's hash should be retained across reinitialization. 2067 // The proxy's hash should be retained across reinitialization.
2071 Handle<Object> hash(object->hash(), isolate()); 2068 Handle<Object> hash(object->hash(), isolate());
2072 2069
2073 // Check that the already allocated object has the same size and type as 2070 // Check that the already allocated object has the same size and type as
2074 // objects allocated using the constructor. 2071 // objects allocated using the constructor.
2075 DCHECK(map->instance_size() == object->map()->instance_size()); 2072 DCHECK(map->instance_size() == object->map()->instance_size());
2076 DCHECK(map->instance_type() == object->map()->instance_type()); 2073 DCHECK(map->instance_type() == object->map()->instance_type());
2077 2074
2078 // Allocate the backing storage for the properties. 2075 // Allocate the backing storage for the properties.
2079 int prop_size = map->InitialPropertiesLength(); 2076 Handle<FixedArray> properties = empty_fixed_array();
2080 Handle<FixedArray> properties = NewFixedArray(prop_size, TENURED);
2081 2077
2082 // In order to keep heap in consistent state there must be no allocations 2078 // In order to keep heap in consistent state there must be no allocations
2083 // before object re-initialization is finished. 2079 // before object re-initialization is finished.
2084 DisallowHeapAllocation no_allocation; 2080 DisallowHeapAllocation no_allocation;
2085 2081
2086 // Reset the map for the object. 2082 // Reset the map for the object.
2087 object->synchronized_set_map(*map); 2083 object->synchronized_set_map(*map);
2088 2084
2089 Heap* heap = isolate()->heap(); 2085 Heap* heap = isolate()->heap();
2090 // Reinitialize the object from the constructor map. 2086 // Reinitialize the object from the constructor map.
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
2431 } 2427 }
2432 2428
2433 2429
2434 Handle<Object> Factory::ToBoolean(bool value) { 2430 Handle<Object> Factory::ToBoolean(bool value) {
2435 return value ? true_value() : false_value(); 2431 return value ? true_value() : false_value();
2436 } 2432 }
2437 2433
2438 2434
2439 } // namespace internal 2435 } // namespace internal
2440 } // namespace v8 2436 } // namespace v8
OLDNEW
« no previous file with comments | « src/factory.h ('k') | src/heap/heap.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698