private ConstantValueTag createConstantTagFromValue(Constant rightOp) { if (rightOp instanceof DoubleConstant) { return new DoubleConstantValueTag(((DoubleConstant) rightOp).value); } else if (rightOp instanceof FloatConstant) { return new FloatConstantValueTag(((FloatConstant) rightOp).value); } else if (rightOp instanceof IntConstant) { return new IntegerConstantValueTag(((IntConstant) rightOp).value); } else if (rightOp instanceof LongConstant) { return new LongConstantValueTag(((LongConstant) rightOp).value); } else if (rightOp instanceof StringConstant) { return new StringConstantValueTag(((StringConstant) rightOp).value); } else { return null; } }
@Override public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { soot.Type type = AsmUtil.toJimpleType(desc); addDep(type); SootField field = Scene.v().makeSootField(name, type, access); Tag tag; if (value instanceof Integer) { tag = new IntegerConstantValueTag((Integer) value); } else if (value instanceof Float) { tag = new FloatConstantValueTag((Float) value); } else if (value instanceof Long) { tag = new LongConstantValueTag((Long) value); } else if (value instanceof Double) { tag = new DoubleConstantValueTag((Double) value); } else if (value instanceof String) { tag = new StringConstantValueTag(value.toString()); } else { tag = null; } if (tag != null) { field.addTag(tag); } if (signature != null) { field.addTag(new SignatureTag(signature)); } field = klass.getOrAddField(field); return new FieldBuilder(field, this); }
sootField.addTag(new soot.tagkit.IntegerConstantValueTag(b ? 1 : 0)); } else if (field.fieldInstance().constantValue() instanceof Long) { sootField.addTag(new soot.tagkit.LongConstantValueTag(((Long) field.fieldInstance().constantValue()).longValue())); } else if (field.fieldInstance().constantValue() instanceof Double) {
case cp_info.CONSTANT_Long: { CONSTANT_Long_info lcval = (CONSTANT_Long_info) cval; tag = new LongConstantValueTag((lcval.high << 32) + lcval.low); break;
tag = new IntegerConstantValueTag(((IntEncodedValue) ev).getValue()); } else if (ev instanceof LongEncodedValue) { tag = new LongConstantValueTag(((LongEncodedValue) ev).getValue()); } else if (ev instanceof ShortEncodedValue) { tag = new IntegerConstantValueTag(((ShortEncodedValue) ev).getValue());
/** * @ast method * @aspect EmitJimple * @declaredat /Users/eric/Documents/workspaces/clara-soot/JastAddExtensions/JimpleBackend/EmitJimple.jrag:329 */ public void jimplify1phase2() { String name = name(); soot.Type type = type().getSootType(); int modifiers = sootTypeModifiers(); if (!hostType().getSootClassDecl().declaresFieldByName(name)) { SootField f = Scene.v().makeSootField(name, type, modifiers); hostType().getSootClassDecl().addField(f); if (isStatic() && isFinal() && isConstant() && (type().isPrimitive() || type().isString())) { if (type().isString()) f.addTag(new soot.tagkit.StringConstantValueTag(constant().stringValue())); else if (type().isLong()) f.addTag(new soot.tagkit.LongConstantValueTag(constant().longValue())); else if (type().isDouble()) f.addTag(new soot.tagkit.DoubleConstantValueTag(constant().doubleValue())); else if (type().isFloat()) f.addTag(new soot.tagkit.FloatConstantValueTag(constant().floatValue())); else if (type().isIntegralType()) f.addTag(new soot.tagkit.IntegerConstantValueTag(constant().intValue())); } sootField = f; } else { sootField = hostType().getSootClassDecl().getFieldByName(name); } addAttributes(); }
tag = new LongConstantValueTag((lcval.high << 32) + lcval.low); break;
tag = new LongConstantValueTag((lcval.high << 32) + lcval.low); break;