MCPcopy Index your code
hub / github.com/clojure/clojure / emit

Method emit

src/jvm/clojure/lang/Compiler.java:6844–6889  ·  view source on GitHub ↗
(C context, ObjExpr objx, GeneratorAdapter gen)

Source from the content-addressed store, hash-verified

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();

Callers

nothing calls this directly

Calls 15

emitLetFnInitsMethod · 0.95
nextMethod · 0.95
firstMethod · 0.95
nextIDMethod · 0.95
getDescriptorMethod · 0.95
getOpcodeMethod · 0.80
markMethod · 0.80
maybePrimitiveTypeMethod · 0.80
countMethod · 0.65
nthMethod · 0.65
consMethod · 0.65
emitMethod · 0.65

Tested by

no test coverage detected