diff options
-rw-r--r-- | src/jvm/clojure/lang/BytecodeCompiler.java | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/jvm/clojure/lang/BytecodeCompiler.java b/src/jvm/clojure/lang/BytecodeCompiler.java index 33add518..4931df51 100644 --- a/src/jvm/clojure/lang/BytecodeCompiler.java +++ b/src/jvm/clojure/lang/BytecodeCompiler.java @@ -1009,6 +1009,7 @@ static class FnExpr implements Expr{ for(ISeq s = RT.keys(closes); s != null; s = s.rest(), ++a) { LocalBinding lb = (LocalBinding) s.first(); + ctorgen.loadThis(); ctorgen.visitVarInsn(OBJECT_TYPE.getOpcode(Opcodes.ILOAD), a); ctorgen.putField(fntype, lb.name, OBJECT_TYPE); } @@ -1052,7 +1053,10 @@ static class FnExpr implements Expr{ private void emitLocal(GeneratorAdapter gen, LocalBinding lb){ if(closes.contains(lb)) + { + gen.loadThis(); gen.getField(fntype, lb.name, OBJECT_TYPE); + } else gen.visitVarInsn(OBJECT_TYPE.getOpcode(Opcodes.ILOAD), lb.idx); } |