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

Method emitThenForInts

src/jvm/clojure/lang/Compiler.java:9529–9563  ·  view source on GitHub ↗
(ObjExpr objx, GeneratorAdapter gen, Type exprType, Expr test, Expr then, Label defaultLabel, boolean emitUnboxed)

Source from the content-addressed store, hash-verified

9527 }
9528
9529 private void emitThenForInts(ObjExpr objx, GeneratorAdapter gen, Type exprType, Expr test, Expr then, Label defaultLabel, boolean emitUnboxed){
9530 if (exprType == null)
9531 {
9532 expr.emit(C.EXPRESSION, objx, gen);
9533 test.emit(C.EXPRESSION, objx, gen);
9534 gen.invokeStatic(UTIL_TYPE, equivMethod);
9535 gen.ifZCmp(GeneratorAdapter.EQ, defaultLabel);
9536 emitExpr(objx, gen, then, emitUnboxed);
9537 }
9538 else if (exprType == Type.LONG_TYPE)
9539 {
9540 ((NumberExpr)test).emitUnboxed(C.EXPRESSION, objx, gen);
9541 expr.emitUnboxed(C.EXPRESSION, objx, gen);
9542 gen.ifCmp(Type.LONG_TYPE, GeneratorAdapter.NE, defaultLabel);
9543 emitExpr(objx, gen, then, emitUnboxed);
9544 }
9545 else if (exprType == Type.INT_TYPE
9546 || exprType == Type.SHORT_TYPE
9547 || exprType == Type.BYTE_TYPE)
9548 {
9549 if (isShiftMasked())
9550 {
9551 ((NumberExpr)test).emitUnboxed(C.EXPRESSION, objx, gen);
9552 expr.emitUnboxed(C.EXPRESSION, objx, gen);
9553 gen.cast(exprType, Type.LONG_TYPE);
9554 gen.ifCmp(Type.LONG_TYPE, GeneratorAdapter.NE, defaultLabel);
9555 }
9556 // else direct match
9557 emitExpr(objx, gen, then, emitUnboxed);
9558 }
9559 else
9560 {
9561 gen.goTo(defaultLabel);
9562 }
9563 }
9564
9565 private void emitExprForHashes(ObjExpr objx, GeneratorAdapter gen){
9566 expr.emit(C.EXPRESSION, objx, gen);

Callers 1

doEmitMethod · 0.95

Calls 9

emitExprMethod · 0.95
isShiftMaskedMethod · 0.95
ifZCmpMethod · 0.80
ifCmpMethod · 0.80
castMethod · 0.80
goToMethod · 0.80
emitMethod · 0.65
emitUnboxedMethod · 0.65
invokeStaticMethod · 0.45

Tested by

no test coverage detected