1.1 --- a/src/BytecodeCompiler.cpp Sat Sep 15 17:39:45 2012 -0700
1.2 +++ b/src/BytecodeCompiler.cpp Sat Sep 15 18:25:54 2012 -0700
1.3 @@ -783,10 +783,17 @@
1.4 if (type->isArray()) {
1.5 Local<ArrayMap> map(zone_, ArrayMap::Attach(zone_, type));
1.6 __ note_position(node->pos());
1.7 +
1.8 + Opcode op;
1.9 + if (type->isFixedLength())
1.10 + op = OP_NEWFIXED;
1.11 + else
1.12 + op = OP_NEWEMPTY;
1.13 +
1.14 if (var->scope()->kind() == Scope::GLOBAL)
1.15 - __ newarray(map, Heap::Tenure_Old);
1.16 + __ newarray(op, map, Heap::Tenure_Old);
1.17 else
1.18 - __ newarray(map, Heap::Tenure_Default);
1.19 + __ newarray(op, map, Heap::Tenure_Default);
1.20
1.21 if (node->initialization()) {
1.22 node->initialization()->accept(this);
1.23 @@ -929,9 +936,9 @@
1.24 // Natives cannot escape array references, so we can allocate
1.25 // them on the LIFO stack.
1.26 if (funType->isNative())
1.27 - __ newarray(map, Heap::Tenure_Stack);
1.28 + __ newarray(OP_NEWFIXED, map, Heap::Tenure_Stack);
1.29 else
1.30 - __ newarray(map, Heap::Tenure_Default);
1.31 + __ newarray(OP_NEWFIXED, map, Heap::Tenure_Default);
1.32 __ dup();
1.33 __ object(array);
1.34 __ copyarray();