Package dk.brics.string.intermediate

Examples of dk.brics.string.intermediate.StringInit


            FieldResolution resolution = resolver.resolveField(reference);
            if (resolution == null)
                continue;
           
            Variable result = factory.createVariable(VariableType.STRING);
            factory.addStatement(new StringInit(result, resolution.getAutomaton()));
            return result;
        }
        return null;
    }
View Full Code Here


  }
 
  private void assignNull(Variable to) {
    switch (to.getType()) {
    case STRING:
      addStatement(new StringInit(to, Automatons.getNull()));
      break;
     
    case STRINGBUFFER:
      // make a string buffer with the empty language of possible strings
      Variable temp = makeVariable(VariableType.STRING);
View Full Code Here

    }
  }
 
  private Variable makeAnyStringVariable() {
    Variable v = makeVariable(VariableType.STRING);
    addStatement(new StringInit(v, Basic.makeAnyString()));
    return v;
  }
View Full Code Here

    addStatement(new StringInit(v, Basic.makeAnyString()));
    return v;
  }
  private Variable makeConstantStringVariable(String value) {
    Variable v = makeVariable(VariableType.STRING);
    addStatement(new StringInit(v, Automaton.makeString(value)));
    return v;
  }
View Full Code Here

    addStatement(new StringInit(v, Automaton.makeString(value)));
    return v;
  }
    private Variable makeConstantCharVariable(char value) {
        Variable v = makeVariable(VariableType.STRING);
        addStatement(new StringInit(v, Automaton.makeChar(value)));
        return v;
    }
View Full Code Here

        addStatement(new StringInit(v, Automaton.makeChar(value)));
        return v;
    }
    private Variable makeAutomatonVariable(Automaton automaton) {
        Variable v = makeVariable(VariableType.STRING);
        addStatement(new StringInit(v, automaton));
        return v;
    }
View Full Code Here

   * Assigns an unknown value to the specified variable.
   */
  private void assignAnyValue(Variable v) {
    switch (v.getType()) {
    case STRING:
      addStatement(new StringInit(v, Basic.makeAnyString()));
      break;
    case STRINGBUFFER:
      addStatement(new StringBufferInit(v, makeAnyStringVariable()));
      break;
    case ARRAY:
View Full Code Here

    Variable result;
    if (resolution.getReturnedAutomaton() != null) {
      Automaton auto = resolution.getReturnedAutomaton();
     
      Variable temp = factory.createVariable(VariableType.STRING);
      factory.addStatement(new StringInit(temp, auto));
     
      switch (resultType) {
      case ARRAY:
        result = factory.createVariable(resultType);
        factory.addStatement(new ArrayNew(result));
View Full Code Here

    void makeBasicToStringMethod(Type prim, String classname, Automaton a) {
        Method m = new Method(application, classname + ".toString",
                new Variable[0]);
        SootClass c = Scene.v().getSootClass(classname);
        Variable var = application.createVariable(VariableType.STRING);
        StringStatement ss = new StringInit(var, a);
        m.addStatement(ss);
        m.getEntry().addSucc(ss);
        Return ret = new Return(var);
        m.addStatement(ret);
        ss.addSucc(ret);

        methods.add(m);
        tostring_targets.put(c, m);
        tostring_methods.put(classname, m);
        tostring_hotspots.put(c, ss);
View Full Code Here

        ControlFlowBuilder cfg = new ControlFlowBuilder(wrapper);
        cfg.moveToStatement(wrapper.getEntry());
       
        // create a variable holding any string
        Variable anyVar = application.createVariable(VariableType.STRING);
        Statement assignAny = new StringInit(anyVar, Basic.makeAnyString());
        cfg.addStatement(assignAny);

        // create a variable holding the null string
        Variable nullVar = application.createVariable(VariableType.STRING);
        Statement assignNull = new StringInit(nullVar, Automatons.getNull());
        cfg.addStatement(assignNull);
       
        // initialize externally visible field variables to anything
        // and set string fields to "null"
        for (SootClass ac : getApplicationClasses()) {
            for (SootField field : ac.getFields()) {
                // String fields should be assigned to "null" because they are
                // exempt from the
                // null-pointer analysis we use for other objects
                if (field.getType().equals(RefType.v("java.lang.String"))) {
                    FieldAssignment assignment = new FieldAssignment(
                            variableManager.getField(field), nullVar);
                    cfg.addStatement(assignment);
                }

                // corrupt externally visible fields
                if (ext.isExternallyVisibleField(field)) {
                    VariableType type = fromSootType(field
                            .getType());

                    if (type == VariableType.NONE)
                        continue;

                    Variable fieldInit;

                    switch (type) {
                    case OBJECT:
                    case STRING:
                    case PRIMITIVE:
                        fieldInit = anyVar;
                        break;

                    case STRINGBUFFER: {
                        fieldInit = application.createVariable(VariableType.STRINGBUFFER);
                        Statement s = new StringBufferCorrupt(fieldInit);
                        cfg.addStatement(s);
                        break;
                    }

                    case ARRAY: {
                        fieldInit = application.createVariable(VariableType.ARRAY);
                        Statement s = new ArrayCorrupt(fieldInit);
                        cfg.addStatement(s);
                        break;
                    }
                    default:
                        throw new RuntimeException("Unknown field type " + type);
                    }// switch

                    FieldAssignment assignment = new FieldAssignment(variableManager.getField(field), fieldInit);
                    cfg.addStatement(assignment);
                }
            }
        }
       
        // split control here, and call a random externally visible method
        cfg.startBranch();
       
        // call externally visible methods
        for (SootClass ac : getApplicationClasses()) {
            for (SootMethod sm : ac.getMethods()) {
                if (ext.isExternallyVisibleMethod(sm)) {
                    Method m = sms_m.get(sm.getSignature());
                    Variable[] params = m.getEntry().params;
                    Variable[] args = new Variable[params.length];
                    for (int i = 0; i < params.length; i++) {
                        Variable arg = application.createVariable(params[i].getType());
                        args[i] = arg;
                        Statement s;
                        switch (arg.getType()) {
                        case STRING:
                            s = new StringInit(arg, Basic.makeAnyString());
                            break;
                        case STRINGBUFFER:
                            s = new StringBufferCorrupt(arg);
                            break;
                        case ARRAY:
View Full Code Here

TOP

Related Classes of dk.brics.string.intermediate.StringInit

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.