Skip to content

Commit

Permalink
GROOVY-11415: Tweak bytecode for identity
Browse files Browse the repository at this point in the history
  • Loading branch information
daniellansun committed Aug 24, 2024
1 parent f46103d commit 7f5f7d9
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -370,14 +370,24 @@ private void evaluateIdentity(BinaryExpression expression, boolean identical) {
TypeChooser typeChooser = controller.getTypeChooser();

Expression lhs = expression.getLeftExpression();
lhs.visit(acg);
ClassNode leftType = typeChooser.resolveType(lhs, controller.getClassNode());
if (ClassHelper.isPrimitiveType(leftType)) operandStack.box();

Expression rhs = expression.getRightExpression();
rhs.visit(acg);
ClassNode rightType = typeChooser.resolveType(rhs, controller.getClassNode());
if (ClassHelper.isPrimitiveType(rightType)) operandStack.box();

boolean leftPrimitive = ClassHelper.isPrimitiveType(leftType);
boolean rightPrimitive = ClassHelper.isPrimitiveType(rightType);
if (leftPrimitive && rightPrimitive) {
BinaryExpressionMultiTypeDispatcher helper = new BinaryExpressionMultiTypeDispatcher(controller);
boolean done = helper.doPrimitiveCompare(leftType, rightType, expression);
if (done) return;
}

lhs.visit(acg);
if (leftPrimitive) operandStack.box();

rhs.visit(acg);
if (rightPrimitive) operandStack.box();

Label trueCase = operandStack.jump(identical ? IF_ACMPEQ : IF_ACMPNE);
ConstantExpression.PRIM_FALSE.visit(acg);
Expand Down
2 changes: 2 additions & 0 deletions src/test-resources/core/IdenticalOp_01x.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ def c() {
assert true === true
assert false === false
assert 0 === 0
assert 100000 === 100000
assert 0 !== null
assert null !== 0

Expand Down Expand Up @@ -75,6 +76,7 @@ def c_cs() {
assert true === true
assert false === false
assert 0 === 0
assert 100000 === 100000
assert 0 !== null
assert null !== 0

Expand Down

0 comments on commit 7f5f7d9

Please sign in to comment.