diff -r bbb498ccb4ac -r 26e3035cdffc src/compiler/BytecodeEmitter.h --- a/src/compiler/BytecodeEmitter.h Sat Dec 22 23:18:57 2012 -0800 +++ b/src/compiler/BytecodeEmitter.h Mon Dec 24 02:49:20 2012 -0800 @@ -188,9 +188,10 @@ maxStackDepth_ = oopMap_.length(); } void writeObject(Object *obj) { + assert(obj); + writeUint32(objects_.length()); - ScopedRoot root(obj); - if (!objects_.append(root)) + if (!objects_.append(obj)) oom_ = true; } @@ -528,11 +529,17 @@ } } void object(Handle obj) { + assert(obj); + ensure(OP_OBJECT_LENGTH); writeOp(OP_OBJECT); writeObject(obj); markOop(1); } + void duparray() { + singleByteOp(OP_DUPARRAY); + markOop(1); + } void copyarray() { singleByteOp(OP_COPYARRAY); markOop(1);