src/compiler/BytecodeEmitter.cpp
changeset 222 0cde1379b29f
parent 220 5df4a112967d
child 230 fb3cd08bc7fb
     1.1 --- a/src/compiler/BytecodeEmitter.cpp	Mon Nov 19 02:12:13 2012 -0800
     1.2 +++ b/src/compiler/BytecodeEmitter.cpp	Thu Dec 20 00:59:38 2012 -0800
     1.3 @@ -282,6 +282,22 @@
     1.4      return true;
     1.5  }
     1.6  
     1.7 +void
     1.8 +BytecodeEmitter::newref(VariableSymbol *var)
     1.9 +{
    1.10 +    recordOops();
    1.11 +    if (var->storage() == VariableSymbol::Local) {
    1.12 +        ensure(OP_VARREF_LIFO_LENGTH);
    1.13 +        writeOp(OP_VARREF_LIFO);
    1.14 +    } else {
    1.15 +        assert(var->storage() == VariableSymbol::Arg);
    1.16 +        ensure(OP_ARGREF_LIFO_LENGTH);
    1.17 +        writeOp(OP_ARGREF_LIFO);
    1.18 +    }
    1.19 +    writeUint32(var->slot());
    1.20 +    markOop(1);
    1.21 +}
    1.22 +
    1.23  Code *
    1.24  BytecodeEmitter::finish()
    1.25  {