• kaznacheev@chromium.org's avatar
    Dynamically determine optimal instance size. · 06c86740
    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
Name
Last commit
Last update
..
arm Loading commit data...
ia32 Loading commit data...
mips Loading commit data...
third_party Loading commit data...
x64 Loading commit data...
SConscript Loading commit data...
accessors.cc Loading commit data...
accessors.h Loading commit data...
allocation.cc Loading commit data...
allocation.h Loading commit data...
api.cc Loading commit data...
api.h Loading commit data...
apinatives.js Loading commit data...
apiutils.h Loading commit data...
arguments.h Loading commit data...
array.js Loading commit data...
assembler.cc Loading commit data...
assembler.h Loading commit data...
ast-inl.h Loading commit data...
ast.cc Loading commit data...
ast.h Loading commit data...
bootstrapper.cc Loading commit data...
bootstrapper.h Loading commit data...
builtins.cc Loading commit data...
builtins.h Loading commit data...
bytecodes-irregexp.h Loading commit data...
cached-powers.h Loading commit data...
char-predicates-inl.h Loading commit data...
char-predicates.h Loading commit data...
checks.cc Loading commit data...
checks.h Loading commit data...
circular-queue-inl.h Loading commit data...
circular-queue.cc Loading commit data...
circular-queue.h Loading commit data...
code-stubs.cc Loading commit data...
code-stubs.h Loading commit data...
code.h Loading commit data...
codegen-inl.h Loading commit data...
codegen.cc Loading commit data...
codegen.h Loading commit data...
compilation-cache.cc Loading commit data...
compilation-cache.h Loading commit data...
compiler.cc Loading commit data...
compiler.h Loading commit data...
contexts.cc Loading commit data...
contexts.h Loading commit data...
conversions-inl.h Loading commit data...
conversions.cc Loading commit data...
conversions.h Loading commit data...
counters.cc Loading commit data...
counters.h Loading commit data...
cpu-profiler-inl.h Loading commit data...
cpu-profiler.cc Loading commit data...
cpu-profiler.h Loading commit data...
cpu.h Loading commit data...
d8-debug.cc Loading commit data...
d8-debug.h Loading commit data...
d8-posix.cc Loading commit data...
d8-readline.cc Loading commit data...
d8-windows.cc Loading commit data...
d8.cc Loading commit data...
d8.h Loading commit data...
d8.js Loading commit data...
data-flow.cc Loading commit data...
data-flow.h Loading commit data...
date.js Loading commit data...
dateparser-inl.h Loading commit data...
dateparser.cc Loading commit data...
dateparser.h Loading commit data...
debug-agent.cc Loading commit data...
debug-agent.h Loading commit data...
debug-debugger.js Loading commit data...
debug.cc Loading commit data...
debug.h Loading commit data...
disasm.h Loading commit data...
disassembler.cc Loading commit data...
disassembler.h Loading commit data...
diy-fp.cc Loading commit data...
diy-fp.h Loading commit data...
double.h Loading commit data...
dtoa-config.c Loading commit data...
dtoa.cc Loading commit data...
dtoa.h Loading commit data...
execution.cc Loading commit data...
execution.h Loading commit data...
factory.cc Loading commit data...
factory.h Loading commit data...
fast-dtoa.cc Loading commit data...
fast-dtoa.h Loading commit data...
fixed-dtoa.cc Loading commit data...
fixed-dtoa.h Loading commit data...
flag-definitions.h Loading commit data...
flags.cc Loading commit data...
flags.h Loading commit data...
frame-element.cc Loading commit data...
frame-element.h Loading commit data...
frames-inl.h Loading commit data...
frames.cc Loading commit data...
frames.h Loading commit data...
full-codegen.cc Loading commit data...
full-codegen.h Loading commit data...
func-name-inferrer.cc Loading commit data...
func-name-inferrer.h Loading commit data...
global-handles.cc Loading commit data...
global-handles.h Loading commit data...
globals.h Loading commit data...
handles-inl.h Loading commit data...
handles.cc Loading commit data...
handles.h Loading commit data...
hashmap.cc Loading commit data...
hashmap.h Loading commit data...
heap-inl.h Loading commit data...
heap-profiler.cc Loading commit data...
heap-profiler.h Loading commit data...
heap.cc Loading commit data...
heap.h Loading commit data...
ic-inl.h Loading commit data...
ic.cc Loading commit data...
ic.h Loading commit data...
interpreter-irregexp.cc Loading commit data...
interpreter-irregexp.h Loading commit data...
json.js Loading commit data...
jsregexp.cc Loading commit data...
jsregexp.h Loading commit data...
jump-target-heavy-inl.h Loading commit data...
jump-target-heavy.cc Loading commit data...
jump-target-heavy.h Loading commit data...
jump-target-inl.h Loading commit data...
jump-target-light-inl.h Loading commit data...
jump-target-light.cc Loading commit data...
jump-target-light.h Loading commit data...
jump-target.cc Loading commit data...
jump-target.h Loading commit data...
list-inl.h Loading commit data...
list.h Loading commit data...
liveedit-debugger.js Loading commit data...
liveedit.cc Loading commit data...
liveedit.h Loading commit data...
log-inl.h Loading commit data...
log-utils.cc Loading commit data...
log-utils.h Loading commit data...
log.cc Loading commit data...
log.h Loading commit data...
macro-assembler.h Loading commit data...
macros.py Loading commit data...
mark-compact.cc Loading commit data...
mark-compact.h Loading commit data...
math.js Loading commit data...
memory.h Loading commit data...
messages.cc Loading commit data...
messages.h Loading commit data...
messages.js Loading commit data...
mirror-debugger.js Loading commit data...
mksnapshot.cc Loading commit data...
natives.h Loading commit data...
objects-debug.cc Loading commit data...
objects-inl.h Loading commit data...
objects-visiting.cc Loading commit data...
objects-visiting.h Loading commit data...
objects.cc Loading commit data...
objects.h Loading commit data...
oprofile-agent.cc Loading commit data...
oprofile-agent.h Loading commit data...
parser.cc Loading commit data...
parser.h Loading commit data...
platform-freebsd.cc Loading commit data...
platform-linux.cc Loading commit data...
platform-macos.cc Loading commit data...
platform-nullos.cc Loading commit data...
platform-openbsd.cc Loading commit data...
platform-posix.cc Loading commit data...
platform-solaris.cc Loading commit data...
platform-win32.cc Loading commit data...
platform.h Loading commit data...
powers-ten.h Loading commit data...
prettyprinter.cc Loading commit data...
prettyprinter.h Loading commit data...
profile-generator-inl.h Loading commit data...
profile-generator.cc Loading commit data...
profile-generator.h Loading commit data...
property.cc Loading commit data...
property.h Loading commit data...
regexp-macro-assembler-irregexp-inl.h Loading commit data...
regexp-macro-assembler-irregexp.cc Loading commit data...
regexp-macro-assembler-irregexp.h Loading commit data...
regexp-macro-assembler-tracer.cc Loading commit data...
regexp-macro-assembler-tracer.h Loading commit data...
regexp-macro-assembler.cc Loading commit data...
regexp-macro-assembler.h Loading commit data...
regexp-stack.cc Loading commit data...
regexp-stack.h Loading commit data...
regexp.js Loading commit data...
register-allocator-inl.h Loading commit data...
register-allocator.cc Loading commit data...
register-allocator.h Loading commit data...
rewriter.cc Loading commit data...
rewriter.h Loading commit data...
runtime.cc Loading commit data...
runtime.h Loading commit data...
runtime.js Loading commit data...
scanner.cc Loading commit data...
scanner.h Loading commit data...
scopeinfo.cc Loading commit data...
scopeinfo.h Loading commit data...
scopes.cc Loading commit data...
scopes.h Loading commit data...
serialize.cc Loading commit data...
serialize.h Loading commit data...
shell.h Loading commit data...
simulator.h Loading commit data...
smart-pointer.h Loading commit data...
snapshot-common.cc Loading commit data...
snapshot-empty.cc Loading commit data...
snapshot.h Loading commit data...
spaces-inl.h Loading commit data...
spaces.cc Loading commit data...
spaces.h Loading commit data...
splay-tree-inl.h Loading commit data...
splay-tree.h Loading commit data...
string-search.h Loading commit data...
string-stream.cc Loading commit data...
string-stream.h Loading commit data...
string.js Loading commit data...
stub-cache.cc Loading commit data...
stub-cache.h Loading commit data...
token.cc Loading commit data...
token.h Loading commit data...
top.cc Loading commit data...
top.h Loading commit data...
type-info.cc Loading commit data...
type-info.h Loading commit data...
unbound-queue-inl.h Loading commit data...
unbound-queue.h Loading commit data...
unicode-inl.h Loading commit data...
unicode.cc Loading commit data...
unicode.h Loading commit data...
uri.js Loading commit data...
utils.cc Loading commit data...
utils.h Loading commit data...
v8-counters.cc Loading commit data...
v8-counters.h Loading commit data...
v8.cc Loading commit data...
v8.h Loading commit data...
v8dll-main.cc Loading commit data...
v8natives.js Loading commit data...
v8threads.cc Loading commit data...
v8threads.h Loading commit data...
variables.cc Loading commit data...
variables.h Loading commit data...
version.cc Loading commit data...
version.h Loading commit data...
virtual-frame-heavy-inl.h Loading commit data...
virtual-frame-heavy.cc Loading commit data...
virtual-frame-inl.h Loading commit data...
virtual-frame-light-inl.h Loading commit data...
virtual-frame-light.cc Loading commit data...
virtual-frame.cc Loading commit data...
virtual-frame.h Loading commit data...
vm-state-inl.h Loading commit data...
vm-state.cc Loading commit data...
vm-state.h Loading commit data...
zone-inl.h Loading commit data...
zone.cc Loading commit data...
zone.h Loading commit data...