diff -r 0c588a96837c -r 0cde1379b29f src/compiler/BytecodeEmitter.cpp --- a/src/compiler/BytecodeEmitter.cpp Mon Nov 19 02:12:13 2012 -0800 +++ b/src/compiler/BytecodeEmitter.cpp Thu Dec 20 00:59:38 2012 -0800 @@ -282,6 +282,22 @@ return true; } +void +BytecodeEmitter::newref(VariableSymbol *var) +{ + recordOops(); + if (var->storage() == VariableSymbol::Local) { + ensure(OP_VARREF_LIFO_LENGTH); + writeOp(OP_VARREF_LIFO); + } else { + assert(var->storage() == VariableSymbol::Arg); + ensure(OP_ARGREF_LIFO_LENGTH); + writeOp(OP_ARGREF_LIFO); + } + writeUint32(var->slot()); + markOop(1); +} + Code * BytecodeEmitter::finish() {