diff -r eee18bf13c9b -r dd04fce774cd src/BytecodeCompiler.cpp --- a/src/BytecodeCompiler.cpp Sun Sep 16 21:59:18 2012 -0700 +++ b/src/BytecodeCompiler.cpp Sun Sep 16 21:59:26 2012 -0700 @@ -973,7 +973,18 @@ } else if (type->isFixedLength()) { __ newarray(OP_NEWFIXED, map, tenure); } else { - __ newarray(OP_NEWEMPTY, map, tenure); + if (node->postDimensions()) { + for (size_t i = 0; i < node->postDimensions()->length(); i++) { + Expression *expr = node->postDimensions()->at(i); + if (expr) + expr->accept(this); + else + __ int_(0); + } + __ newarray(OP_NEWSIZED, map, tenure); + } else { + __ newarray(OP_NEWEMPTY, map, tenure); + } } } else if (type->isStruct()) { Local map(zone_, type->newMap());