-
kaznacheev@chromium.org authored
The number of inobject properties used to be derived from the number of this property assignments in the constructor (and increased by 2 to allow for properties added later). This very often leads to wasted inobject slots. This patch reclaims some of the unused inobject space by the following method: - for each constructor function the first several objects are allocated using the initial ("generous) instance size estimation (this is called 'tracking phase'). - during the tracking phase map transitions are tracked and actual property counts are collected. - at the end of the tracking phase instance sizes in the maps are decreased if necessary (starting with the function's initial map and traversing the transition tree). - all further allocation use more realistic instance size estimation. Shrinking generously allocated objects without costly heap traversal is made possible by initializing their inobject properties with one_pointer_filler_map (instead of undefined). The initial slack for the generous allocation is increased from 2 to 6 which really helps some tests. Review URL: http://codereview.chromium.org/3329019 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5510 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
06c86740