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

Method emitLetFnInits

src/jvm/clojure/lang/Compiler.java:5578–5603  ·  view source on GitHub ↗
(GeneratorAdapter gen, ObjExpr objx, IPersistentSet letFnLocals)

Source from the content-addressed store, hash-verified

5576 }
5577
5578 public void emitLetFnInits(GeneratorAdapter gen, ObjExpr objx, IPersistentSet letFnLocals){
5579 //objx arg is enclosing objx, not this
5580 gen.checkCast(objtype);
5581
5582 for(ISeq s = RT.keys(closes); s != null; s = s.next())
5583 {
5584 LocalBinding lb = (LocalBinding) s.first();
5585 if(letFnLocals.contains(lb))
5586 {
5587 Class primc = lb.getPrimitiveType();
5588 gen.dup();
5589 if(primc != null)
5590 {
5591 objx.emitUnboxedLocal(gen, lb);
5592 gen.putField(objtype, lb.name, Type.getType(primc));
5593 }
5594 else
5595 {
5596 objx.emitLocal(gen, lb, false);
5597 gen.putField(objtype, lb.name, OBJECT_TYPE);
5598 }
5599 }
5600 }
5601 gen.pop();
5602
5603 }
5604
5605 public void emit(C context, ObjExpr objx, GeneratorAdapter gen){
5606 //emitting a Fn means constructing an instance, feeding closed-overs from enclosing scope, if any

Callers 1

emitMethod · 0.95

Calls 12

keysMethod · 0.95
nextMethod · 0.95
firstMethod · 0.95
getPrimitiveTypeMethod · 0.95
getTypeMethod · 0.95
checkCastMethod · 0.80
dupMethod · 0.80
emitUnboxedLocalMethod · 0.80
putFieldMethod · 0.80
emitLocalMethod · 0.80
containsMethod · 0.65
popMethod · 0.65

Tested by

no test coverage detected