diff -r dc7d3b7a918c -r 9c544823d090 src/BytecodeCompiler.cpp --- a/src/BytecodeCompiler.cpp Sat Aug 04 17:51:43 2012 -0700 +++ b/src/BytecodeCompiler.cpp Sat Aug 04 19:33:06 2012 -0700 @@ -758,12 +758,24 @@ __ note_position(node->pos()); __ arraycopy(); } + } else if (type->isStruct()) { + Local map(zone_, type->newMap()); + if (var->scope()->kind() == Scope::GLOBAL) + __ newstruct(map, Heap::Tenure_Old); + else if (var->needsHeapAllocation()) + __ newstruct(map, Heap::Tenure_Default); + else + __ newstruct(map, Heap::Tenure_Stack); } else { if (node->initialization()) { node->initialization()->accept(this); } else { - if (!node->postDimensions()) + if (type->isInt32OrEnum() || type->isBool()) { __ int_(0); + } else { + assert(type->isFloat()); + __ float_(0); + } } }