Status: New
Owner: ----
New issue 1859 by [email protected]: v8 is full of static initializers
http://code.google.com/p/v8/issues/detail?id=1859
On Mac, we're down to 47 files with static initializers (not counting the
ones created by protobuf). 23% of these – 11 filles – are caused by v8!
Mac List:
assembler.o
code-stubs-ia32.o
frames.o
isolate.o
lithium-allocator.o
log.o
platform-macos.o
platform-posix.o
runtime-profiler.o
v8.o
logging.o
The linux output is a bit more detailed (the linux compiler is also a bit
more stupid and needs static initializers for more stuff), it's v8-related
output is:
assembler.cc (initializer offset 0x15705a0 size 0x24)
v8::internal::DoubleConstant::the_hole_nan
v8::internal::DoubleConstant::canonical_non_hole_nan
v8::internal::OS::nan_value()
v8::internal::kHoleNanInt64
builtins.cc (initializer offset 0x1351980 size 0x5)
v8::internal::Builtins::InitBuiltinFunctionTable()
code_stubs_x64.cc (initializer offset 0x14f35d0 size 0x187)
v8::internal::kAheadOfTime
v8::internal::kAheadOfTime+0x10
v8::internal::kAheadOfTime+0x14
v8::internal::kAheadOfTime+0x18
v8::internal::kAheadOfTime+0x20
v8::internal::kAheadOfTime+0x24
v8::internal::kAheadOfTime+0x28
v8::internal::kAheadOfTime+0x30
v8::internal::kAheadOfTime+0x34
v8::internal::kAheadOfTime+0x38
v8::internal::kAheadOfTime+0x4
v8::internal::kAheadOfTime+0x40
v8::internal::kAheadOfTime+0x44
v8::internal::kAheadOfTime+0x48
v8::internal::kAheadOfTime+0x50
v8::internal::kAheadOfTime+0x54
v8::internal::kAheadOfTime+0x58
v8::internal::kAheadOfTime+0x60
v8::internal::kAheadOfTime+0x64
v8::internal::kAheadOfTime+0x68
v8::internal::kAheadOfTime+0x70
v8::internal::kAheadOfTime+0x74
v8::internal::kAheadOfTime+0x78
v8::internal::kAheadOfTime+0x8
v8::internal::kAheadOfTime+0x80
v8::internal::kAheadOfTime+0x84
v8::internal::kAheadOfTime+0x88
v8::internal::kAheadOfTime+0x90
v8::internal::kAheadOfTime+0x94
v8::internal::kAheadOfTime+0x98
v8::internal::kAheadOfTime+0xa0
v8::internal::kAheadOfTime+0xa4
v8::internal::kAheadOfTime+0xa8
v8::internal::kAheadOfTime+0xb0
v8::internal::kAheadOfTime+0xb4
v8::internal::kAheadOfTime+0xb8
v8::internal::kAheadOfTime+0xc0
v8::internal::kAheadOfTime+0xc4
v8::internal::kAheadOfTime+0xc8
debug_agent.cc (initializer offset 0x13655f0 size 0xb)
v8::internal::DebuggerAgentUtil::kContentLengthSize
disasm_x64.cc (initializer offset 0x15114c0 size 0x41)
v8::internal::kSmiConstantRegister+0x4
disasm::InstructionTable::Init()
disasm::instruction_table
v8::internal::EmbeddedContainer<v8::internal::LOperand*,
0>::operator[](int)::t
flags.cc (initializer offset 0x137a220 size 0x2b)
v8::internal::FLAG_js_arguments
v8::internal::FLAG_js_arguments+0x8
v8::internal::FLAGDEFAULT_js_arguments
v8::internal::FLAGDEFAULT_js_arguments+0x8
frames.cc (initializer offset 0x137b240 size 0x31)
v8::internal::kCallerSavedCodeData
v8::internal::kCallerSavedCodeData+0x4
hashmap.cc (initializer offset 0x138e280 size 0x24)
v8::internal::HashMap::DefaultAllocator
vtable for v8::internal::Allocator+0x10
operator new(unsigned long)
heap.cc (initializer offset 0x138f160 size 0x15)
v8::internal::OS::CreateMutex()
v8::internal::gc_initializer_mutex
isolate.cc (initializer offset 0x13ee2c0 size 0x38)
guard variable for
v8::internal::EnsureDefaultIsolateAllocated()::static_initializer
v8::internal::OS::CreateMutex()
v8::internal::Isolate::process_wide_mutex_
v8::internal::Isolate::EnsureDefaultIsolate()
v8::internal::static_initializer
v8::internal::EnsureDefaultIsolateAllocated()::static_initializer
lithium_allocator.cc (initializer offset 0x13f3120 size 0x240)
v8::internal::LStackSlot::cache
v8::internal::LDoubleRegister::cache
v8::internal::LDoubleRegister::cache+0x10
v8::internal::LDoubleRegister::cache+0x14
v8::internal::LDoubleRegister::cache+0x18
v8::internal::LDoubleRegister::cache+0x1c
v8::internal::LDoubleRegister::cache+0x20
v8::internal::LDoubleRegister::cache+0x24
v8::internal::LDoubleRegister::cache+0x28
v8::internal::LDoubleRegister::cache+0x2c
v8::internal::LDoubleRegister::cache+0x30
v8::internal::LDoubleRegister::cache+0x34
v8::internal::LDoubleRegister::cache+0x38
v8::internal::LDoubleRegister::cache+0x3c
v8::internal::LDoubleRegister::cache+0x4
v8::internal::LDoubleRegister::cache+0x8
v8::internal::LDoubleRegister::cache+0xc
v8::internal::LConstantOperand::cache
v8::internal::LDoubleStackSlot::cache
v8::internal::LRegister::cache
v8::internal::LRegister::cache+0x10
v8::internal::LRegister::cache+0x14
v8::internal::LRegister::cache+0x18
v8::internal::LRegister::cache+0x1c
v8::internal::LRegister::cache+0x20
v8::internal::LRegister::cache+0x24
v8::internal::LRegister::cache+0x28
v8::internal::LRegister::cache+0x2c
v8::internal::LRegister::cache+0x30
v8::internal::LRegister::cache+0x34
v8::internal::LRegister::cache+0x38
v8::internal::LRegister::cache+0x3c
v8::internal::LRegister::cache+0x4
v8::internal::LRegister::cache+0x8
v8::internal::LRegister::cache+0xc
v8::internal::LRegister_cache_initialized
v8::internal::LStackSlot_cache_initialized
v8::internal::LDoubleRegister_cache_initialized
v8::internal::LConstantOperand_cache_initialized
v8::internal::LDoubleStackSlot_cache_initialized
log.cc (initializer offset 0x1400c10 size 0x15)
v8::internal::SamplerRegistry::mutex_
v8::internal::OS::CreateMutex()
macro_assembler_x64.cc (initializer offset 0x154cfc0 size 0x6f)
v8::internal::saved_regs
v8::internal::saved_regs+0x10
v8::internal::saved_regs+0x14
v8::internal::saved_regs+0x18
v8::internal::saved_regs+0x1c
v8::internal::saved_regs+0x20
v8::internal::saved_regs+0x24
v8::internal::saved_regs+0x28
v8::internal::saved_regs+0x4
v8::internal::saved_regs+0x8
v8::internal::saved_regs+0xc
runtime_profiler.cc (initializer offset 0x14b6660 size 0x17)
v8::internal::RuntimeProfiler::semaphore_
v8::internal::OS::CreateSemaphore(int)
scopes.cc (initializer offset 0x14bf810 size 0x24)
v8::internal::LocalsMapAllocator
vtable for v8::internal::ZoneAllocator+0x10
operator new(unsigned long)
v8.cc (initializer offset 0x14dfd10 size 0x21)
v8::internal::OS::CreateMutex()
v8::internal::entropy_mutex
v8::internal::init_once_mutex
Please fix :-) Static initialization delays startup by up to 500ms on some
platforms.
In chrome land, we had success with base/lazy_instance.h (make them leaky,
so that they don't require exit time shutdown).
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev