@Override public void visit(CastNumberInstruction insn) { PrimitiveCastExpr expr = new PrimitiveCastExpr(); expr.setSource(mapOperandType(insn.getSourceType())); expr.setTarget(mapOperandType(insn.getTargetType())); expr.setValue(Expr.var(insn.getValue().getIndex())); assign(expr, insn.getReceiver()); }
@Override public void visit(PrimitiveCastExpr expr) { accept(expr.getValue()); result = new WasmConversion(WasmGeneratorUtil.mapType(expr.getSource()), WasmGeneratorUtil.mapType(expr.getTarget()), true, result); result.setLocation(expr.getLocation()); }
@Override public void visit(PrimitiveCastExpr expr) { pushLocation(expr.getLocation()); try { expr.getValue().acceptVisitor(this); expr.setValue(resultExpr); resultExpr = expr; } finally { popLocation(); } }
@Override public void visit(PrimitiveCastExpr expr) { writer.print("(("); switch (expr.getTarget()) { case INT: writer.print("int32_t"); break; case LONG: writer.print("int64_t"); break; case FLOAT: writer.print("float"); break; case DOUBLE: writer.print("double"); break; } writer.print(") "); expr.getValue().acceptVisitor(this); writer.print(")"); }
@Override public void visit(PrimitiveCastExpr expr) { expr.getValue().acceptVisitor(this); }
@Override protected Expr clone(Map<Expr, Expr> cache) { PrimitiveCastExpr copy = new PrimitiveCastExpr(); copy.value = value.clone(cache); copy.source = source; copy.target = target; return copy; } }
@Override public void visit(PrimitiveCastExpr expr) { pushLocation(expr.getLocation()); try { expr.getValue().acceptVisitor(this); expr.setValue(resultExpr); resultExpr = expr; } finally { popLocation(); } }
private boolean isSideEffectFree(Expr expr) { if (expr == null) { return true; } if (expr instanceof VariableExpr || expr instanceof ConstantExpr) { return true; } if (expr instanceof BinaryExpr) { BinaryExpr binary = (BinaryExpr) expr; return isSideEffectFree(binary.getFirstOperand()) && isSideEffectFree(binary.getSecondOperand()); } if (expr instanceof UnaryExpr) { return isSideEffectFree(((UnaryExpr) expr).getOperand()); } if (expr instanceof InstanceOfExpr) { return isSideEffectFree(((InstanceOfExpr) expr).getExpr()); } if (expr instanceof PrimitiveCastExpr) { return isSideEffectFree(((PrimitiveCastExpr) expr).getValue()); } if (expr instanceof NewExpr) { return true; } return false; }
@Override protected Expr clone(Map<Expr, Expr> cache) { PrimitiveCastExpr copy = new PrimitiveCastExpr(); copy.value = value.clone(cache); copy.source = source; copy.target = target; return copy; } }
PrimitiveCastExpr expr = new PrimitiveCastExpr(); expr.setSource(OperationType.values()[input.readByte()]); expr.setTarget(OperationType.values()[input.readByte()]); expr.setValue(readExpr(input)); return expr;
@Override public void visit(PrimitiveCastExpr expr) { try { if (expr.getLocation() != null) { pushLocation(expr.getLocation()); switch (expr.getSource()) { case INT: if (expr.getTarget() == OperationType.LONG) { writer.append("Long_fromInt("); precedence = Precedence.min(); expr.getValue().acceptVisitor(this); writer.append(')'); } else { expr.getValue().acceptVisitor(this); switch (expr.getTarget()) { case INT: precedence = Precedence.MEMBER_ACCESS; Expr longShifted = extractLongRightShiftedBy32(expr.getValue()); if (longShifted != null) { longShifted.acceptVisitor(this); writer.append(".hi"); } else { expr.getValue().acceptVisitor(this); writer.append(".lo"); writer.append("Long_toNumber("); precedence = Precedence.min(); expr.getValue().acceptVisitor(this);
@Override public void visit(PrimitiveCastExpr expr) { expr.getValue().acceptVisitor(this); }
@Override public void visit(CastNumberInstruction insn) { PrimitiveCastExpr expr = new PrimitiveCastExpr(); expr.setSource(mapOperandType(insn.getSourceType())); expr.setTarget(mapOperandType(insn.getTargetType())); expr.setValue(Expr.var(insn.getValue().getIndex())); assign(expr, insn.getReceiver()); }
@Override public void visit(PrimitiveCastExpr expr) { accept(expr.getValue()); result = new WasmConversion(WasmGeneratorUtil.mapType(expr.getSource()), WasmGeneratorUtil.mapType(expr.getTarget()), true, result); result.setLocation(expr.getLocation()); }
PrimitiveCastExpr expr = new PrimitiveCastExpr(); expr.setSource(OperationType.values()[input.readByte()]); expr.setTarget(OperationType.values()[input.readByte()]); expr.setValue(readExpr(input)); return expr;
@Override public void visit(PrimitiveCastExpr expr) { try { if (expr.getLocation() != null) { pushLocation(expr.getLocation()); switch (expr.getSource()) { case INT: if (expr.getTarget() == OperationType.LONG) { writer.append("Long_fromInt("); precedence = Precedence.min(); expr.getValue().acceptVisitor(this); writer.append(')'); } else { expr.getValue().acceptVisitor(this); switch (expr.getTarget()) { case INT: precedence = Precedence.MEMBER_ACCESS; Expr longShifted = extractLongRightShiftedBy32(expr.getValue()); if (longShifted != null) { longShifted.acceptVisitor(this); writer.append(".hi"); } else { expr.getValue().acceptVisitor(this); writer.append(".lo"); writer.append("Long_toNumber("); precedence = Precedence.min(); expr.getValue().acceptVisitor(this);