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

Method emitAssign

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

Source from the content-addressed store, hash-verified

1521 }
1522
1523 public void emitAssign(C context, ObjExpr objx, GeneratorAdapter gen,
1524 Expr val){
1525 if(targetClass != null && field != null)
1526 {
1527 target.emit(C.EXPRESSION, objx, gen);
1528 gen.checkCast(getType(targetClass));
1529 val.emit(C.EXPRESSION, objx, gen);
1530 gen.visitLineNumber(line, gen.mark());
1531 gen.dupX1();
1532 HostExpr.emitUnboxArg(objx, gen, field.getType());
1533 gen.putField(getType(targetClass), fieldName, Type.getType(field.getType()));
1534 }
1535 else
1536 {
1537 target.emit(C.EXPRESSION, objx, gen);
1538 gen.push(fieldName);
1539 val.emit(C.EXPRESSION, objx, gen);
1540 gen.visitLineNumber(line, gen.mark());
1541 gen.invokeStatic(REFLECTOR_TYPE, setInstanceFieldMethod);
1542 }
1543 if(context == C.STATEMENT)
1544 gen.pop();
1545 }
1546}
1547
1548static class StaticFieldExpr extends FieldExpr implements AssignableExpr{

Callers

nothing calls this directly

Calls 12

emitUnboxArgMethod · 0.95
getTypeMethod · 0.95
checkCastMethod · 0.80
markMethod · 0.80
dupX1Method · 0.80
putFieldMethod · 0.80
emitMethod · 0.65
popMethod · 0.65
getTypeMethod · 0.45
visitLineNumberMethod · 0.45
pushMethod · 0.45
invokeStaticMethod · 0.45

Tested by

no test coverage detected