(C context, ObjExpr objx, GeneratorAdapter gen)
| 6842 | } |
| 6843 | |
| 6844 | public void emit(C context, ObjExpr objx, GeneratorAdapter gen){ |
| 6845 | for(int i = 0; i < bindingInits.count(); i++) |
| 6846 | { |
| 6847 | BindingInit bi = (BindingInit) bindingInits.nth(i); |
| 6848 | gen.visitInsn(Opcodes.ACONST_NULL); |
| 6849 | gen.visitVarInsn(OBJECT_TYPE.getOpcode(Opcodes.ISTORE), bi.binding.idx); |
| 6850 | } |
| 6851 | |
| 6852 | IPersistentSet lbset = PersistentHashSet.EMPTY; |
| 6853 | |
| 6854 | for(int i = 0; i < bindingInits.count(); i++) |
| 6855 | { |
| 6856 | BindingInit bi = (BindingInit) bindingInits.nth(i); |
| 6857 | lbset = (IPersistentSet) lbset.cons(bi.binding); |
| 6858 | bi.init.emit(C.EXPRESSION, objx, gen); |
| 6859 | gen.visitVarInsn(OBJECT_TYPE.getOpcode(Opcodes.ISTORE), bi.binding.idx); |
| 6860 | } |
| 6861 | |
| 6862 | for(int i = 0; i < bindingInits.count(); i++) |
| 6863 | { |
| 6864 | BindingInit bi = (BindingInit) bindingInits.nth(i); |
| 6865 | ObjExpr fe = (ObjExpr) bi.init; |
| 6866 | gen.visitVarInsn(OBJECT_TYPE.getOpcode(Opcodes.ILOAD), bi.binding.idx); |
| 6867 | fe.emitLetFnInits(gen, objx, lbset); |
| 6868 | } |
| 6869 | |
| 6870 | Label loopLabel = gen.mark(); |
| 6871 | |
| 6872 | body.emit(context, objx, gen); |
| 6873 | |
| 6874 | Label end = gen.mark(); |
| 6875 | // gen.visitLocalVariable("this", "Ljava/lang/Object;", null, loopLabel, end, 0); |
| 6876 | for(ISeq bis = bindingInits.seq(); bis != null; bis = bis.next()) |
| 6877 | { |
| 6878 | BindingInit bi = (BindingInit) bis.first(); |
| 6879 | String lname = bi.binding.name; |
| 6880 | if(lname.endsWith("__auto__")) |
| 6881 | lname += RT.nextID(); |
| 6882 | Class primc = maybePrimitiveType(bi.init); |
| 6883 | if(primc != null) |
| 6884 | gen.visitLocalVariable(lname, Type.getDescriptor(primc), null, loopLabel, end, |
| 6885 | bi.binding.idx); |
| 6886 | else |
| 6887 | gen.visitLocalVariable(lname, "Ljava/lang/Object;", null, loopLabel, end, bi.binding.idx); |
| 6888 | } |
| 6889 | } |
| 6890 | |
| 6891 | public boolean hasJavaClass() { |
| 6892 | return body.hasJavaClass(); |
nothing calls this directly
no test coverage detected