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.FloatConstantValueTag(((Float) field.fieldInstance().constantValue()).floatValue())); } else if (field.fieldInstance().constantValue() instanceof String) { sootField.addTag(new soot.tagkit.StringConstantValueTag((String) field.fieldInstance().constantValue())); } else { throw new RuntimeException("Expecting static final field to have a constant value! For field: " + field + " of type: "
CONSTANT_String_info scval = (CONSTANT_String_info) cval; CONSTANT_Utf8_info ucval = (CONSTANT_Utf8_info) coffiClass.constant_pool[scval.string_index]; tag = new StringConstantValueTag(ucval.convert()); break;
tag = new IntegerConstantValueTag(((ShortEncodedValue) ev).getValue()); } else if (ev instanceof StringEncodedValue) { tag = new StringConstantValueTag(((StringEncodedValue) 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 StringConstantValueTag(ucval.convert()); break;
tag = new StringConstantValueTag(ucval.convert()); break;