diff -r 387d76b1e981 -r 10936f3a2ba3 src/BytecodeEmitter.h --- a/src/BytecodeEmitter.h Sat Sep 15 17:39:45 2012 -0700 +++ b/src/BytecodeEmitter.h Sat Sep 15 18:25:54 2012 -0700 @@ -436,10 +436,14 @@ void cvt_i2f() { singleByteOp(OP_CVT_I2F); } - void newarray(Handle map, Heap::Tenure tenure) { + void newarray(Opcode op, Handle map, Heap::Tenure tenure) { + assert(op == OP_NEWFIXED || + op == OP_NEWEMPTY || + op == OP_NEWSIZED); + recordOops(); - ensure(OP_NEWARRAY_LENGTH); - writeOp(OP_NEWARRAY); + ensure(OpcodeInfo[op].length); + writeOp(op); writeUint8(tenure); writeObject(map); markOop(1);