Skip to content

Commit

Permalink
🦄 refactor: Add labelOverridden
Browse files Browse the repository at this point in the history
  • Loading branch information
caoccao committed Dec 19, 2024
1 parent 997a826 commit eadb0df
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,6 @@ public Swc4jAstBinaryOp getOp() {
return right;
}

public boolean isTopBinExpr() {
return parent == null || !(parent instanceof Ts2JavaAstBinExpr);
}

@Override
public void syncLabels() {
left.syncLabels();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public abstract class Ts2JavaAstBinExprLogical extends Ts2JavaAstBinExpr
implements ITs2JavaBangFlippable {
protected boolean bangFlipped;
protected Label labelFalse;
protected boolean labelOverridden;
protected boolean labelSwitched;
protected Label labelTrue;

Expand All @@ -42,6 +43,7 @@ protected Ts2JavaAstBinExprLogical(
bangFlipped = false;
labelFalse = new Label();
labelTrue = new Label();
labelOverridden = false;
labelSwitched = false;
type = TypeDescription.ForLoadedType.of(boolean.class);
}
Expand Down Expand Up @@ -76,6 +78,10 @@ public boolean isBangFlipped() {
return bangFlipped;
}

public boolean isLabelOverridden() {
return labelOverridden;
}

public boolean isLabelSwitched() {
return labelSwitched;
}
Expand All @@ -94,6 +100,7 @@ protected Size logicalClose(MethodVisitor methodVisitor) {

public Ts2JavaAstBinExprLogical setLabelFalse(Label labelFalse) {
this.labelFalse = labelFalse;
labelOverridden = true;
return this;
}

Expand All @@ -104,6 +111,7 @@ public Ts2JavaAstBinExprLogical setLabelSwitched(boolean labelSwitched) {

public Ts2JavaAstBinExprLogical setLabelTrue(Label labelTrue) {
this.labelTrue = labelTrue;
labelOverridden = true;
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ protected Ts2JavaAstBinExprLogicalCompare(
@Override
public Size apply(MethodVisitor methodVisitor, Implementation.Context context) {
super.apply(methodVisitor, context);
boolean ignoreClose = !isTopBinExpr();
final List<Size> sizes = new ArrayList<>();
sizes.add(left.apply(methodVisitor, context));
TypeDescription upCastType = left.getType();
Expand All @@ -63,7 +62,7 @@ public Size apply(MethodVisitor methodVisitor, Implementation.Context context) {
final Label label = labelSwitched ? labelTrue : labelFalse;
sizes.add(Ts2JavaAstBinaryOp.getLogicalCompareStackManipulation(ast, resolvedOp, upCastType, label)
.apply(methodVisitor, context));
if (!ignoreClose) {
if (!labelOverridden) {
sizes.add(logicalClose(methodVisitor));
}
return aggregateSize(sizes);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ protected Ts2JavaAstBinExprLogicalCondition(
@Override
public Size apply(MethodVisitor methodVisitor, Implementation.Context context) {
super.apply(methodVisitor, context);
boolean ignoreClose = !isTopBinExpr();
boolean ignoreClose = labelOverridden;
final List<Size> sizes = new ArrayList<>();
final Swc4jAstBinaryOp resolvedOp = getResolvedOp();
final boolean isLeftBool = left instanceof Ts2JavaAstBool;
Expand Down Expand Up @@ -143,7 +143,7 @@ public Size apply(MethodVisitor methodVisitor, Implementation.Context context) {
sizes.add(right.apply(methodVisitor, context));
if (!isRightLogical) {
methodVisitor.visitJumpInsn(
isTopBinExpr() ? opcodeCompareFalse : opcodeCompareTrue,
labelOverridden ? opcodeCompareTrue : opcodeCompareFalse,
labelSwitched ? labelTrue : labelFalse);
}
}
Expand Down

0 comments on commit eadb0df

Please sign in to comment.